DispatcherServletの構造を初めて目:
観察対象の作成と割り当てHandlerExecutionChain、この方法は、全体のチェーンのためのこの方法の実装です。
getHandler方法を入力します。
この時点で、handlerMappingsの変数は次のとおりです。
私たちの三つの方法に対応するだけで操作がhandlerMappingを横断することによって行われ、すべてのマップhandlerMappingsに保存されている我々のアプローチを説明しました。
それはHandlerMappingによりHandlerExecutionChainに割り当てられています。
これは、チェーンの完全な説明を取得するパラメータの完全な実装であり、この時点で注目を集めるために、行うことができるので、必要性のすべてのインターセプタは、すべてのインターセプタを歩いていることです。
HandlerExecutionChainはHandlerAdapterオブジェクトをオブジェクトを通して取得するため、ビュー・オブジェクトをレンダリングすることによって、最終的なユーザにそのオブジェクトを返すのModelAndViewオブジェクトを介してコントローラメソッドを呼び出し、その後、パーサのModelAndViewオブジェクトを呼び出すことによって、ビュー・オブジェクトを作成し、そしてする処理結果を必要とします。
放出された場合Haは、このステップの後リリースされていない実行のハンドル方法をpreHandleメソッド呼び出しのインターセプタを使用して、返されます。
この方法を入力します。
次のステップは、メソッド・ハンドラを処理実行することである、方法を実行するのModelAndViewオブジェクト、このビュー・オブジェクトは、パーサー・ビュー・オブジェクトを呼び出し、その後、ユーザ・ビュー・オブジェクトに応じて特定のデータ送信フォーマットをモデル化するために、そのレンダリングメソッドを呼び出しに戻ります。
続行:
そこに最終的には、この方法には、異常であるとか、ここで実行し、コアビジネスを実行した後の結果は、必要がこのコメントにpostHandler方法、注意を払うを実行するために、まだModalAndViewオブジェクトを返した場合、間違ったので、異常対応彼は正常な状態に戻ることができた、と比較的友好メッセージを表示します。
/ **
- ハンドラの選択とハンドラ呼び出しの結果を処理し、これは、
- either a ModelAndView or an Exception to be resolved to a ModelAndView.
*/
处理完postHandler方法之后,再执行processDispatcherResult方法。
有异常的处理:
执行渲染方法:
进入方法,根据视图解析器获取视图,获得视图对象就返回:
解析完成,调用view的 render方法(注意不是DispatcherServlet的render方法):
view的render方法:
执行完渲染,跳转时执行拦截器的afterCompletion方法。
进入方法:
弄完这些,还要通过过滤器链等等,最终才完成一整个springmvc的执行流程。
按照我自己的理解,画出了这么一幅流程图,希望对大家有帮助:
我是福尔斯甘,如果对本篇有疑问,或者发现有什么错误之处,欢迎提出指出,觉得评论不方便的话,本人邮箱是[email protected],qq同号,欢迎共同学习讨论问题。
觉得不错的话可以点个推荐分享一下哦,谢谢大家的支持~~