1
3

More than 5 years have passed since last update.

seasar2のお勉強3(Seasar2徹底入門の3 SAStruts入門あたり)

Last updated at Posted at 2017-11-05

まあ大体本に書いてあるとおりなんですが・・・
やってみた感じのメモとかを残します。

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/

にアクセスすると
Clipboard01.png

こんな感じの画面が出て
上の方に名前を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よりは)

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3