数分あれば SpringMVC フレームワークの理論的知識をすぐに理解できます。

1. Spring MVCの理解

MVC とは、実際には Model View Controller の略称で、プレゼンテーションとインタラクションを分離するパターン フレームワークです。モデル、ビュー、コントローラーに分かれています。

(1) モデル モデル: プログラムの主要部分。主にビジネス データとビジネス ロジックが含まれます。モデル層では、ユーザーが公開するサービスも関係し、ビジネス モデル内のデータはさまざまなビジネス ニーズに応じて更新されます。

(2) ビュー ビュー: プログラムがユーザーに提示する部分は、ユーザーとプログラム間の対話のエントリ ポイントです。ユーザーはビューを通じて必要なビジネス データを入力し、インターフェイスのイベント インタラクションを通じて、対応する入力パラメータを処理のためにバックグラウンド マネージャーに送信します。

(3) コントローラーコントローラー: ユーザーが入力したデータを処理し、ビジネス モデルの一部を更新するために使用されます。コントローラーは、ユーザーがインターフェースを操作するときに渡されるデータを受け取り、サービス呼び出しを実行し、データ ビジネス ロジックに従ってビジネス モデルのデータとステータスを更新します。

2. SpringMVCの実行処理

(1) ユーザーはクライアントまたはブラウザを通じてリクエストを送信します。

(2) DispatcherServlet はプロセッサ マッパー HandlerMapping を呼び出し、リクエスト情報に従って対応する Handler を解決します。

(3) 実際には、解析されたハンドラーはコントローラーコントローラーです

(4) プロセッサ アダプタ HandlerAdapter は、Handler に従って実際のプロセッサを見つけてリクエストを処理し、対応するビジネス ロジックを実行します。

(5) プロセッサが処理を完了すると、ModelAndView が返されます。Model は返されたデータであり、View は論理ビューです。

(6) ビュー リゾルバー ViewResolver は、View 論理ビューを物理ビューに解決します。

(7) DispatcherServlet は返された Model に従って View に渡します。

(8) Viewを要求者に返す

知らせ:

(1) DispatcherServlet はフロント コントローラです。これは内部のコア コンポーネントであり、SpringMVC のエントリ関数、インターフェイス リクエスト、および対応する結果です。フロントエンド コントローラーは中央コントローラーに似ており、その存在によりさまざまなコンポーネント間の結合が軽減されます。コントローラーへのリクエストの後、内部のコントローラーは他のコンポーネントを呼び出してユーザーリクエストを処理する責任を負い、プロセス制御全体の中心でもあります。

(2) HandlerMapping はプロセッサ マッパーです。ユーザーの要求に従ってハンドラーを検索します。

(3) HandlerAdapte はアダプタプロセッサです。特定のルールに従ってハンドラを実行します。

(4) ViewResolver はビュー リゾルバーです。返された論理ビューを物理ビューに解決するには、物理​​パスを見つけて、最終的にビューをユーザーにレンダリングします。

(5) ハンドラーはプロセッサーです

(6) ビューはビューです

3. SpringMVCのフォワーディングとリダイレクトの設定

(1) Forward: 戻り値の前に forward を追加します。

(2) リダイレクト: 戻り値の前にリダイレクトを追加します。

4. SpringMVCでよく使われるアノテーションとは何ですか

(1) @ReuqestMapping: クラスまたはメソッドに配置できます。メソッドに配置された場合は、メソッドのリクエスト パスです。クラスに配置された場合は、このクラスの下のすべてのメソッドが先行する必要があります親パスによって。

(2) @RequestBody: リクエスト時にjsonをパラメータとしてメソッドに渡してオブジェクトに変換することができます。

次のコード スニペットのように:

getUserAuth メソッドにアクセスする場合、パスはプレフィックス /system/getUserAuth になります。/system 内の /system が親パス、/getUserAuth と /captcha が各メソッドのアクセスパスですが、クラスに @RequestMapping が定義されているため、メソッドアクセスごとに親パスを追加する必要があります。

@Controller 
@RequestMapping("/system") 
public class LoginController { 

    @Autowired 
    private SysUserService sysUserService; 

    @Autowired
    プライベート SysCaptchaService sysCaptchaService; 

    @RequestMapping("/getUserAuth") 
    public LoginVo getUserAuth(@RequestParam("username") String username) throws Exception { 
        return sysUserService.getUserAuth(username); 
    } 

    /** 
     * 验证码
     */ 
    @RequestMapping("/captcha") 
    public void captcha(HttpServletResponse response, String uuid)throws IOException { 
        response.setHeader("Cache-Control", "no-store, no-cache") ; 
        response.setContentType("image/jpeg");
        BufferedImage 画像 = sysCaptchaService.getCaptcha(uuid); 
        ServletOutputStream out = 応答.getOutputStream(); 
        ImageIO.write(image, "jpg", out); 
        IOUtils.closeQuietly(out); 
    } 


}

(3) @ResponseBody: コントロール層メソッドの戻りオブジェクトをフロントエンドクライアントへのjsonレスポンスに変換します。

5. SpringMVC は統合例外を処理します

方法 1:

例外処理クラスをカスタマイズして HandlerExceptionResolver インターフェイスを実装し、内部に例外処理メソッドを実装して、このクラスを管理のために Spring コンテナに渡します。

方法 2:

@ControllerAdvice テーブル名をグローバル例外ハンドリングクラスとしてクラスに追加し、メソッドに @ExceptionHandler アノテーションを追加し、このアノテーションにはハンドリング可能な型を指定できる value 属性値が存在します。

おすすめ

転載: blog.csdn.net/lf21qp/article/details/131457063