ページ

2014年11月24日月曜日

Seasarしてみるさー 3 - SAStrutsで登録画面 -

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を作成しようかと思いますが、jspが色々書き方が混ざっていて分かりづらいorz とりあえず・・・


これに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 件のコメント:

コメントを投稿