@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Struts2でHelloWorld

過去記事の使い回しです。記述内容が古いので注意してください。最新のstrutsは2.2.3.1です。

環境の説明

Struts2を使ってみるを参考にします。ただし対象がstruts 2.0.11で少し古いので、2.2.1.1に合わせるための内容を記述します。

OS WindowsXP SP3 -
JAVA 1.6.0_22-b04 -
Tomcat 6.0.30 Apache Tomcat 6 Downloadsから32-bit/64-bit Windows Service Installer
Eclipese Helios Service Release 1 Eclipse DownloadsからEclipse IDE for Java Developers
Eclipse Tomcatプラグイン 3.2.1 EclipseTotale - Sysdeo Tomcat Launcher PluginからtomcatPluginV321.zip
Struts 2.2.1.1 Download a ReleaseからFull Distribution
Javassist 3.14.0.GA JBoss Community - Browse /Javassist at SourceForge.netから3.14.0.GA

Tomcatインストール

Tomcatしか使わないのでxampp入れません。

インストール

apache-tomcat-6.0.30.exeを実行しウィザードに従いインストールします。Tomcatの管理画面に入るためのユーザ名とパスワードを指定します。その他の設定はすべてデフォルトで問題ありません。

インストール完了時に起動してるので、ブラウザを立ち上げて http://localhost:8080/ にアクセスし表示されれば成功です。

Strutsサンプルアプリでの動作確認
  1. struts-2.2.1.1-all.zipを解凍し「struts-2.2.1.1\apps\struts2-showcase.war」を「C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps」にコピーします。
  2. http://localhost:8080/ にアクセスしTomcatメニュー画面の左メニューから「Tomcat Manager」を選択します。インストール時に指定したユーザとパスワードを入力して「OK」ボタンを押して下さい。「Tomcat Webアプリケーションマネージャ」が表示されます。
  3. 「アプリケーション」一覧表の中に「/struts2-showcase」というパスがあり、実行中ステータスがtrueであれば動作可能です。このパスをクリックするとサンプルアプリケーションを実行できます。

Eclipseインストール

日本語化しません。

インストール

eclipse-java-helios-SR1-win32.zipを解凍します。
pluginsにtomcatPluginV321.zipを解凍してできるcom.sysdeo.eclipse.tomcat_3.2.1フォルダをコピーします。
「〜\eclipse\plugins\com.sysdeo.eclipse.tomcat_3.2.1」となります。

起動確認

「〜\eclipse\eclipse.exe」を実行してください。
初回起動時に、ワークスペース(workspace)の場所を聞かれます。デフォルトで問題ありません。
実行後、メニューバーに「Tomcat」メニューが存在すること。

Tomcat連携
  1. eclipseのメニューから、「Window」−「Preferences」を選択します。
  2. 設定画面から、「Tomcat」を選択します。
  3. Tomcatバージョンに「バージョン 6.x」をTomcatホームに「C:\Program Files\Apache Software Foundation\Tomcat 6.0」を設定します。
  4. eclipseのメニューから、「Tomcat」−「Tomcat起動」を選択してTomcatが起動できるようになります。

Tomcatプロジェクトの作成と配置

eclipseTomcatプロジェクトを作成し、Tomcat上で実行できるように設定します。

プロジェクトの作成
  1. eclipseのメニューから、「File」−「New」−「Projcet...」を選択します。
  2. Java」−「Tomcat プロジェクト」を選択して、「Finish」を押下します。
プロジェクトの設定

プロジェクトのプロパティー設定をします。

  1. eclipseのメニューから、「Project」−「Properties」を選択します。
  2. Tomcat」を選択して、「WARエクスポート設定」タブを選択します。
  3. 「エクスポートするWARファイル」名に、「C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\HelloWorld.war」を入力して「OK」を押下します。
プロジェクトの配置

eclipse左側にある「パッケージエクスプローラ」上の「HelloWorld」を右クリックして、「Tomcatプロジェクト」−「プロジェクト設定に従いWARファイルを作成」を選択。
「操作が成功しました」のダイアログが表示されば成功です。

配置の確認
  1. eclipseのメニューから、「Tomact」−「Tomcat 起動」を選択します。
  2. Consoleに起動ログが表示され最後に「情報: Server startup in xxxxx ms」と表示されます。
  3. http://localhost:8080/manager/htmlにアクセスし「アプリケーション」一覧表の中に「/HelloWorld」というパスがあれば、配置成功です。
  4. このパスをクリックすると表示ファイルがないため404エラーが表示されます。

ページを作成

index.htmlの作成

静的なページを追加します。

  1. eclipseのメニューから、「File」−「New」−「File」を選択します。
  2. Enter or select the parent folder:欄に「HelloWorld」を入力します。
  3. File name欄に「index.html」を入力し、「Finish」を押下します。
  4. 次の内容を記入します。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
<title>Hello World</title>
</head>
<body>
こんにちは
</body>
</html>

再度「プロジェクト設定に従いWARファイルを作成」を行い、http://localhost:8080/HelloWorld/にアクセスすると「こんにちわ」と表示されます。

index.jspの作成

JSPのスクリプトを使用したページを追加します。

  1. eclipseのメニューから、「File」−「New」−「File」を選択します。
  2. Enter or select the parent folder:欄に「HelloWorld」を入力します。
  3. File name欄に「index.jsp」を入力し、「Finish」を押下します。
  4. 次の内容を記入します。
<%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
<title>Hello World</title>
</head>
<body>
 <%out.print("こんにちはJSP");%>
</body>
</html>

再度「プロジェクト設定に従いWARファイルを作成」を行い、http://localhost:8080/HelloWorld/index.jspにアクセスすると「こんにちはJSP」と表示されます。

web.xmlの設定

JavaEEではweb.xmlファイルでアプリケーションの設定を書きます。ここではstruts2.2用の設定をします。

web.xmlの作成
  1. eclipseのメニューから、「File」−「New」−「File」を選択します。
  2. Enter or select the parent folder:欄に「HelloWorld/WEB-INF」を入力します。
  3. File name欄に「web.xml」を入力し、「Finish」を押下します。
  4. 次の内容を記入します。
<?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_2_5.xsd"
	id="WebApp_ID" version="2.5">

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

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

</web-app>

「プロジェクト設定に従いWARファイルを作成」を行い、Tomcatを起動すると次のようなエラーが表示されます。
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
これは必要なjarがlibフォルダに入ってないため発生します。

ライブラリファイルの追加

「WEB-INF/lib」フォルダ配下に、Struts2のライブラリファイルをコピーします。
struts-2.2.1.1-all.zipを解凍しlibディレクトリの中から、次のファイルをeclipse上の「WEB-INF/lib」ディレクトリ配下にドラッグ&ドロップしてコピーします。

  • commons-fileupload-1.2.1.jar
  • commons-io-1.3.2.jar
  • freemarker-2.3.16.jar
  • ognl-3.0.jar
  • struts2-core-2.2.1.1.jar
  • xwork-core-2.2.1.1.jar

javassist-3.14.0-GA.zipを解凍しjavassist.jarを「WEB-INF/lib」ディレクトリにコピーします。
再度「プロジェクト設定に従いWARファイルを作成」を行い、Tomcatを起動しエラーが消えたことを確認してください。

アクションの作成

struts.xmlにurlに対応するアクションクラスを設定します。

/example/Top.actionを参照した際に、Top.javaが実行され、実行結果が"success"の場合index.jspが表示されるように設定します。

  1. eclipseのメニューから、「File」−「New」−「File」を選択します。
  2. Enter or select the parent folder:欄に「HelloWorld/WEB-INF/src」を入力します。
  3. File name欄に「struts.xml」を入力し、「Finish」を押下します。
  4. 次の内容を記入します。
<?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="example" namespace="/example" extends="struts-default">
        <action name="Top" class="example.Top">
            <result name="success" >/index.jsp</result>
        </action>
    </package>
</struts>
パッケージの作成
  1. eclipseのメニューから、「File」−「New」−「Class」を選択します。
  2. Source folder:欄に「HelloWorld/WEB-INF/src」を入力します。
  3. Package:欄に「example」を入力します。
  4. Name:欄に「Top」を入力し、「Finish」を押下します。
アクションクラスの作成
  1. メニューから、「File」−「New」−「Package」を選択します。
  2. Source folder:欄に「HelloWorld/WEB-INF/src」を入力します。
  3. Name:欄に「example」を入力し、「Finish」を押下します。
  4. 次の内容を記入します。
package example;

public class Top {
    public String execute() throws Exception {
        return "success";
    }
}
動作確認
  1. 「プロジェクト設定に従いWARファイルを作成」を行い、Tomcatを起動します。
  2. http://localhost:8080/HelloWorld/example/Top.actionにアクセスし「こんにちはJSP」と表示されたら成功です。