Spring MVCプロジェクト開始後の実行手順(模式図付き)

不言
リリース: 2018-09-19 14:23:36
オリジナル
4233 人が閲覧しました

この記事の内容は Spring MVC プロジェクト開始後の実行手順です (回路図付き)。必要な方は参考にしていただければ幸いです。

Spring MVC プロジェクト開始後の実行プロセス:

1. 実行プロセス:

01. Web プロジェクトが開始されたら、以下を含む web.xml ファイルを読み込みます。コア構成ファイル

mvc のコア コントローラーは web.xml ファイルで設定されているため、このコントローラーは初期化されます。たとえば、ユーザーのリクエスト パスは localhost:8080/ です。 hello

このとき、/hello はリクエスト パスとみなされます ====》コア設定ファイルの Bean の ID

03./hello は、コア コントローラーにアクセスし、プロセッサ マッパー (HandlerMapping)

04 に移動します。最下層は最初に適切な HandlerMapping を見つけて、プロセッサ実行チェーン (HandlerExecutionChain)

05 を返します。実行されようとしているコントローラーと (1-N Interceptor)

06. プロセッサー実行チェーンのハンドラーに従って HandlerAdapter を検索します。

07.HandlerAdapter は、指定されたメソッドを実行します。コントローラーのタイプ

08.メソッドの実行後、ModleAndView

Modle ==》Map

View ==》String

09を返す必要があります。ビュー パーサーが設定されている場合、ビューは実際にはロジック ビュー名です。

#ビュー パーサーが設定されていない場合、ビューには値がありません。物理ビュー名である必要があります

回路図:

2 基礎となるコードを表示します

01. web.xml ファイルのコア コントローラーをクリックします。

#02. Ctrl o 対応するメソッド doDispatch

03 コードの分析を開始します。 #04. 次のコードを見つけます

protected void doDispatch(HttpServletRequest request, HttpServletResponse response)
HttpServletRequest processedRequest = request;  //请求对象
HandlerExecutionChain mappedHandler = null;  
//处理器执行链=我们即将执行的Controller+(1+拦截器)
boolean multipartRequestParsed = false;
//解析一个请求是否是文件上传请求
ログイン後にコピー

要求に従って実行する必要があるハンドラー (コントローラー) を見つけます

Ctrl マウスの左ボタンをクリックして getHandler() を実行します。このメソッドの値はプロセッサ実行チェーンです。

05. getHandler を入力した後、次のコード

 // Determine handler for the current request.  mappedHandler = getHandler(processedRequest);
ログイン後にコピー

06 を見つけます。引き続き hm.getHandler(request)


を入力すると、このメソッドがインターフェイス (HandlerMapping にはメソッドを実装するメソッドがありません)。引き続き、実装クラス AbstractHandlerMapping

07 をクリックして、ポイント

HandlerExecutionChain handler = hm.getHandler(request);
ログイン後にコピー

08 を中断します。取得したプロセッサが実行されていることがわかります。チェーンによってコア コントローラーが提供されます

Object handler = getHandlerInternal(request);
ログイン後にコピー

クリックして getHandlerAdapter()

を入力します。 09. 次のコード ブレーク ポイントを見つけます

 // Determine handler adapter for the current request.  
 HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
ログイン後にコピー

10クリックして「supports()

」と入力します。supports()

がインターフェース内にありますが、Springmvc はデフォルトで 3 つを実行します。 #しかし、私たちが書いた HelloController はコントローラー インターフェイスを間接的に実装したので、SimpleControllerHandlerAdapter のポイントを壊すだけで済みます。

12. 取得した HandlerAdapter をコア コントローラーに返します。

13. コア コントローラー内のプロセッサ アダプターを使用して、次のステップでは実際のコード

 if (ha.supports(handler)) {
     return ha;
     }
ログイン後にコピー
を実行します。クリックして handle

 // Actually invoke the handler.  
 mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
ログイン後にコピー

と入力します。 15. クリックして handleRequest

を入力し、HelloController がこのクラスを継承します。

この親クラスは handleRequestInternal(request, response);

16 を実行します。handleRequestInternal

をクリックすると、実装クラス

@Override
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
      throws Exception {
   return ((Controller) handler).handleRequest(request, response);
}
ログイン後にコピー
が見つかります。

以上がSpring MVCプロジェクト開始後の実行手順(模式図付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!