2009年10月31日土曜日

m2eclipse/WTP/Struts2

前のポストで、先に Dynamic Web Project を作って、それをベースに Maven の依存性管理を与えるやり方で、WTP と m2eclipse を連携させてみた。今度はその逆をやってみる。 ネタとしては、以前 JSF2.0 でやったような、サーバ時間を表示する Getting Started 的な Web アプリを、Struts2 で作ってみる。 各プロダクトのバージョンは、WTP 3.1.1、m2eclipse 0.9.8、Maven 2.2.1、Tomcat 6.0.20、Eclipse 3.5。 ■ プロジェクトの準備
  • maven-archetype-webapp アーキタイプで Maven Project を作成する。(struts2-archetype-starterは、今回はやめておく。)
  • Navigator ビューから".project"ファイルを開いて<natures/>に以下の行を追加する。(Project Facetを設定できるようにするため。)
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
プロジェクトのプロパティを開いて以下の作業
  • Project Facet で Java にチェックを入れる。
  • そのまま Dynamic Web Module にもチェックを入れ、バージョンを 2.5 にし、Runtime タブで Apache Tomcat v6.0を指定(Server Runtime 構成済みの前提)。
  • ソースとアウトプットが以下のようになるよう設定する。(test関連フォルダ は省略。)
    sourceoutput
    src/main/javatarget/classes
    src/main/resourcestarget/classes
  • プロパティを一回閉じて開きなおす。
  • さっきまで無かった Java EE Module Dependencies があるので、これを選択して Maven Dependency にチェック
コンテントフォルダ関連の修正
  • Navigator ビューから".settings/org.eclipse.wst.common.component"ファイルを開いて "WebContent" を"src/main/webapp"に変更する
  • WebContent の中身(META-INF, WEB-INF)をsrc/main/webapp にコピーしてから、WebContent を削除する
Maven から WTP への作業はここまで。 ■ アプリを書く 以下で、確認用の小さな Struts2 アプリを作る。
  • pom.xml に以下の dependency を追加(2.1.8 は 2009/10/30 現在の最新)
    <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>2.1.8</version>
    </dependency>
    
  • 適当にパッケージを作って以下の内容の ServerTimeAction クラスを作成
  • package net.xad.web.struts2.trial2;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class ServerTimeAction extends ActionSupport {
       private static final long serialVersionUID = 1L;
       private static final String FORMAT = "yyyy/MM/dd HH:mm:ss";
       private String serverTime;
       @Override
       public String execute() {
          serverTime = new SimpleDateFormat(FORMAT).format(new Date());
          return SUCCESS;
       }
       public String getServerTime() {
          return serverTime;
       }
    }
  • src/main/resources 下に以下の struts.xml を作成する。
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
           "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
           "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
        <package name="net.xad.web.struts2.trial2" namespace="/" extends="struts-default">
            <action name="serverTime" class="net.xad.web.struts2.trial2.ServerTimeAction">
                <result>/index.jsp</result>
            </action>
        </package>
    </struts>
    
  • web.xml を、以下のように編集する
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     id="WebApp_ID" version="2.5">
      <display-name>struts-trial1</display-name>
      <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
    </web-app>
  • index.jsp を書き替える
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
      <body>
        <h2><s:property value="serverTime"/></h2>
      </body>
    </html>
    
できた。 ■ 確認 http://localhost:8080/struts-trial2/serverTime.action で時間が表示されるはず。F5 押下で更新。

1 件のコメント:

師子乃 さんのコメント...

こんにちは。

技術は一つ一つの事の積み重ねですね。

コメントを投稿