アクションクラスを作成する

次に、アクションが実行された時に呼ばれるクラス、アクションクラスを紹介します。Struts 2でのアクションクラスは前述したようにPOJO(Plain Old Java Objects、すなわち何も継承/実装しない普通のクラス)で実装する事ができます。よって、クラスの作成方法に特別なルールはありません。今回は下記のような非常にシンプルなクラスを用意してみました。

リスト2: アクションクラスTop.java

package example;

public class Top {

    public String execute() throws Exception {
        return "success";
    }

}

標準では、アクションが実行されると対応するアクションクラスのexecuteというメソッドがStruts 2によって呼び出されます。例ではアクションの結果として"success"を返していますので、アクションの実行後には、先のstruts.xmlのアクション定義に基づいて、/example/Top.jspが実行される事になります。通常はこのメソッド内に様々な処理を実装していく事になりますが、まずは最初の1ページを表示するための方法をこのまま紹介していきましょう。

ここで1つ重要な事があります。それはこのアクションクラスはリクエスト処理毎に生成されるという事です。したがって、Struts 2では、アクションクラスをスレッドセーフで作成する必要が無く、アクションクラスの実装方法にほとんど制限がありません。さらにWebコンテナに代表される特定の環境に依存しないPOJOのクラスを作成する事ができるため、UnitTestを実施する上でも非常に便利です。

JSPを作成する

Struts 2は、HTTPレスポンスの生成に標準ではJSPを利用します。JSPの他にはVelocity、Freemarker、XSLTを利用する事もできますが、本稿ではJSPによるレスポンス生成の方法を紹介します。JSPの記述は下記のように通常のものと変りありません。

リスト3: Top.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page pageEncoding="Windows-31J" %>

<html>
<head>
    <title>こんにちは</title>
</head>

<body>
<h2>はじめましてStruts2です</h2>

</body>
</html>

このファイルをstruts.xmlの定義どおり、<ContextRoot>/exampleディレクトリに配置します。

アプリケーションの入り口を用意する

以上で、最小構成のStruts 2アプリケーションは出来上がりですが、このままでは最初の1ページを表示するためには、Webブラウザにて.../アプリケーション名/example/Top.actionを直接リクエストする必要があり、Webアプリケーションとしては未完成といえるでしょう。アプリケーション名までのリクエストURLで最初の1ページを表示するために、アプリケーションの入り口用のファイルを用意する必要があります。この定義は、Webデプロイメントディスクリプタ(web.xml)の<welcome-file-list>要素にて行います。アプリケーション名のみのリクエストの際には、ここに定義されているファイルが実行される事になります。冒頭で紹介したweb.xmlでは、下記のように定義していました。

リスト4: <welcome-file-list>要素の内容(web.xmlからの抜粋)

    ....省略....
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    ....省略....

ここで指定しているindex.htmlは下記のように記述しています。

リスト5: index.html

<html>
<head>
    <META HTTP-EQUIV="Refresh" CONTENT="0;URL=example/Top.action">
</head>

<body>
<p>Now Loading ...</p>
</body>
</html>

ごらんのようにWebブラウザにて、example/Top.actionへのリクエストを実行するように記述されているだけです。これによって、アプリケーション名のみでアクセスしてきたWebブラウザは、example/Top.actionという先ほど定義したアクションへリクエストを再送し、アプリケーションの最初の1ページが表示されるようになっています。

実行してみる

アクションクラスのファイルをコンパイル後、下図のように各ファイルを配置し、アプリケーションサーバへデプロイすれば、準備は完了です。

このアプリケーションにWebブラウザよりリクエストを送ると画面1のようなページが表示されます。

画面1: トップページ

非常に簡単にアプリケーションが作成できることがおわかり頂けたと思います。