アクションフォームは

社外秘
Struts勉強会資料
2002/06/27
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
Agenda
•
全体概要
– 歴史、StrutsのMVCデザインパターン
•
モデル
– 三つのBean、アクションフォーム、アクションフォームとHTMLフォームの対応
•
ビュー
– 国際化されたメッセージ、カスタムタグ、入力チェック
•
コントローラ
– 設定ファイルでのアクションマッピングの定義、
•
その他
– Strutsの拡張ポイント、フォームの二重送信対策
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
全体概要
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
Strutsの歴史
•
2000/5
–
•
「Tomcat 4.0」の開発者であるCraig R.McClanahanによって、Jakartaプロジェクト
へ寄贈
2000/9
– マイルストーンビルド(バージョン0.5)
•
2002/2/13
– バージョン 1.0 Beta 1
•
2001/6/15
– バージョン 1.0
•
2002/1/12
– バージョン 1.0.1
•
2002/2/11
– バージョン 1.0.2
•
2002/3Q
– Struts Book(タイトル未定)がOReillyから出版予定
• Jakarta Struts Book Review Project
(http://www.theserverside.com/resources/strutsreview.jsp)
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
「JSP モデル2」と「MVC」
• JSPモデル2までの経緯
– Servletの登場
• CGIより速く、プラットフォームに依存しない
• Javaのコードの中にHTMLを記述するため、HTMLを変更する際に再コンパ
イルが必要
– JavaServer Pagesの登場
• HTMLの中にJavaのコードを記述できる
• HTMLとJavaを混合でき、Servletの長所をすべて持つ技術として人気が出る
• 「JSPセントリック」なWebアプリケーションでは、フロー制御などのWeb固有の
問題を解決できず
– JSPモデル2の登場
• コントロールフローはServletで制御し、JSPはビューに注力
• Smalltalk-80由来のMVCと類似しているため、「JSPモデル2」と「MVC」は同
じ意味の言葉として使われる
• JSPのみでアプリケーションを構築するのは、JSPモデル1とされる
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
StrutsのMVCデザインパターン①
コントローラ
アプリケーションフ
ローを中央のコント
ローラが制御
ハンドラは、リクエスト
とモデルの間のアダ
プタの役割を果たす
モデルは、ビジネス
ロジックや状態を表
す
モデル
①リクエストを受け付け
コントローラ
②適切なハンドラに
処理を委譲
ハンドラ1
モデル1
ハンドラ2
...
...
モデルK
ハンドラN
...
ビュー
③ハンドラと結びついて
いるモデルによって
リクエストを処理
ビュー1
ビュー2
...
ビューN
⑤クライアントへ表示
...
・ハンドラはコントローラの一部であり、
「何をなすべきか決定する」責務を持つ
・ビジネスロジック(「行うべきもの」)は、
モデルが責務を持つ
④コントローラを通って、
制御がビューに転送される
モデルは、以下の二つを含む
1.システムの内部状態
2.その内部状態を変更する
ために講じることのできる
アクション
ビューへの転送は、設定ファイルに従ってコント
ロールが制御する
⇒モデルのビューへの依存を排除し、疎結合に
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
StrutsのMVCデザインパターン②
①アクションマッピングを基に、1)リクエストに対応したアクションフォームの生成、
2)フォームデータのアクションフォームへの格納、3)アクションフォームの入力チェック実行
コントローラ
モデル
ActionServlet
②アクションマッピングを
元にリクエストに応じた
アクションを呼び出す
struts-config.xml
ActionMapping
ActionMapping
Action
ActionForm
Action
ActionForm
...
JavaBeans
Action
JavaBeans
ActionForward
④遷移先の論理
名を返却
ビュー
③フォームデータの参照、更新、
およびビジネスロジック実行
JSP
JSP
...
⑤アクションマッピングを基に、遷移先の論理名を、
物理JSPに変換して呼び出す
JSP
...
ビューロジック(何が対応するページの名前であるか)から、
コントロールロジック(次に何をすべきか)を分離する
※ ActionFormは、モデルではなく
ビューとする分類もある
Struts Tag Library
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
モデル
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
Strutsのモデルコンポーネント
•
アクションフォーム(ActionForm)
–
–
–
–
•
システム状態Beans
–
–
–
–
•
「モデル」というよりは、実際には「ビュー」に近い
アプリケーション内のそれぞれの入力フォーム(<form>タグ)に対応する
ActionFormクラスを継承して作成する
アクションマッピング(struts-config.xml)で、アクションに対応するように定義する
システムの状態を表すJavaBeans
商品カタログやその在庫状況、ユーザプロファイルデータなど
しばしば、外部データベースに対応するようにメモリ上に作成される
より大規模なシステムでは、エンティティEJBが使用される
ビジネスロジックBeans
– 実現形態としては、システム状態Beansのために使用されたクラスの一部、ある
いはロジック実行用の他のクラスのメソッドとなる
– 特定の環境に依存しない(例:javax.servlet.*をimportするとWebアプリケーショ
ン環境に依存してしまう)ように作成されるべき
– より大規模なシステムでは、セッションEJB(ステートフル or ステートレス)が使用
される
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
アクションフォーム(ActionForm)
•
Strutsフレームワークでは一般に、アプリケーション内のそれぞれの入力
フォームに対して「アクションフォーム(ActionForm)」を定義する
•
アクションフォームをアクションマッピング(struts-config.xml)に定義した場合、
ActionServletは以下を自動的に実行する
– 指定されたアクションフォームのインスタンスをセッション(あるいはリクエスト)か
ら取り出し、型をチェックする。アクションフォームのインスタンスが存在しなかっ
た場合には、ActionServletが生成する。
– すべてのリクエストパラメータを、アクションフォームのプロパティにセットする。
– アクションマッピング(struts-config.xml)で「validate=“true”」が指定されていた場
合には、アクションフォームのvalidate()メソッド(入力チェック用メソッド)を起動す
る。
– アクションフォームの有効性を検証した後、アクションフォームを引数として、アク
ションのperform()メソッドを起動する。
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
設定ファイルでのアクションフォームの定義
社外秘
struts-config.xmlファイル
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
<struts-config>
<form-beans>
<form-bean name="logonForm"
type="org.apache.struts.webapp.example.LogonForm"/>
...
</form-beans>
アクションフォームの定義
アクションフォームは、アクションとは
別個に定義する。
⇒ 一般に
アクション : アクションフォーム
≒N:1
となり、複数のアクションに一つの
アクションフォームが対応する
<action-mappings>
<action
path="/logon"
type="org.apache.struts.webapp.example.LogonAction"
name="logonForm"
アクションに対応するアクションフォーム名を指定する
scope="request"
input="/logon.jsp">
</action>
アクションフォーム(のインスタンス)のスコープ
...
</action-mappings>
</struts-config>
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
HTMLフォームとアクションフォームの対応
HTMLフォームを生成するJSP (logon.jsp)
社外秘
Strutsで用意されているJSPカスタムタグ
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
HTMLフォームには、アクション
フォーム名の指定がない
...
<html:form action="/logon">
<html:text property="username"/>
フォーム表示時:
アクションフォーム
のgetterメソッドを
実行
アクション先とアクションフォーム
の対応は、アクションマッピング
(struts-config.xml)で集中管理
各JSPにアクション先に応じた
<jsp:useBean>タグを記述する必要
がなくなる
ActionFomr (LogonForm)
public final class LogonForm extends ActionForm {
private String username = null;
public String getUsername() {
return (this.username);
}
public void setUsername(String username) {
this.username = username;
}
...
フォーム送信時:
アクションフォーム
のsetterメソッドを
実行
入力チェックエラー時などで、同一
画面を表示させた際に、ユーザの入力
をそのまま保持して出力可能
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
アクションフォーム作成時の留意点
•
継承元となるorg.apache.struts.action.ActionFormクラス自体は、実装が必要
な抽象メソッドを持たない単純なクラスであり、一般にアクションフォームはプ
ロパティゲッター/プロパティセッターメソッドのみを持つ単純なクラスとなる
– 当然、ビジネスロジックは持たない
•
アクションフォームは、標準のバリデーションメカニズムを持つ
– ActionFormクラスのvalidateメソッドをオーバライドし、アクションマッピング(strutsconfig.xml)においてvalidate=“true”を指定しおけば、Strutsフレームワークが入力
チェックメソッドを呼び出す
– 標準のバリデーションメカニズムは無視してもよい
•
アクションフォームは、一種のファイアウォール
– アクションフォームは、HTTPとActionクラスの間のファイアウォールとも考えるこ
とができる
– Actionクラスに対して、必要な属性がすべてそろっていて、それらが適切な値で
あることを保証する
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
ActionFormとHTMLフォームのcardinality
社外秘
•
アクションフォームが抽象化している「フォーム」は、単一のJSPのHTMLフォームと対応し
ているわけではない点に注目すること
•
ウィザードスタイル(複数画面に渡って順々に入力していく画面パターン)の場合でも、
Strutsフレームワークでは、全ての入力フィールドに対応したプロパティを持つ単一のアク
ションフォームを定義することが推奨される
–
•
単一のアクションフォームであれば、入力フィールドがどの画面で表示されるかに依存しないため、
ページデザイナが入力フィールドを自由にページ間に移動させることができる
アクションフォームのカバー範囲としては、”業務”単位などの画面復帰が必要である範囲
が考えられる
ウイザード形式等の
複数のページ
配送先の入力
単一の
ActionFormBean
入力フィール
ドが移動可能
クレジットカード
番号の入力
...
サブミット先
参照・更新
Action
購入の確認
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
ビュー
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
国際化されたメッセージ
•
•
•
Strutsは、国際化されたアプリケーションの構築に着目
Javaプラットフォームの標準的な仕組みによって、アプリケーションを国際化する
重要な概念は、以下のとおり
–
Locale
•
•
•
–
ResourceBundle
•
–
•
ResourceBundleの標準実装のうちの1つで、 初期化プロパティファイルで使っているシンタックス
“name=value” を用いてリソースを定義する
Webアプリケーションで使われるメッセージは一般的なテキストであるため有効 である
MessageFormat
•
•
–
複数言語のメッセージを サポートする基本的なツールを提供する
PropertyResourceBundle
•
–
国際化をサポートするJavaの基本クラス
それぞれのLocaleは特定の国と言語(オプション言語バリエーションの追加)を表す
数値と日付のようなものの為のフォーマットのセットを仮定している
実行時に、指定された引数によってメッセージストリング (この場合、メッセージはリソースバンドルか
ら検索されたもの) の一部を入れ替える事を可能にする
メッセージ中のプレースホールダー ストリング{0}は、 第1のランタイム引き数と入れ替えられ、{1}は第
2の引き数などと入れ替えられる
MessageResources
•
Strutsのクラス org.apache.struts.util.MessageResourcesは、データベースのような1セットのリソースバン
ドルを扱い、 そしてサーバ自身が動作しているデフォルトロケールでは、 (通常現在のユーザと関連し
た)ロケールに依存したメッセージストリングを要求する事を可能にする
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
Strutsでの入力フォームの作成
•
•
多くのWebアプリケーションでは、<input>タグのような HTMLの標準の機能を使用し
て入力フォームを構築する
一般にWebシステムでは、入力フォームでエラーがあった場合に、全ての項目を入力
しなおすような動作は望ましくない
標準のHTMLとJSPを使った入力フォーム
<input type="text“
name="username“
value="<%= loginBean.getUsername() %>"/>
Strutsのカスタムタグを使った入力フォーム
<html:text property="username"/>
・明示的にJavaBeansを参照する必要がない
・初期値についてもStrutsフレームワークが
セットする
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
Strutsで用意されているカスタムタグ
社外秘
Bean Tag
–
–
–
指定した JavaBeanのプロパティの値を取り出し、現在のページの残りの部分でアクセス可能にするタグなど
リクエストクッキー、ヘッダーおよびパラメータの値に基づいた新しい bean を作成する便利なメカニズムも 提
供される
例)
•
<bean:define id=“...” name=“...” property=“...” />
•
<bean:write name=“...” property=“...” />
–
–
「name」で指定したJavaBeanの「property」で指定した属性を、「id」で参照できるようにする
「name」で指定したJavaBeanの「property」で指定した属性を、ページに書き出す
HTML Tag
–
–
HTML ベースのユーザインタフェースの作成で一般的に使われるタグと同様に、 Strutsの入力 フォームを生
成するタグなど
例)
•
<html:text property=“...” />
–
そのタグがネストされている<html:form>タグに関連付けられたJavaBeanの、「property」で指定された属性を<input
type=“text”>タグに展開する
Logic Tag
–
–
出力テキストの条件付生成、オブジェクトコレクションによる 出力テキストの反復的な生成、およびアプリケー
ションフロー管理に有効なタグなど
例)
•
<logic:iterate id=“...”> ... </logic:iterate>
Template Tag
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
Strutsの入力チェック
•
Strutsでは、 入力フィールドの値に対するチェック機能を提供する
•
入力チェックの利用方法
–
ActionFormクラスの以下のvalidate()メソッドをオーバライドする
•
–
•
validate()メソッドは、コントローラ(ActoinServlet)によって呼ばれる
入力チェックのタイミング
–
–
•
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request);
ユーザの入力をActionFormのプロパティを設定した後
対応するアクションクラスのperform()メソッドの呼び出しの前
入力チェック時にエラーとなった際の処理の流れ
[ActionFormクラス]
– バリデーションを実行して問題が発見された場合には、validate()メソッドでActionErrorsイン
スタンス(エラーメッセージの キーを含んだ ActionErrorのコレクション)を返す
[ActionServlet]
– ActionErrorsが返された場合には、コントローラ(ActionServlet)によってエラーの内容がリ
クエスト属性として保存される
– リクエスト属性に保存されたエラー内容は、<html:errors> タグによってそのエラーのメッセー
ジが表示される
– コントローラ(ActionServlet)は、入力フォーム画面(ActionMapping の"input"プロパティで指
定したページ)に遷移させる
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
Strutsの入力チェック(続き)
•
社外秘
ActionFormクラスとActionクラスへのチェックロジックの配置
– バリデーションの"レベル"に応じて、配置する
• 単純なバリデーション(必須、最大長、文字種等々)はActionFormクラスで
• 複雑なチェック(コードの存在チェック、その他ビジネスロジック的なもの)はActionクラス、
またはActionクラスが呼び出すビジネスロジックで
•
その他
– Struts Validator (http://home.earthlink.net/~dwinterfeldt/)
• オプション
– Jakrta Commons Validator (http://jakarta.apache.org/commons/)
• XMLファイルにバリデーションルールを記述
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
コントローラ
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
Strutsでのコントローラ
•
ブラウザからのリクエストはActionServletが集中的に受け取り、アクションマッピング
(struts-config.xml)で指定されているActionクラスのperform()メソッドに処理が委譲さ
れる
・struts-config.xmlで設定された「URL」と「Action」
のマッピング情報
・どのようなリクエストにマップされた結果として、そのアクション
が起動されたのかをActionに伝える
ActionMapping
・HTMLのフォームの入力データ
・ウィザード形式などの場合は、複数の
HTMLフォームの入力をひとつActionForm
に対応させる
XXXActionForm
ハンドラに処理を委譲
リクエスト
Actionクラス
ActionServlet
(またはその継承クラス)
XXXAction
遷移先情報を返却
ActionForward
performメソッドのシグネチャ
public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException;
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
コントローラの設定ファイル
•
ActionServletの設定
web.xml
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
•
・"*.do"形式のURLでのアクセスを、ActionServlet
がすべて受け取る
ActionMappingの設定
struts-config.xml
・URL「/editSubscription.do」でのアクセスを、Actionクラス
「EditSubscriptionAction」に委譲する
<action path="/editSubscription"
type="org.apache.struts.example.EditSubscriptionAction"
name="subscriptionForm" scope="request" validate="false">
<forward name="failure" path="/mainMenu.jsp"/>
<forward name="success" path="/subscription.jsp"/>
</action>
・「EditSubscriptionAction」から、「faliure」「success」が返された
ときに遷移するJSPを指定する
struts-config.xmlのエントリの情報を基にActionMappingが作成され、Actionクラスのperform()メソッド
起動時に渡される
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
performメソッドの典型的な処理
•
ユーザのセッションの現在の状態の確認(たとえばユーザがログオンに成功したかの
チェック)
–
•
ActionFormによる入力チェックに加えて、より高度な入力チェックを行う
–
•
Actionクラスが未ログオンを検出したなら、 ログオンのためのユーザ名とパスワードのプロン
プトが表示される JSPページにリクエストをフォワードするなど
エラーが検出されたら、適切なメッセージを識別して入力用フォームに遷移を移す
ビジネスロジックを実行するメソッドの呼び出し
–
Actionクラス自身にロジックコードを埋め込むことも可能だが、適切なクラスへ委譲すべき
•
ユーザインタフェースの次のページを作成するために、サーバサイドのオブジェクトを
更新する
•
クライアントへのレスポンスを生成するJSPを識別するためのActionForwardオブジェク
トを返却する
–
ActionMappingオブジェクトのfindForward()メソッドで検索する
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
Actionクラス作成時の留意点
•
Actionクラスはスレッドセーフに
–
–
–
•
スレッドセーフコーディングを助ける重要な指針
–
–
•
Actionクラスではインスタンス変数ではなく、 ローカル変数のみを使う
ローカル変数は、それぞれのリクエストスレッドのスタックに(JVMによって)割り当てられて作
られるため、複数リクエストでの共有の心配をする必要がない
例外のトラップ
–
–
•
コントローラServlet(ActionServlet)は、Actionクラスのインスタンスをひとつだけ作成し、全て
のリクエストをそのインスタンスに委譲する
マルチスレッド環境内での正確に動作するように、 Actionクラスをコード化する必要あり
Servletのservice()メソッドを安全にコード化するのと同じ
Actionクラスから委譲されてビジネスロジックを実行するクラスは、データベースアクセスなど
さまざまな処理で例外を投げる可能性がある
perform()メソッド内で適切に例外を処理する
同一セッションの複数のリクエストにまたがって資源を確保しつづけない
–
適切なビューへコントロールをフォワードする前に、資源を解放する
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
アクションマッピング
•
•
StrutsコントローラServletは、 各リクエストURIを適切なActionクラスにどのよ
うにマップしなければならないか知る必要がある
URIとActionクラスとのマッピングは、Javaインタフェース「ActionMapping」で
カプセル化されている
URI:/hoge
ActionServlet
(またはその継承クラス)
XXXAction
アクションマッピングで
指定されたAction
YYYAction
クラスへ委譲
アクションマッピング
ZZZAction
URL:hogeのときは XXXAction
ActionMappingの主なプロパティ
プロパティ名
意味
type
このマッピングによって使用されるAction実装 クラスのJavaクラス名
name
このアクションでアクションフォームの名前
path
リクエストのURI
validate
このマッピングに関して、アクションフォームのvalidate()メソッドを起動して
入力チェックを行う場合はtrueにセットする
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
アクションマッピング設定ファイル
•
•
StrutsコントローラServletに対して、アクションマッピング設定を伝えるためには、
ActionMappingインタフェースを実装したJavaオブジェクトを作成すれば良い
ActionMapping Javaオブジェクトの作成は単調なプロセスであるため、XMLの設定
ファイル(sturts-config.xml)からフレームワークによって自動的に生成する仕組みが
用意されている
説明
XML要素
<struts-config>
struts-config.xmlの最も外側の要素
<form-beans>
アクションフォームの定義 <form-bean>を列挙する
<form-bean>要素は主に以下の属性で定義する
・name・・・このフォームBeanのユニークな識別子
アクションマッピングの中で参照する際に用いる
・type・・・フォームBeanの完全修飾されたJavaクラス名
<action-mappings>
アクションの定義<action>を列挙する
<action>要素は主に以下の属性で定義する
・path・・・アクションのURLのパス
・type・・・アクションクラスの完全修飾されたJavaクラス名
・name・・・このアクションで使う<form-bean>要素の名前
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
その他
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
Strutsの拡張ポイント
•
ActionServletの拡張
– ActionServletを継承したクラスを作成し、独自の動作を行わせることができるよう
配慮されている
• 主要な処理(process()メソッド)は、protectedメソッドを順に起動するようになっているた
め、必要に応じてお
• processPreprosecc()メソッド等のフックメソッド
•
ActionMappingの拡張
– マッピング情報に独自のデータを追加できるよう配慮されている
• ActionMappingを継承したクラスを作成
• <action>タグに独自の属性を追加、または<action>タグの子要素
<set-option>タグを利用して独自のプロパティを追加
•
フレームワークへのActionForm、ActionMappingのサブクラスの組み込み
– ActionForm、ActionMappingを拡張したサブクラスは、設定ファイルによってフ
レームワークへ組み込むことができる
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
社外秘
フォームの二重送信対策
•
トランザクショントークン
– Strutsフレームワークにおいてフォームの二重送信を防ぐ仕組み
– HttpSessionに保存したトークンと、リクエストに含まれるトークン(hiddenフィール
ド)を比較し、フォームの二重送信をチェックする
– トランザクショントークンは、セッション情報と時刻を基にリクエスト毎に毎回生成
される
– Actionクラスの以下のメソッドを参照のこと
•
•
•
•
protected java.lang.String generateToken(javax.servlet.http.HttpServletRequest request)
protected boolean isTokenValid(javax.servlet.http.HttpServletRequest request)
protected void resetToken(javax.servlet.http.HttpServletRequest request)
saveToken(javax.servlet.http.HttpServletRequest request)
– Strutsで管理するトランザクショントークンは、セッションに付き一つだけであるた
め、複数のブラウザで並行して遷移するようなアプリケーションでは利用できない
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ
OReilly Struts book(タイトル未定) 目次
社外秘
1. Introduction
2. Inside the Web Tier
3. Overview of the Struts Framework
4. Configuring the Struts Application
5. Struts Controller Components
6. Struts Model Components
7. Struts View Components
8. Custom Tag Libraries
9. Extending the Struts Framework
10. Exception Handling
11. Externalizing the Struts Validation
12. Internationalization and Localization
13. Struts and Enterprise JavaBeans (EJB)
14. Security in your Struts Web Applications
15. Using Tiles
16. Using Alternate Presentation Technologies
17. Using Workflow with Struts (May Change)
18. Logging in a Struts Application
19. Addressing Performance
20. Packaging your Struts Application
21 Struts Design Strategies
A. Struts API
B. Downloading and Installing Struts
C. Struts Resources
下線は、http://www.theserverside.com/resources/strutsreview.jsp
でレビュー中の章(2002/6/27現在)
D. Upgrading to Struts 1.1
基盤システム事業部 第一クロスアプリケーション開発担当
Copyright 2002 株式会社NTTデータ