SpringMVCクライアント要求処理プロセス
2002 ワード
記憶力がいいのは下手な筆頭に及ばない.
プログラムのTomcatへの配備を例にとると,WebサイトプログラムはSpringMVCフレームワークを用いて開発される.
1.クライアントは、localhost:8080/indexなどのWebサイトへのアクセス要求を開始します.
2.要求がサーバに到着し、Tomcatが受信、Tomcatはウェブサイトのwebを読み取る.xmlは構成され、キャッシュされます.
3.構成に適合するFilterフィルタがあるかどうかを確認し、ある場合はフィルタを呼び出して処理する.
4.処理完了後に処理要求を発見したservletはSpringのDispatcherServiceletとして指定される.
5.DispatcherServiceletがTomcatから送信された要求を受信した場合は、次の2つのケースに分けられます.
1)この要求はウェブサイトの最初の要求であり、DispatcherServiceletは初期化メソッドinitStrategies()を呼び出し、doService()メソッドを呼び出す.
2)リクエストは初めてのリクエストではなくdoService()メソッドを直接呼び出す
6.doService()メソッドはdoDispatch()メソッドを呼び出し、doDispatch()内では主に次のステップに分けられます.
1)getHandlerでrequestに対応するリクエストhandlerを取得する
getHandler()メソッドは、初期化時にinitHandlerMappings()によって生成されたmatchingBeansのrequestMappingHandlerMappingと比較し、requestMappingHandlerMappingにprocessedRequestリクエストのルーティングが含まれているかどうかを見て、そのルーティングに対応するhandlerが存在し、nullが存在しない.
2)取得したhandlerにより対応するHandlerAdapterを得る
getHandlerAdapter()メソッドも初期化時にinitHandlerAdapters()メソッドで生成されたhanderAdapterを取得する.
3)handlerで設定されたブロッカー(HandlerInterceptorAdapterから継承)がここで呼び出されます.
4)handlerメソッド処理要求を実行し、ModelAndViewオブジェクトを返す
コントローラのメソッドはこのメソッドで実行されます.
5)返されたModelAndViewオブジェクトを処理しクライアントに返し,最後にブロッキングを呼び出すafterCompletion()メソッド
プログラムのTomcatへの配備を例にとると,WebサイトプログラムはSpringMVCフレームワークを用いて開発される.
1.クライアントは、localhost:8080/indexなどのWebサイトへのアクセス要求を開始します.
2.要求がサーバに到着し、Tomcatが受信、Tomcatはウェブサイトのwebを読み取る.xmlは構成され、キャッシュされます.
3.構成に適合するFilterフィルタがあるかどうかを確認し、ある場合はフィルタを呼び出して処理する.
4.処理完了後に処理要求を発見したservletはSpringのDispatcherServiceletとして指定される.
5.DispatcherServiceletがTomcatから送信された要求を受信した場合は、次の2つのケースに分けられます.
1)この要求はウェブサイトの最初の要求であり、DispatcherServiceletは初期化メソッドinitStrategies()を呼び出し、doService()メソッドを呼び出す.
2)リクエストは初めてのリクエストではなくdoService()メソッドを直接呼び出す
6.doService()メソッドはdoDispatch()メソッドを呼び出し、doDispatch()内では主に次のステップに分けられます.
1)getHandlerでrequestに対応するリクエストhandlerを取得する
mappedHandler = getHandler(processedRequest);
getHandler()メソッドは、初期化時にinitHandlerMappings()によって生成されたmatchingBeansのrequestMappingHandlerMappingと比較し、requestMappingHandlerMappingにprocessedRequestリクエストのルーティングが含まれているかどうかを見て、そのルーティングに対応するhandlerが存在し、nullが存在しない.
2)取得したhandlerにより対応するHandlerAdapterを得る
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
getHandlerAdapter()メソッドも初期化時にinitHandlerAdapters()メソッドで生成されたhanderAdapterを取得する.
3)handlerで設定されたブロッカー(HandlerInterceptorAdapterから継承)がここで呼び出されます.
if (!mappedHandler.applyPreHandle(processedRequest, response)) {
return;
}
4)handlerメソッド処理要求を実行し、ModelAndViewオブジェクトを返す
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
コントローラのメソッドはこのメソッドで実行されます.
5)返されたModelAndViewオブジェクトを処理しクライアントに返し,最後にブロッキングを呼び出すafterCompletion()メソッド
processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);
7. クライアントは、返された応答を受信します.