注釈付きのSpring MVCの紹介

昨日、Spring MVC 3.0の取り扱いを開始し、Habrに関する記事を検索したところ、いくつかの部分が見つかりました。

この記事の目的は、注釈のおかげで、コードに直接構成を書き込む機能を使用してHello Worldを作成することです。



Webプロジェクトを作成します

Webプロジェクトの中心にあるのはweb.xmlファイルです。そのコードは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

version="2.5">



<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>

</context-param>

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



<servlet-name>dispatcher</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<load-on-startup>1</load-on-startup>



<servlet-mapping>

<servlet-name>dispatcher</servlet-name>

<url-pattern>*.form</url-pattern>

</servlet-mapping>



<welcome-file-list>

<welcome-file>/WEB-INF/pages/index.jsp</welcome-file>

</welcome-file-list>



</web-app>







ここでは、リクエストを処理する遍在するSpringサーブレットDispatcherServletを宣言します。また、dispatcher-servlet.xml設定が存在するファイルも示します。

dispatcher-servlet.xml自体に進みましょう

 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <context:component-scan base-package="az.mecid.controllers"/> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> </beans> 
      





<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <context:component-scan base-package="az.mecid.controllers"/> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> </beans>







ここで、Spring Beanをスキャンするパッケージを指定します。次に、ViewResolver Beanを使用して注釈の操作に必要な2つのビンがあり、Viewの位置を示します。suffixプロパティのおかげで、拡張子なしで使用できます。



構成の作成は最も快適ではありませんが、これで完了です。

入力フィールドと送信があるフォームでページを作成します。

  <%@ page contentType = "text / html; charset = UTF-8" language = "java"%>
 <html>
   <head> <title>シンプルなjspページ</ title> </ head>
   <本体>

   <form action = "test.form" method = "get">
       <入力タイプ= "テキスト"名前= "名前">
       <入力タイプ= "送信">
   </ form>

   </ body>
 </ html>


ここで最も興味深いのは、このフォームを処理するコントローラーを作成することです。

package az.mecid.controllers;



import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;



@Controller

public class HelloController {



@RequestMapping(value = "/test.form",method = RequestMethod.GET)

public String test(@RequestParam("name") String param,Model model){

model.addAttribute("name",param);

return "hello";

}

}







クラスにControllerアノテーションを付けますので、XML、その名前、マッピングする場所、その他すべてを記述する必要はありません。テストメソッド(フォームのハンドラー)を作成し、@ RequestMappingアノテーションを使用して、マッピングする場所と、ポストをキャッチするリクエストを示しますget。では、テストメソッドのパラメーターについて説明します。アノテーション@RequestParam( "name")文字列は、ハンドラーが処理中のフォームの名前フィールドを受け取ることを示しています。

String param = request.getParametr("name");







テストメソッドの2番目のパラメーターであるモデルは、キーと値の形式で情報を含むコレクションです。

コードmodel.addAttribute("name",param);



サーブレットでrequest.setAttribute("name",param);



を記述するのと同じrequest.setAttribute("name",param);





テストメソッドは文字列を返します。これは文字列であり、転送するビューの名前です。

これはrequest.getRequestDispatcher("hello.jsp").forward(req,res);



と同等request.getRequestDispatcher("hello.jsp").forward(req,res);



構成では、すべてのビューがWEB-INF / pagesに保存され、拡張子が.jspであるため、拡張子でフルパスを指定する必要がないことを書きました。

ここで、WEB-INFにページフォルダーを作成し、そこにビューhello.jspを作成する必要があります

 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Simple jsp page</title></head> <body> Hello <%= request.getAttribute("name")%> </body> </html> 
      





<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Simple jsp page</title></head> <body> Hello <%= request.getAttribute("name")%> </body> </html>







それで終わりです。すべてを始めて、フォームを見て、送信して、厳soleなHello!を見てみましょう。

ソースはここここでダウンロードできます



All Articles