まあ大体本に書いてあるとおりなんですが・・・
やってみた感じのメモとかを残します。
#HelloWorld的なところ
・プロジェクトはDoltengで記載通りに作れるので詳細割愛
・Index画面も手順通りで出るので詳細割愛
#エコーアプリ作成
org.seasar.sastruts.example.actionにこんな感じでAction作りました。
eveningメソッド作ったりとちょっとだけカスタマイズ
package org.seasar.sastruts.example.action;
import javax.annotation.Resource;
import org.seasar.sastruts.example.form.EchoForm;
import org.seasar.struts.annotation.ActionForm;
import org.seasar.struts.annotation.Execute;
public class EchoAction {
@Resource
@ActionForm
protected EchoForm echoForm;
@Execute(validator=false)
public String index() {
return "input.jsp";
}
// チェックエラー時はinputで書いたパスに戻る
@Execute(validator=true, input="input.jsp")
public String echo() {
return "echo.jsp";
}
// チェックエラー時はinputで書いたパスに戻る
@Execute(validator=true, input="input.jsp")
public String evening() {
return "evening.jsp";
}
}
あとFormも作りました。
package org.seasar.sastruts.example.form;
import org.seasar.struts.annotation.Required;
public class EchoForm {
@Required
public String name;
}
さらにsrc/main/webapp/WEB-INF/view/echo/の下には以下の3ファイルを作りました。
1.input.jsp
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<html:errors/>
<s:form method="post">
お名前をどうぞ!
<html:text property="name" />
<s:submit property="echo" value="送信" />
</s:form>
<s:form method="post">
お名前をどうぞ(夜)!
<html:text property="name" />
<s:submit property="evening" value="送信" />
</s:form>
</body>
</html>
2.echo.jsp
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
こんにちは、${f:h(name)}さん!
</body>
</html>
3.evening.jsp
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
こんばんは、${f:h(name)}さん!
</body>
</html>
#動作確認
ここまでやってtomcatにデプロイした後に
http://localhost:8080/sastruts/echo/
こんな感じの画面が出て
上の方に名前をXXXXと入れて送信を押すと「こんにちはXXXXさん」って出て、
下の方に名前をXXXX入れて送信を押すと「こんばんはXXXXさん」って出ます。
#処理の流れのイメージまとめ
1.sastruts/echo/にブラウザでアクセスするとEchoActionに飛ぶ。EchoAction に飛ぶのは末尾のActionを取った(+小文字にした)クラスがURLに対応したActionクラスになるようにSAstrutsが制御してくれているから。
2.EchoActionクラス内のindexメソッドは特別扱いでsastruts/echo/にアクセスが有ればこのメソッドが呼ばれる。メソッド内ではinput.jspを返却しているだけだからinput.jspの内容がブラウザ上に表示される。
3.input.jspの画面にはformが2つ合ってボタンを押下するとpropertyに記載された名前に対応するEchoActionのメソッドが呼ばれる。それぞれのメソッドで遷移先jspが違うから結果画面も異なってくる。
4.あと、どちらのフォームにもnameって言うフィールドが合ってココに入れた内容がEchoFormのnameにセットされる。ActionとFormのマッピングはActionクラス側で@ActionFormアノテーションでやってる。ActionはFormをおそらく一個しか持てない。
やってみた感じ結構簡単に処理書けるなって印象です。(少なくとも素のstrutsよりは)