SpringMVC実行原理、明確で理解しやすい

転載:元のリンク:https//blog.csdn.net/qq_43297152/article/details/106100687

SpringMVCによって実行される特定のプロセスは何ですか?公式文書に行くと、英語で頭皮がしびれます。翻訳をクリックすると、春という言葉が春に翻訳されると、大したことは良くないことがわかります。この記事では、最も簡単な用語。SpringMVCプロセスを見てください。

 

目次

 

基本的な理解

SpringMVCフレームワークは、プロセスを実行するためのコンポーネントメソッドに基づいています。SpringMVCにはさまざまなコンポーネントがあり、すべて独自の機能を備えています。工場の組立ラインで靴を作るのと同じように、一部は靴底で作られ、一部は靴ひもで作られ、それぞれが独自の役割を果たします。

5つのコンポーネント

SpringMVCのコンポーネントは何ですか:
1、DispatcherServlet:フロントコントローラー
2、HandlerMapping:プロセッサーマッパー
3、HandlAdapter:プロセッサーアダプター
4、ハンドラー:プロセッサー
5、ビューリゾルバー:ビューリゾルバー

非常に多くのデバイスがあるため、見るのは本当に頭痛の種です。慌てる必要はありません。以下でゆっくり説明します。

各コンポーネントの役割

1、DispatcherServlet

機能:
クライアントからの要求を受け入れるため、コマンドセンターです。これは、
他のコンポーネントを呼び出してユーザーの要求を処理するリピーターに相当します。

土語:上司と同じように、彼はこの部門に飛行機を製造させ、その部門に車を製造させます。

2、ハンドラー

機能:
特定のユーザー要求を処理するために開発で作成されるのは、特定のビジネスコントローラーです。

例:ハンドラープロセッサは、実際にはコントローラーレイヤーで作成するメソッドです。たとえば、次の図はハンドラープロセッサです。ここに画像の説明を挿入

3、HandlerMapping

機能:
要求されたURLに従って、対応するハンドラプロセッサを検索します。ハンドラープロセッサは多数あるため、ハンドラープロセッサのマッピングパスが要求されたURLに対応している場合、それは私たちが探しているハンドラーであることを意味します。

SpringMVCは、構成ファイル、実装インターフェース、注釈などのさまざまなマッピング方法を介して実装できるさまざまなマッパーを提供します。最も一般的に使用されるのは注釈です。

例:
リクエストのURLがhttp:// localhost:8085 / stu / findAllの場合、
彼は/ stu / findAllに従って対応するハンドラーを検索します。以下に示すハンドラプロセッサもあります。
ここに画像の説明を挿入

4、HandlerAdapter

役割:
さまざまなハンドラーがあるため、アダプターが必要です。HandlerAdapterは、Handleの実行時に、パラメーターバインディング、コンバーター、どのビューリゾルバーを呼び出す必要があるかなどを調整する役割を果たします。

Vernacular:彼は、AppleデータケーブルとAndroidデータケーブルの両方を備えた共有パワーバンクのようなものです。Appleの電話を充電するときは、間違いなくAppleケーブルを選択し、Androidの電話を充電するときは、Androidケーブルを選択します。

5、ViewResolver

役割:
View Resolverは、処理結果からViewビューを生成する役割を果たします。ViewResolverは、論理ビュー名を物理ビュー名(特定のページアドレス)に解決して、Viewビューオブジェクトを生成します。

具体的な説明:
1。ハンドラー(プロセッサー)で返されるString、View、またはModelAndViewは、最終的にModelAndViewオブジェクトに変換されます。ViewResolver(ビューリゾルバー)は、このModelAndViewオブジェクトを受け取ります。

2、ViewResolver(ビューリゾルバー)は受信したビュー(ビュー名)をInternalResourceViewオブジェクトに解析し、InternalResourceViewは受け入れられたモデルを対応するリクエストドメインに保存し、RequestDispatcherを介してクライアントのターゲットURLにリクエストを転送します。

(ModelAndViewとは何ですか。これはクラスです。返すビュー名とモデルを設定できます。モデルはデータをカプセル化できます。)

ModelAndView modelAndView = new ModelAndView();
        //设置视图名称
        modelAndView.setViewName();
        //设置你要封装的数据
        modelAndView.addObject();
  • 1
  • 2
  • 3
  • 4
  • 5

以下は、私がのModelAndViewクラスを使用していないということです、直接モデルを書き、文字列を返しますが、ハンドラ(プロセッサ)のModelAndViewオブジェクトに変換し、他のコンポーネントにそれを返します。
ここに画像の説明を挿入
ビューリゾルバビューリゾルバの設定を:
ここに画像の説明を挿入
に従ってハンドラー内のビュー名、およびViewResolverビューリゾルバーによって構成されたサフィックスとパッケージ名は、転送するターゲットURL(http:// localhost:8085 / list.jsp)を形成します。

下の画像を見ると、転送中であるため、URLは変更されませんが、ページはlist.jspページになっています。
ここに画像の説明を挿入
ここに画像の説明を挿入

全体的なプロセス

最初の写真では、これはSpringMVCによって実行されるプロセスです。
ここに画像の説明を挿入

1. DispatcherServlet(フロントコントローラー)がリクエストを受け入れます。

2. DispatcherServlet(フロントコントローラー)はHandlerMapping(プロセッサーマッパー)を呼び出し、リクエストのURLに従って対応するハンドラー(プロセッサー)を見つけます。

3. HandlerMapping(プロセッサマッパー)は、見つかったハンドラー(プロセッサ)をDispatcherServlet(フロントエンドプロセッサ)に返します。

4. DispatcherServlet(フロントコントローラー)はHandlAdapter(プロセッサーアダプター)を呼び出して、ハンドラー(プロセッサー)を実行させます。

5. HandlAdapter(プロセッサアダプタ)は、Handler(プロセッサ)を実行します。

6、ハンドラー(プロセッサー)はModelAndViewをHandlAdapter(プロセッサーアダプター)に返します。

7. HandlAdapter(プロセッサアダプタ)は、取得したModelAndViewをDispatcherServlet(フロントエンドプロセッサ)に返します。

8. DispatcherServlet(フロントコントローラー)はViewResolver(ビューリゾルバー)を呼び出して、ModelAndViewの論理ビュー名を解決します。つまり、ModelAndViewのビュー名を解決します。

9.ビューリゾルバー(ビューリゾルバー)は、特定のビューをDispatcherServlet(フロントエンドプロセッサー)に返します。

10. DispatcherServlet(フロントエンドプロセッサ)はビューをレンダリングします。つまり、ModelAndViewのモデル(モデルデータ)をビューに入力します。

11. DispatcherServlet(フロントエンドプロセッサ)はユーザーに応答します。


エラーや異常がある場合は、ご指摘ください。もちろん、質問がある場合や理解できない場合は、以下のコメントで質問を提起することができます。それがあなたを助けるならば、私に親指を上げてください。

おすすめ

転載: blog.csdn.net/qq_30764991/article/details/109676789