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リクエストを受信した後、DispatcherServletはHandlerMappingを参照して、適切なコントローラーを呼び出します。
コントローラは、要求を受け取り、使用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で例外を処理する方法を学びます。 |