SAStrutsで簡単な登録画面を作成してみる。
構成としては、入力画面 > 登録処理 > 結果画面 の流れ。入力された内容をセッションに保存し結果画面に表示する。
1. とりあえずアクションを作成。
中身はこんな感じ。
/**
* テスト登録画面アクション
*/
public class RegisterAction {
Logger logger = Logger.getLogger(RegisterAction.class);
@ActionForm
@Resource
protected RegisterForm registerForm;
public String result;
/**
* 入力画面表示
*
* @return 遷移画面
*/
@Execute(validator = false)
public String input() {
return "input.jsp";
}
/**
* 登録処理
*
* @return competeへリダイレクト
*/
@Execute(validator = true, input="input.jsp")
public String register() {
result = registerForm.msg;
return "complete?redirect=true";
}
/**
* 結果画面
*
* @return 遷移画面
*/
@Execute(validator = false)
public String complete() {
return "complete.jsp";
}
}
- <% 〜 %> はJSP自体のタグ。Javaのソース書いたりできる。
- <xxx:yyyy>はJSPを簡単に書けるようにしたタグライブラリ
- ${XXX}はEL式 http://www.techscore.com/tech/Java/JavaEE/JSP/12/
これにhtml + javascript + cssが入って来るのか・・・大変だ><
とりあえず作成した入力画面JSP
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>入力画面</title>
</head>
<body>
<h1>入力画面</h1>
<s:form>
<html:textarea property="msg" cols="60" />
<s:submit value="保存" property="register" />
</s:form>
</body>
</html>
s:submitのpropertyで指定されたメソッドへPOSTされる。
んで結果画面のJSP
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>結果表示</title>
</head>
<body>
<h1>結果表示</h1>
${result}
</body>
</html>
結果をActionの中でresultに入れそれをEL式で表示。
パッケージ構成はこんか感じ。
ただ、今のままだと値が保存されないので、セッションを利用するように修正。
dtoパッケージにXxxDto を作成。
/**
* セッションDTO
*
* @see Serializable
*/
@Component(instance = InstanceType.SESSION)
public class SessionDto implements Serializable {
/**
* シリアルID
*/
private static final long serialVersionUID = -8645656447885350367L;
/** メッセージ */
public String message;
}
DTOをアクションにDIして使用する。
修正したRegisterAction
/**
* テスト登録画面アクション
*/
public class RegisterAction {
Logger logger = Logger.getLogger(RegisterAction.class);
@ActionForm
@Resource
protected RegisterForm registerForm;
public String result;
@Resource
protected SessionDto sessionDto;
/**
* 入力画面表示
*
* @return 遷移画面
*/
@Execute(validator = false)
public String input() {
return "input.jsp";
}
/**
* 登録処理
*
* @return competeへリダイレクト
*/
@Execute(validator = true, input="input.jsp")
public String register() {
sessionDto.message = registerForm.msg;
return "complete?redirect=true";
}
/**
* 結果画面
*
* @return 遷移画面
*/
@Execute(validator = false)
public String complete() {
result = sessionDto.message;
return "complete.jsp";
}
}
実際に起動して確認!!
サーバーを起動し、http://localhost:8080/SAStrutsTest/register/input へ
入力画面で文字を入力し、POST
入力文字をセッションに保存し、画面に表示
いい感じ^^
0 件のコメント:
コメントを投稿