プロセスを実行して、簡単な説明springmvc(解析ソースコード、最後のフローチャート自身附属図面)

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同号,欢迎共同学习讨论问题。
觉得不错的话可以点个推荐分享一下哦,谢谢大家的支持~~

おすすめ

転載: www.cnblogs.com/jenny2019/p/12007191.html