0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SpringMVCの大きな流れ

Last updated at Posted at 2023-11-25

SpringMVCの大きな流れ

  • 最も一般的な例として、@Controller + Forward の場合の流れは以下の通りである。

스크린샷 2023-11-25 15.21.36.png

  1. Browerからurlリクエストを送る。
  2. DispatcherServletがRequestを受け、HandlerMappingに転送する。
  3. HandlerMappingurlが一致するメソッドを見つけてDispatcherServletに返却する。
    • MapでUrl(Key)とメソッド(Value)をmappingさせておいて保存している。
  4. DispatcherServletでどのような種類のHandlerAdapterが呼び出すことができるかを確認し、該当HandlerAdapterにリクエストを伝達する。
  5. 該当HandlerAdapterでどのControllerが処理できるかを見て該当Controllerにリクエストを伝達する。
  6. ControllerはRequestに対して実際に処理するメソッドを呼び出し、Clientに送るデータをModelオブジェクトに入れ、View名前(文字列)をDispatcherServletに返却する。
    • ex. return “registerForm”;
  7. DispatcherServletでView名前(文字列)をViewResolverに伝達する。
  8. ViewResolverでは、View名前(文字列)に接頭辞接尾辞を付け、実際にどのようなViewファイルなのかを教えてくれる。
    • ex. registerForm → /WEB-INF/views/registerForm.html
    • servlet-context.xmlで設定の確認及び修正が可能である。
  9. どのTemplateを使用するかによって、Viewを多様に渡す。
    • ex。 タイムリーフの場合はThymeleafView、jspの場合はJstlViewに渡すが、その他にも様々なviewがある。
  10. 実際のファイルがModelを持って最終応答を作ってClientに応答する。

すぐにControllerを呼び出さずに、途中でゆるい接続をしておいた理由?

  • 変更に有利だから。
  • 直接接続だったら、コントロールラーではない他の種類のオブジェクトを呼び出したりすると、直接DispatcherServletの内容を修正しなければならなかった。
  • しかし、HandlerAdapterを通じてControllerを呼び出すことができるようにしておけば、他の種類のオブジェクト(ex.Servlet)を呼び出すことに変わっても、他のHandlerAdapterを使うことでDispacherServletを変更しなくても良い。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?