Tomcat7 + Eclipse3.6環境でStruts2.2を動かす
例によっての職場の都合…というか不便から、シンプルなStruts2環境がほしくなった。
現在の仕事が複数プロジェクトをMavenで順番にビルドして、その後Tomcat7環境にデプロイするという構成。このビルドの長いこと長いこと。そして、コードのバージョン管理のルール不徹底やら、ビルド中にたまるゴミファイルやら、DI設定の複雑さやらで、不具合の対応にやたら時間を食う始末。
JavaScriptのコーディングのための頻繁な動作確認はもちろん、OGNLの動作確認にも、まったく不向きな環境で、上述の欲求が生じたわけです。
構築の手順
①Eclipseのプロジェクトサイトから“Eclipse IDE for Java Developers”をダウンロードして、圧縮ファイルを適当な場所に展開する。
(自機のEclipseはAptanaプラグインも導入済みの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のレンダリング結果を確認できる。