登録-確認-完了でデータを登録するサンプル

よくある(?)データ登録機能をStruts2で作ってみた。登録画面で情報を入力して、確認画面で入力内容を確認して、登録処理を実行するという流れ。画面間の情報の受け渡しはセッションでなくリクエストで行く(hiddenで渡す)。セッションを使うことももちろん可能なんだけど、自由度が下がっちゃうからあえてリクエストでいく。タグブラウザなんかで同一の機能を2つ開いて操作をしちゃうとセッションだと操作が(データが)干渉しちゃう。ユーザに「同じ機能を2枚以上開いちゃだめ!」といえれば問題ないけどねー。

以下は、画面遷移と対応するボタンやResultTypeを示した図。登録画面と確認画面の遷移部分だけchainを使って、リクエストレベルで情報を受け渡している。

各画面は次のような設計ルールで実現する。(なるたけシンプルに!)

  • 1画面1JSP1アクションクラス
  • JSPの名前(.jsp部分を除く)とアクションクラスの名前をあわせる
  • JSPディレクトリ階層とアクションクラスのパッケージ階層をあわせる

ポストバックな設計にするので、画面上のボタンに対応する処理は対応するアクションクラスのメソッドが実装する。たとえば、登録画面用のSampleRegistrationPageクラスは次のメソッドを定義している。

  • input ... 登録画面表示用
  • next ... 次画面遷移用
  • cancel ... キャンセル用

あと、アクションを実行するためのURIは次のような設計にする。

  • アクションクラス/メソッド.do

こんな感じの決まりごとで作ったアーカイブはここに置いてある。(Eclipse3.3のWTPで作成)
登録-確認-完了のサンプル

・・・

今回やってみた確認画面を経由するような処理はセッションを使うことのほうが多いのかもしれない。会社でも使ってるし。リクエストだとhiddenを使うから記述が面倒。それに比べてセッションだと楽チン。これが理由かな。ただ、個人的には、Struts2のhiddenタグで面倒くささを感じなかったので、リクエストのほうがいいかもなぁ、と感じている。(Struts1のとき、セッション上のオブジェクトのリセット制御が面倒くさかったことがあったなー。)