Spring-MVCフレームワーク

Spring Web MVCフレームワークは、柔軟で疎結合のWebアプリケーションの開発に使用できるModel-View-Controller(MVC)アーキテクチャーとすぐに使用できるコンポーネントを提供します。MVCパターンにより、アプリケーションのさまざまな側面(入力ロジック、ビジネスロジック、およびUIロジック)が分離され、これらの要素間の疎結合が提供されます。

  • ザ・ Model アプリケーションデータをカプセル化し、通常はPOJOで構成されます。

  • ザ・ View モデルデータのレンダリングを担当し、一般に、クライアントのブラウザが解釈できるHTML出力を生成します。

  • ザ・ Controller ユーザーリクエストの処理と適切なモデルの構築を担当し、レンダリングのためにビューに渡します。

DispatcherServlet

Spring Webモデルビューコントローラー(MVC)フレームワークは、すべてのHTTP要求と応答を処理するDispatcherServletを中心に設計されています。Spring Web MVC DispatcherServletのリクエスト処理ワークフローを次の図に示します-

以下は、着信HTTP要求に対応する一連のイベントでのDispatcherServlet -

  • HTTPリクエストを受信した後、DispatcherServletHandlerMapping参照して、適切なコントローラーを呼び出します

  • コントローラは、要求を受け取り、使用GETまたはPOSTメソッドに基づいて、適切なサービスメソッドを呼び出します。serviceメソッドは、定義されたビジネスロジックに基づいてモデルデータを設定し、ビュー名をDispatcherServletに返します。

  • DispatcherServletはからの助けを取るViewResolverピックアップへの要求のために定義されたビューを。

  • ビューが完成すると、DispatcherServletはモデルデータをビューに渡し、ビューは最終的にブラウザにレンダリングされます。

上記のすべてのコンポーネント、つまりHandlerMapping、Controller、およびViewResolverは、Webアプリケーションに必要ないくつかの追加機能を備えたプレーンなApplicationContextの拡張であるWebApplicationContextwの一部です。

必要な構成

でURLマッピングを使用して、DispatcherServletで処理するリクエストをマッピングする必要があります。web.xmlファイル。以下は、の宣言とマッピングを示す例です。HelloWeb DispatcherServletの例-

<web-app id = "WebApp_ID" version = "2.4"
   xmlns = "http://java.sun.com/xml/ns/j2ee" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee 
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
   <display-name>Spring MVC Application</display-name>
   
   <servlet>
      <servlet-name>HelloWeb</servlet-name>
      <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>

   <servlet-mapping>
      <servlet-name>HelloWeb</servlet-name>
      <url-pattern>*.jsp</url-pattern>
   </servlet-mapping>

</web-app>

ザ・ web.xmlファイルは、WebアプリケーションのWebContent / WEB-INFディレクトリに保存されます。初期化時HelloWeb DispatcherServlet、フレームワークは、という名前のファイルからアプリケーションコンテキストを読み込もうとします [servlet-name]-servlet.xmlアプリケーションのWebContent / WEB-INFディレクトリにあります。この場合、ファイルは次のようになります。HelloWebservlet.xml

次に、<servlet-mapping>タグは、どのURLがどのDispatcherServletによって処理されるかを示します。ここで、で終わるすべてのHTTPリクエスト.jsp によって処理されます HelloWeb DispatcherServlet。

デフォルトのファイル名を[servlet-name] -servlet.xml、デフォルトの場所をWebContent / WEB-INFにしたくない場合は、web.xmlファイルにサーブレットリスナーContextLoaderListenerを追加することで、このファイル名と場所をカスタマイズできます。次のように-

<web-app...>

   <!-------- DispatcherServlet definition goes here----->
   ....
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/HelloWeb-servlet.xml</param-value>
   </context-param>

   <listener>
      <listener-class>
         org.springframework.web.context.ContextLoaderListener
      </listener-class>
   </listener>
   
</web-app>

それでは、必要な構成を確認しましょう。 HelloWeb-servlet.xmlWebアプリケーションのWebContent / WEB-INFディレクトリに配置されたファイル-

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:context = "http://www.springframework.org/schema/context"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans     
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-3.0.xsd">

   <context:component-scan base-package = "com.tutorialspoint" />

   <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name = "prefix" value = "/WEB-INF/jsp/" />
      <property name = "suffix" value = ".jsp" />
   </bean>

</beans>

以下は、についての重要なポイントです HelloWeb-servlet.xml ファイル-

  • [サーブレット名] -servlet.xmlファイルは、グローバルスコープ内の同じ名前で定義された任意の豆の定義をオーバーライドする、定義された豆を作成するために使用されるであろう。

  • <コンテキスト:コンポーネント・スキャン...>タグはなど@Controllerと@RequestMappingのような注釈を利用することを可能にするアクティブSpring MVCの注釈スキャン機能に使用されます

  • InternalResourceViewResolverは、ビュー名を解決するために定義されたルールがあります。上記で定義されたルールに従って、hello/WEB-INF/jsp/hello.jspにあるビュー実装に委任されます

次のセクションでは、実際のコンポーネント(Controller、Model、View)を作成する方法を説明します。

コントローラーの定義

DispatcherServletは、要求をコントローラーに委任して、それに固有の機能を実行します。ザ・@Controller注釈は、特定のクラスがコントローラーの役割を果たすことを示します。ザ・@RequestMapping アノテーションは、URLをクラス全体または特定のハンドラーメソッドにマップするために使用されます。

@Controller
@RequestMapping("/hello")
public class HelloController { 
   @RequestMapping(method = RequestMethod.GET)
   public String printHello(ModelMap model) {
      model.addAttribute("message", "Hello Spring MVC Framework!");
      return "hello";
   }
}

ザ・ @Controllerアノテーションは、クラスをSpringMVCコントローラーとして定義します。ここで、の最初の使用法@RequestMapping このコントローラーのすべての処理方法がに関連していることを示します /hello道。次の注釈@RequestMapping(method = RequestMethod.GET)HTTP GET要求を処理するためのコントローラーのデフォルトのサービスメソッドとしてprintHello()メソッドを宣言するために使用されます。同じURLでPOSTリクエストを処理する別のメソッドを定義できます。

上記のコントローラーは、次のように@RequestMappingに属性を追加できる別の形式で記述できます。

@Controller
public class HelloController {
   @RequestMapping(value = "/hello", method = RequestMethod.GET)
   public String printHello(ModelMap model) {
      model.addAttribute("message", "Hello Spring MVC Framework!");
      return "hello";
   }
}

ザ・ value 属性は、ハンドラーメソッドがマップされるURLと method属性は、HTTPGETリクエストを処理するためのサービスメソッドを定義します。上記で定義したコントローラーについて、以下の重要な点に注意してください。

  • サービスメソッド内で必要なビジネスロジックを定義します。要件に応じて、このメソッド内で別のメソッドを呼び出すことができます。

  • 定義されたビジネスロジックに基づいて、このメソッド内にモデルを作成します。セッターのさまざまなモデル属性を使用できます。これらの属性には、ビューからアクセスして最終結果を表示します。この例では、属性「message」を使用してモデルを作成します。

  • 定義されたサービスメソッドは、の名前を含む文字列を返すことができます viewモデルのレンダリングに使用されます。この例では、論理ビュー名として「hello」が返されます。

JSPビューの作成

Spring MVCは、さまざまなプレゼンテーションテクノロジのさまざまな種類のビューをサポートしています。これらには、JSP、HTML、PDF、Excelワークシート、XML、Velocityテンプレート、XSLT、JSON、AtomおよびRSSフィード、JasperReportsなどが含まれます。ただし、最も一般的には、JSTLで記述されたJSPテンプレートを使用します。

簡単に書いてみましょう hello /WEB-INF/hello/hello.jspで表示−

<html>
   <head>
      <title>Hello Spring MVC</title>
   </head>
   
   <body>
      <h2>${message}</h2>
   </body>
</html>

ここに ${message}コントローラ内で設定した属性です。ビュー内に複数の属性を表示することができます。

Spring WebMVCフレームワークの例

上記の概念に基づいて、SpringWebアプリケーションの構築に役立ついくつかの重要な例を確認しましょう-

シニア番号 例と説明
1 Spring MVC HelloWorldの例

この例では、単純なSpring Web HelloWorldアプリケーションの作成方法を説明します。

2 SpringMVCフォーム処理の例

この例では、HTMLフォームを使用してSpring Webアプリケーションを作成し、データをコントローラーに送信して、処理された結果を表示する方法を説明します。

3 Springページリダイレクトの例

Spring MVCFrameworkでページリダイレクト機能を使用する方法を学びます。

4 Spring静的ページの例

Spring MVCFrameworkで動的ページとともに静的ページにアクセスする方法を学びます。

5 Spring例外処理の例

Spring MVCFrameworkで例外を処理する方法を学びます。