M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

Tomcat7 + Eclipse3.6環境でStruts2.2を動かす

例によっての職場の都合…というか不便から、シンプルなStruts2環境がほしくなった。

現在の仕事が複数プロジェクトをMavenで順番にビルドして、その後Tomcat7環境にデプロイするという構成。このビルドの長いこと長いこと。そして、コードのバージョン管理のルール不徹底やら、ビルド中にたまるゴミファイルやら、DI設定の複雑さやらで、不具合の対応にやたら時間を食う始末。

JavaScriptのコーディングのための頻繁な動作確認はもちろん、OGNLの動作確認にも、まったく不向きな環境で、上述の欲求が生じたわけです。

ほしい環境

要件は以下の通り──、

コンフィギュレーションは必要最低限に。OGNLやJSPのコーディングと動作確認に集中できる環境の構築が目標です。

構築の手順

Eclipseのプロジェクトサイトから“Eclipse IDE for Java Developers”をダウンロードして、圧縮ファイルを適当な場所に展開する。

(自機のEclipseAptanaプラグインも導入済みのWebサイト/Webアプリ制作用なので、“Eclipse IDE for Java EE Developers”ではない。)

Apache TomcatのプロジェクトサイトからTomcat7の“Core”のzipファイルをダウンロードして、適当な場所に展開する。

Mac OS X上で作業したため、“32-bit Windows zip”などではなく、ただのzipをダウンロード。)

③“Tomcat Plugin”(Sysdeo Eclipse Tomcat Launcher plugin)のzipファイル“tomcatPluginV33.zip”を、配布サイトからダウンロードする。

④ダウンロードしてきたプラグインのzipを解凍し、できあがったcom.sysdeo.eclipse.tomcat_3.3.0ディレクトリを、それごとEclipseのdropinsディレクトリに投入。

Eclipseを起動し、メニューバーの[Eclipse]→[環境設定](Macの場合)で[Preferences] ウィンドウを表示する。

⑥[Tomcat]タブを選択し、[Tomcatバージョン]欄で7.xを、また[Tomcatホーム]欄で先ほどダウンロードして解凍したTomcatのディレクトリを指定する。

⑦メニューバーの[File]→[New]→[Other]で[New]ウィンドウを表示。[Java]→[Tomcatプロジェクト]を選択し、[Next]をクリック。プロジェクト名を記入して[Finish]をクリックする。

⑧Struts2のプロジェクトサイトからStruts2.2.3のzipファイルをダウンロードし、解凍する。

⑨できあがったディレクトリのなかの下記のファイルを、手順⑦で作成したプロジェクトの/WEB-INF/libsにコピー&ペーストする。

  • commons-fileupload-1.2.2.jar
  • commons-io-2.0.1.jar
  • commons-lang-2.5.jar
  • commons-logging-1.1.1.jar
  • freemarker-2.3.16.jar
  • javaassist-3.11.0.GA.jar
  • ognl-3.0.1.jar
  • struts2-core-2.2.3.jar
  • xwork-core-2.2.3.jar

⑩プロジェクトの“References Libraries”を右クリック→[Build Path]→[Configure Build Path...]と進み、プロパティウィンドウの[Java Build Path]タブを表示する。

⑪[Add Jars]ボタンをクリックし、[Jar Selection]ウィンドウで、⑨でペーストしたjarファイルをすべて選択する。

⑫プロジェクト内に下記のファイルを作成する。

配備記述子 WEB-INF/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 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0"> 

<filter>
	<filter-name>struts2</filter-name>
	<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	<init-param>
		<param-name>actionPackages</param-name>
		<param-value>com.m12i.java.struts2.action</param-value>
	</init-param>
</filter>

<filter-mapping>
	<filter-name>struts2</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>
Struts2コンフィギュレーションファイル WEB-INF/src/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>
	<!--constant name="struts.convention.result.path" value="/WEB-INF/jsp/" /-->
	<constant name="struts.action.extension" value="" />

    <package name="struts2-labs" namespace="/" extends="struts-default">

        <action name="index" class="com.m12i.java.struts2.action.IndexAction">
            <result name="success">/WEB-INF/jsp/index.jsp</result>
        </action>

    </package>
</struts>
Actionクラス com/m12i/java/struts2/action/IndexAction.class
package com.m12i.java.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class IndexAction extends ActionSupport {
	
	private static final long serialVersionUID = -817866297893248460L;
	
	private String foo;
	private int bar;

	public String getFoo() {
		return foo;
	}
	public void setFoo(String foo) {
		this.foo = foo;
	}
	public int getBar() {
		return bar;
	}
	public void setBar(int bar) {
		this.bar = bar;
	}

	public String execute() throws Exception {
		
		foo = "foo";
		bar = 1985;
		
		return "success";
	}
}
JSPファイル WEB-INF/jsp/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
	foo: <s:property value="foo"/>, bar: <s:property value="%{bar}"/>
</body>
</html> 

⑬以上のファイルを作成したあと、ツールバーのTomcatのボタン(“Tomcat起動”)をクリックすると、プロジェクトがビルドされTomcat環境にデプロイされる。そして下記アドレスでJSPレンダリング結果を確認できる。

http://localhost:8080/struts2-labs/index