2010年1月24日日曜日

Struts2を組み込む

JavaのWebアプリケーションフレームワークの定番であるStrutsですが、現在はVer2.1.8.1が最新バージョンとなっています。

従来のVer1.x系とは設定方法がいくつか変更になっていますが、最低限の設定でも組み込めるように改良されています。
今回はEclipseのプロジェクトにStruts2を組み込む手順を説明します。


プロジェクトファイルのダウンロード


Struts2の入手


まずはStruts本体を以下からダウンロードします。
Full Distributionにあるstruts-2.1.8.1-all.zipをダウンロードします。
http://struts.apache.org/2.x/
ダウンロードしたファイルを展開します。

文字エンコードの設定


Eclipseの設定を変更し、ファイルをUTF-8で作成するようにします。
(SJISやEUC JPでも作成はできますが、後々面倒になります。)
メニューからWindow / Preferncesをクリックします。
ツリーからGeneral/Workspaceを選択します。
Text file encodingをOther: UTF-8にします。(デフォルトはMS932になっています)
同様に、ツリーからWeb/JSP Filesを選択します。
EncodingをISO 10646/Unicode(UTF-8)に変更します。


プロジェクトの作成


Dynamic Web Projectを作成します。
この例ではプロジェクト名をstruts2_sampleとします。
プロジェクトを右クリックし、New - Source Folderでxmlというフォルダを作成します。
このフォルダに設定ファイルを保存します。
JSPファイルを保存するフォルダをWEB-INFフォルダに作成します。
JSPファイルの位置やファイル名は、struts2の規則に従う必要があります。
WebContent/WEB-INFフォルダを右クリックしNew - Folderでcontentフォルダーを作成します。


ファイルの追加


エクスプローラからプロジェクトにファイルを追加します。
まず、struts2が使用するライブラリをstrutsの展開したファイルにあるlibフォルダからプロジェクトのWebContent/WEB-INF/libフォルダにコピーします。
コピーするのは以下の5ファイルです。
commons-fileupload-1.2.1.jar
freemarker-2.3.15.jar
struts2-convention-plugin-2.1.8.1.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar

strutsの設定ファイルを作成します。
先ほど作成したプロジェクトのxmlフォルダにstruts.xmlというファイル名で保存します。
このファイルにはstruts特有の設定を記述します。
内容を一部抜粋すると以下のようになります。

<constant name="struts.action.extension" value="action" />
<constant name="struts.ui.theme" value="simple" />

同様に、プロジェクト以下のWebContext/WEB-INFにあるweb.xmlファイルを修正します。
このファイルはアプリケーションサーバとWebアプリケーション全体にかかわる設定を記述します。
内容を一部抜粋すると以下のようになります。

<filter>
<filter-name><filter>
<filter-name>struts-prepare</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name><param-value></param-value></init-param>
</filter>
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>


再びEclipseに戻り、プロジェクトを右クリックしてRefreshを実行します。(F5キーでも実行できます)
この操作を行わないとエクスプローラなどで変更したファイルはEclipseに認識されないので注意してください。
Eclipseにxml/struts.xmlが表示されれば成功です。


設定の確認


まだ何も作成していませんが、とりあえずサーバが起動するか確認してみます。
プロジェクトを右クリックし、Run as - Run as Serverを実行します。
Eclipseの右下に表示されるConsoleペインにExceptionやエラーといった表示がなければ成功です。
確認したらサーバを停止します。


Actionクラスの作成


次に、strutsの機能を使用して画面を作成します。
まず、画面から送信されたデータを処理するActionクラスを作成します。
プロジェクトのsrcフォルダを右クリックし、New - Class を実行します。
New Java Classの画面が表示されたらパッケージ名とクラス名を入力します。
パッケージ名はクラスを分類するフォルダのようなもので、strutsで使用する場合は習慣でactionという名前にします。
また、クラス名の末尾はActionとします。
この例では以下のようにします。
パッケージ名:com.googlecode.tecproglab.struts2_sample.action.sample
クラス名:SampleFormAction
SampleFormActionクラス内に以下を追記します。

private String userName;
 private String message;

 public void setUserName(String userName) {
  this.userName = userName;
 }

 public String getMessage() {
  return message;
 }

 public String execute() {
  if(userName != null && userName.length() > 0){
   message = "こんにちは" + userName + "さん";
  }
  return "success";
 }


Ctrl+Sキーを押しファイルを保存します。
Eclipseでは保存した直後にコンパイルが自動で行われます。
エラーがあると赤のマークが表示されます。


JSPファイルの作成


次に、画面の内容となるJSPファイルを作成します。
WebContent/WEB-INF/contentフォルダを右クリックしNew - Folderでsampleフォルダを作成します。
sampleフォルダを右クリックし、New - Otherをクリックします。
NewダイアログでWeb/JSPを選択します。
ファイル名をsample-form.jspとしファイルを作成します。
JSPのファイル名はActionのクラス名を小文字にし、単語の区切りは『-』(ハイフン)にします。
sample-form.jspファイルを編集します。

先頭の@pageタグの下に以下のタグを追加し、HTMLタグにあわせてstruts特有のタグを使用できるようにします。

<%@taglib prefix="s" uri="/struts-tags"%>

bodyタグの中に以下の内容を追加します。

<s:property value="message" />
<br />
<br />

<s:form>
名前:<s:textfield name="userName" />
 <br />
 <s:submit value="送信" />
</s:form>


Ctrl+Sキーを押しファイルを保存します。


画面の確認


以上でstrutsで使用するファイルの作成は完了です。
サーバを起動し、ブラウザから以下のページが表示されるか確認します。
http://localhost:8080/struts2_sample/sample/sample-form.action


プロジェクトファイルのダウンロード

0 件のコメント:

コメントを投稿