Springmvc-overview
Spring-MVCフレームワークの概要
Spring Web MVCフレームワークは、モデルビューコントローラーアーキテクチャと、柔軟で疎結合のWebアプリケーションを開発するために使用できる既製のコンポーネントを提供します。 MVCパターンにより、アプリケーションのさまざまな側面(入力ロジック、ビジネスロジック、およびUIロジック)が分離され、これらの要素間の疎結合が提供されます。
- Model はアプリケーションデータをカプセル化し、一般に POJO で構成されます。
- View はモデルデータのレンダリングを担当し、一般に、クライアントのブラウザーが解釈できる HTML 出力を生成します。
- Controller は、 User Requests および Building Appropriate Model を処理し、レンダリングのためにビューに渡します。
DispatcherServlet
Spring Webモデルビューコントローラー(MVC)フレームワークは、すべてのHTTP要求と応答を処理するDispatcherServletを中心に設計されています。 次の図に、Spring Web MVC DispatcherServletのリクエスト処理ワークフローを示します。
以下は、DispatcherServletへの着信HTTP要求に対応する一連のイベントです-
- HTTPリクエストを受信した後、DispatcherServletは HandlerMapping を参照して適切なコントローラーを呼び出します。
- コントローラーは要求を受け取り、使用されている GET または* POSTメソッド*に基づいて適切なサービスメソッドを呼び出します。 サービスメソッドは、定義されたビジネスロジックに基づいてモデルデータを設定し、ビュー名をDispatcherServletに返します。
- DispatcherServletは、 ViewResolver のヘルプを利用して、リクエストに対して定義されたビューを取得します。
- ビューが完成すると、DispatcherServletはモデルデータをブラウザに渡し、最終的にレンダリングされます。
上記のすべてのコンポーネント、つまり HandlerMapping、Controller、およびViewResolverは WebApplicationContext の一部です。これは、Webアプリケーションに必要な追加機能を備えたプレーンな ApplicationContext の拡張です。
必要な構成
次に、 <servlet-mapping> タグは、どのDispatcherServletによってどのURLが処理されるかを示します。 ここでは、.jspで終わるすべてのHTTP要求が HelloWeb DispatcherServletによって処理されます。
デフォルトのファイル名を [servlet-name] -servlet.xml に、デフォルトの場所をWebContent/WEB-INFにしたくない場合は、サーブレットリスナー ContextLoaderListener を追加して、このファイル名と場所をカスタマイズできます。次のようにweb.xmlファイル-
次に、WebアプリケーションのWebContent/WEB-INFディレクトリに配置されている HelloWeb-servlet.xml ファイルに必要な構成を確認します。
以下は HelloWeb-servlet.xml ファイルに関するいくつかの重要なポイントです-
- [servlet-name] -servlet.xml ファイルは、定義されたBeanを作成するために使用され、グローバルスコープで同じ名前で定義されたBeanの定義をオーバーライドします。
- <context:component-scan …> タグは、Spring MVCアノテーションスキャン機能を有効にするために使用されます。これにより、 @ Controller や @ RequestMapping などのアノテーションを使用できます。
- InternalResourceViewResolver には、ビュー名を解決するために定義されたルールがあります。 上記のルールに従って、 hello という名前の論理ビューは、 /WEB-INF/jsp/hello.jsp にあるビュー実装に委任されます。
ここで、実際のコンポーネント(コントローラー、モデル、ビュー)の作成方法を理解しましょう。
コントローラーの定義
DispatcherServletは、要求をコントローラーに委任して、固有の機能を実行します。 @ Controller 注釈は、特定のクラスがコントローラーの役割を果たしていることを示します。 @ RequestMapping 注釈は、URLをクラス全体または特定のハンドラーメソッドにマップするために使用されます。
次の注釈* @ RequestMapping(method = RequestMethod.GET)は、 printHello()*メソッドを、HTTP GET要求を処理するコントローラーのデフォルトのサービスメソッドとして宣言するために使用されます。 同じURLでPOST要求を処理する別のメソッドを定義できます。
上記のコントローラーを別の形式で記述することもできます。この場合、次のように@RequestMappingに追加の属性を追加できます-
以下は、上記で定義したコントローラーに関して注意すべき重要な点です-
- サービスメソッド内で必要なビジネスロジックを定義します。 要件に従って、このメソッド内で別のメソッドを呼び出すことができます。
- 定義されたビジネスロジックに基づいて、このメソッド内でモデルを作成します。 さまざまなモデル属性を設定できます。これらの属性は、結果を表示するためにビューからアクセスされます。 この例では、属性「message」でモデルを作成します。
- 定義されたサービスメソッドは、モデルのレンダリングに使用される view の名前を含む文字列を返すことができます。 この例では、論理ビュー名として「hello」を返します。
JSPビューの作成
Spring MVCは、さまざまなプレゼンテーションテクノロジーの多くのタイプのビューをサポートしています。 これらには、 JSP、HTML、PDF、Excelワークシート、XML、Velocityテンプレート、XSLT、JSON、Atom および RSS フィード、 JasperReports などが含まれます。 ただし、最も一般的なものは、JSTLで記述されたJSPテンプレートです。 そこで、/WEB-INF/hello/hello.jspに簡単なhelloビューを記述しましょう-
ここ $ \ {message} ここに属性があり、Controller内で設定します。 ビュー内に表示される複数の属性を持つことができます。