はじめに
最近、仕事でSpring MVCを使ったフロントエンド側の開発をしています。
今まではバックエンドのAPI開発の経験がほとんどでしたが、JSPを触るフロントエンド開発はあまり経験がなく、処理の流れなどがあまり理解できていない状態でした。
そのため、今回、色々調べながら自分なりにSpring MVCの処理フローを整理してみました。
MVCとは
MVCはアプリケーションのアーキテクチャパターンの1つで、アプリケーションをModel、View、Controllerの3つの役割に分けて設計する考え方です。
Model
データとデータに関する処理(ビジネスロジック)を担当します。
DBアクセスやデータの取得・保存・加工などを行います。
View
UIを担当します。
Controllerから渡されたModelのデータを画面に表示します。
Controller
ModelとViewの間をつなぐ役割をします。
ユーザーからのリクエストを受け取り、Modelに処理を依頼し、その結果をViewに渡します。
JSPベースのSpring MVCの処理フロー
クライアント(Browser)からHTTPリクエストが送信された場合のSpring MVCの処理フローを以下のように整理しました。
上記のシーケンス図が見づらい場合は、以下の画像をご覧ください。
※ BrowserでJavaScriptが実行される場合、HTTPレスポンス(HTML)後にJavaScriptが実行されます。
Spring MVC内部コンポーネント
Spring MVCには、DispatcherServletなどの内部コンポーネントが存在しますので、それぞれの役割を整理します。
-
DispatcherServlet
クライアントからのHTTPリクエストを受け取り、適切なコンポーネントに処理を振り分けます。 -
HandlerMapping
リクエストに対応するHandler(Controller)を検索します。 -
HandlerAdapter
検索で取得したHandler(Controller)を実行するために、Controllerのメソッドを呼び出します。 -
ViewResolver
Controllerが返却したView名からJSPのパスを返却します。
おわりに
今回は、Spring MVCの処理フローについて、自分の理解を整理するためにまとめてみました。
今回の調査で、Spring MVCの全体的な処理の流れを理解できました。
また、Controllerが呼び出される前に、複数の内部コンポーネントが関わっていることもわかりました。
これからの開発では、この流れを考えながら進められたらと思います。
