Actionを作成する (Struts)
Action
- Actionは、モデルを呼び出す為のクラスでorg.apache.struts.action.Actionを継承して開発者が作成する。
- Strutsは、モデルに関与しないため、通常のJavaであってもEJBであっても構わない。
- Actionは、HTTPリクエストにしたがってモデルを呼び出し、終了後はモデルにより生成された結果をコンテキストに保存する。
- Strutsでは、ActionServletが唯一のサーブレットであるため、ActionはActionServletからRequestProcessor経由で処理を引き継ぐ為サーブレットで、できることはActionでもほぼ実現可能・
- Action内でJavaBeanの生成やビジネスそうの検証を行うことも多く、画面遷移も制御するため、Strutsでは、このクラスの実装が大きなウエイトを占める。
Actionのexecute()メソッド
- Actionを作成する場合、開発者は、org.apache.struts.action.Actionを継承したクラスを作成し、execute()メソッドをオーバーライドする。
- execute()メソッドは、ビジネスロジックの呼び出しを実現し、フォワード先を指定する。
- execute()の引数
- ActionMapping : org.apache.struts.actionパッケージのクラスでActionに関する設定を管理する。
- ActionForm : org.apache.struts.actionパッケージのクラスで、HTMLの入力フォームのデータを管理する。
- HttpServletRequest : org.apache.struts.actionパッケージのクラスで、ユーザからの要求を表す。
- HttpServletRequest : org.apache.struts.actionパッケージのクラスで、ユーザへの応答を表す
- HttpServletRequest : org.apache.struts.action.Actionのexecute()メソッドの戻り値
- ActionForward : org.apache.struts.actionパッケージのクラスで、遷移先に関する設定を管理する。
ActionMappingとActionForward
- ActionMappingとActionForwardは、Struts設定ファイルに記述された内容を管理するクラスで開発者が作成するものではない。
- ActionMappingとは
- ActionMappingはリクエストされたURLとActionの関連付けを担当し、RequestProcesserにおいてリクエストのURLからActionを呼び出すときに利用される。
- どのActionを実行するのかを識別するコマンド名のようなものと考えることができる。
- また、Actionのexecute()メソッドの引数にもActionMappingがあるので、このメソッドの中で、ActionMappingが持つデータを取り出し、操作することも可能
- ActionMappingのインスタンスは、Struts設定ファイルのaction要素の情報から、自動生成される。
- ActionMappingのインスタンスは、action-mapping要素の中にある、action要素の数と同じだけ作成される。
- ActionMappingのもう一つの重要な役割は、ActionFormとActionの関連付けである。
- ActionMappingはリクエストされたURLとActionの関連付けを担当し、RequestProcesserにおいてリクエストのURLからActionを呼び出すときに利用される。
- ActionForwardとは
- ActionForwardは、Action終了後の遷移先を保持するクラスである。
- ActioForwardのインスタンスはStruts設定ファイルの記述にしたがって自動生成され、最終的にどこに遷移するかをAction内に記述する。
- Struts設定ファイルにおいてActionForwardを設定するのは、global-forwards要素、action要素にネストされるforward要素である。
- global-forward要素で指定するとActionForwardは複数のActionから参照され、グローバルフォワードという。
- forward要素で指定するActionForwardは、上位のaction要素で呼び出されるActionからのみ参照され、ローカルフォワードと言う。
ActionMappingのメソッドとAction
- ActionMappingはorg.apache.struts.config.ActionConfigのサブクラスで、ActionConfigで用意されているメソッドを利用することにより、action要素の各属性値を取得することができる。
- path ——– getPath()
- type ——— getType()
- input ———-getInput()
- name ———- getName()
- scope ———- getScope()
- validate ———–getValidate()
- ActionMappingメソッド
- findForward(String name)
- 引数で指定した文字列をname属性に持つforward要素の情報をActionForwardインスタンスとして返す
- action要素にネストされたforward要素のname属性を調べ、見つからない場合は、global-forward要素にネストされたforward要素のnameを調べる。
- そして、引数とマッチするものがあればそのforward要素をActionForwardとして返し、みつからなければnullを返す
- getInputForward()
- action要素のinput属性で指定されるリソースへのActionForwardインスタンスを返す
- findForward(String name)
Actionの処理
- ActionFormを使用可能なように型変換を行う
- ビジネスロジックを呼び出す
- ビジネスロジックの処理結果をコンテキストに登録
- 遷移先のActionForwardをRequestProcessorに返す