1. 概要
画面から文字を入力し、「OK」ボタンを押したら次の画面へ遷移して入力された文字が表示されている。という簡素なアプリを作成します。
まずは深く考えずにコードを書き、実行してみます。具体的な内容は最後に記載します。
2. プログラム
(1)ディレクトリ構成
project / プロジェクトのルートディレクトリ
├ src/
│ ├ main/
│ │ ├ java/
│ │ │ └ root/ルートパッケージ←自分で名付けたパッケージ名
│ │ │ └ action/アクションクラスを格納(自動作成されるパッケージ)
│ │ │ └ form/フォームクラスを格納(自動作成されるパッケージ)
│ │ └ webapp/
│ │ └ WEB-INF/
│ │ ├view/JSPなどのファイル(自動作成されるパッケージ)
(2)コード
actionパッケージ内に作成する。
public class SampleAction {
/**アクションフォーム*/
@Resource
@ActionForm
protected SampleForm sampleForm;
/**入力画面の実行メソッド*/
@Execute(validator=false)
public String index(){
return "/SampleView.jsp";
}
/**表示画面の実行メソッド*/
@Execute(validator=false)
public String next(){
return "/message.jsp";
}
}
formパッケージ内に作成する。
public class SampleForm {
public String message;
}
viewパッケージ内に作成する。
<%@ page pageEncoding="UTF-8"%>
<html>
<head>
<title>First Page</title>
</head>
<body>
<s:form method="POST" action="/sample/next">
メッセージを
<html:text property="message" />
<s:submit property="next" value="OK" />
</s:form>
</body>
</html>
viewパッケージ内に作成する。
<%@ page pageEncoding="UTF-8"%>
<html>
<head>
<title>Second Page</title>
</head>
<body>
メッセージ: ${f:h(message)}
</body>
</html>
3. 実行
Eclipseのサーバビューからサーバを「開始」する
ショートカット ⇒ Ctrl+Alt+R
WebブラウザのURLに,
localhost:8080/プロジェクト名/sample
と入力する
4. ルール
(1)アクションクラス
-
クラス名:「XxxAction.java」とActionを付ける
-
index()メソッドが自クラスにアクセスされた際に実行されるメソッド
-
メソッド名の前には@Executeのアノテーションを付ける
-
メソッドには引数、返り値はString(遷移先のURL)
-
SampleActionクラスにアクセスされた場合はindex()が実行されるが、他のメソッドを実行させたい場合はURLに.../sample/メソッド名にする
-
使用するformクラスを@Resource,@ActionFormのアノテーションを付けて、宣言する。
(2)アクションフォームクラス
- SampleView.jsp内ののmessageと同じ名前のフィールド(String)を作成する
※ビューに関しては他に掲載します。
5. まとめ
①アクションクラスのメソッドにURLからアクセスして、メソッド内で別のページに遷移する。
②画面側から入力された値はアクションフォームクラスに格納されていて、それをアクションクラス内で使用する。
③命名規則として、アクションクラスの名前は、大文字スタートで「Action」と加える。