Spring MVC-基礎





Spring MVCフレームワークは、疎結合の既成コンポーネントを使用して、モデル-ビュー-コントローラーパターン(モデル-ディスプレイ(以下、ビュー)-コントローラー)のアーキテクチャを提供します。 MVCパターンは、アプリケーションの側面(入力ロジック、ビジネスロジック、およびUIロジック)を分離し、それらの間の自由な通信を保証します。





DispatcherServlet



Spring MVCのロジック全体は、(UIからの)すべてのHTTP要求とそれらへの応答を受信して​​処理するDispatcherServletを中心に構築されています。 DispatcherServletのリクエスト処理ワークフローを次の図に示します。







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





上記のコンポーネント、つまりHandlerMappingController、およびViewResolverはすべて、 WebApplicationContextの一部であり、Webアプリケーションの作成に必要な追加機能を備えたApplicationContextインターフェースを拡張します。



構成



web.xmlファイルのURLマッピングを使用して、DispatcherServletを使用して処理するリクエストをバインド(マッピング)する必要があります。 以下は、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ファイルは、 WebContent / WEB-INFディレクトリに配置されます。 HelloWebを初期化した後、フレームワークはWebContent / WEB-INFディレクトリにある[servlet-name] -servlet.xmlという名前のファイルからアプリケーションコンテキストをロードしようとします。 この例では、 HelloWeb-servlet.xmlになります。



さらに、 <servlet-mapping>タグは、どのWebアドレスがどのDispatcherServletによって処理されるかを示します。 この場合、「。jsp」で終わるすべてのHTTP要求はHelloWebによって処理されます。



[servlet-name] -servlet.xml / WebContent / WEB-INFをデフォルトのファイルおよびディレクトリとして使用しない場合は、次のようにサーブレットリスナーContextLoaderListenerをweb.xmlに追加して、ファイル名およびディレクトリを構成できます。以下に示す:



 <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>
      
      





次に、WebContent / WEB-INFディレクトリにあるHelloWeb-servlet.xmlの構成を確認しましょう。



 <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の重要なポイントは次のとおりです。





次のセクションでは、 ControllerModel、およびViewを作成する方法を示します



コントローラーの定義



DispatcherServletは、特定の機能を実行するリクエストをコントローラーに送信します。 @Controllerannotationアノテーションは、特定のクラスがコントローラーであることを示します。 @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アノテーションは、クラスをSpring MVC Controllerとして定義します。 前者の場合、@ RequestMappingは、このコントローラーのすべてのメソッドがURL「/ hello」を参照することを示します。 次のアノテーション@RequestMapping(method = RequestMethod.GET)を使用して、 printHello()メソッドを(このコントローラー内の)HTTP GET要求を処理するためのデフォルトのメソッドとして宣言します。 特定の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"; } }
      
      





「値」属性は、このメソッドに関連付けるURL(値= "/ hello")を示し、このメソッドがGETリクエストを処理することをさらに示しています(メソッド= RequestMethod.GET)。 また、上記のコントローラーに関する注意事項:





ビューの作成(JSP)



Spring MVCは、さまざまなページ表示テクノロジーの多くのタイプのビューをサポートしています。 含む-JSP、HTML、PDF、Excel、XML、Velocityテンプレート、XSLT、JSON、AtomおよびRSSフィード、JasperReportsなど。 ただし、ほとんどの場合、JSTLを使用して記述されたJSPテンプレートが使用されます。



/WEB-INF/hello/hello.jspに単純な「hello」ビューを作成しましょう。



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





この場合、変数$ {message}は、コントローラーで設定したものと同じ属性を表示します。 ビュー内では、任意の数の属性を表示できます。



Spring MVCフレームワークの例



上記の概念に基づいて、Spring Webアプリケーションの将来的な構築に役立つ重要なレッスンをいくつか行うことをお勧めします。



Spring MVC Hello Worldの例

簡単なHello Worldアプリケーションの作成方法を説明する例。



Spring MVCフォーム処理の例

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



スプリングページリダイレクトの例

ページリダイレクト機能を使用します。



春の静的ページの例

動的ページとともに静的ページにもアクセスできます。



春の例外処理の例

例外処理。



All Articles