2010年1月14日木曜日

Spring 3.0 MVC

Spring 3.0 の Spring MVC を Eclipse で試してみる。

■ 前提

  • ローカルの Maven リポジトリに Spring 3.0 のjar が登録済み[参考]。
  • Eclipse に WTP と m2eclipse がインストール済み。
  • Tomcat v6.0 がServer および Server Runtime として構成済み。

■ 構築

  • Java プロジェクト "hello-spring"を作って、これを Maven Project にして、さらに Dynamic Web Project にもする
  • POM に以下を追加する
    groupIdorg.springframework
    artifactIdspring-webmvc
    version3.0.0.RELEASE
    groupIdjavax.servlet
    artifactIdjstl
    version1.2
  • src/main/webapp/jsp/下に hello.jsp を作成する
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html><body><p>${msg}</p></body></html>
  • WEB-INF 下の web.xml を編集
    <?xml version="1.0" encoding="UTF-8"?>
    <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">
    
       <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <load-on-startup>1</load-on-startup>
       </servlet>
       <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>/</url-pattern>
       </servlet-mapping>
    </web-app>
  • src/main/webapp/WEB-INF/下 に springmvc-servlet.xmlを作成 context:component-scan の記述により、@Contoller の付いたクラスがコントローラとして扱われるようになる。
    <?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">
       <context:component-scan base-package="studies.spring30mvc" />
       <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="viewClass"
             value="org.springframework.web.servlet.view.JstlView" />
          <property name="prefix" value="/jsp/" />
          <property name="suffix" value=".jsp" />
       </bean>
    </beans>
  • 以下のようなコントローラクラスを作成
    package studies.spring30mvc;
     
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping("/hello")
    public class HelloWorldController {
     
       @RequestMapping("/{who}")
       public String handle(@PathVariable String who, Model model) {
          model.addAttribute("msg", String.format("Hello, %s!", who));
          return "hello";
       }
    }

■ 実行

  • Servers ビューからTomcat を起動
  • hello-spring プロジェクトを [Add]
  • ブラウザで http://localhost:8080/hello-spring/hello/spring30 を見るとHello, spring30!と表示される
  • URL の hello の後ろを変えたらメッセージも変わる

0 件のコメント:

コメントを投稿