昨日、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!を見てみましょう。
ソースは
ここと
ここでダウンロードできます