SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

続 Struts 2入門

Struts2のインターセプタの選定(1)

続 Struts 2入門(2)

Struts 2.1.8.1で実装されているインターセプタ

 現在リリース版となっているStruts 2.1.8.1のインターセプタ一覧は以下のとおりです。

 表中のxworkは、Struts 2の前身であるフレームワークであるwebworkで実装されている機能です。

表1 インターセプタ一覧
サーブレット属性管理用インターセプタ
インターセプタ エイリアス 概要
Cookie Interceptor cookie Cookieの値をMap型のフィールドへ自動的に格納する(参照のみ可)。
ClearSessionInterceptor clearSession Actionが起動すると同時にHTTPセッションの中身を消去する。
Create Session Interceptor createSession Actionが起動すると同時にHTTPセッションが生成される。
ActionMapping Parameters Inteceptor actionMappingParams Struts 2のActionMappingを取り出し、内容を追加する処理を行えるようにする。
Scope Interceptor scope Actionクラスのフィールドを、セッション属性またはアプリケーション属性にて取り扱えるようになる。
Servlet Config Interceptor servletConfig サーブレット属性全般を特定フィールドにて取り扱えるかどうかを、実装インターフェイスからチェックし、合致すればバインドする。
Roles Interceptor roles JavaWEBアプリケーションの認証仕様(JAAS)にて取得できる認証情報から、Actionクラスに対してアクセス可能なロールであるかを判定する。
Action制御用インターセプタ
インターセプタ エイリアス 概要
Chaining Interceptor chain 元actionのフィールドを引き継ぐリクエストのフォワードを行う。
Execute and Wait Interceptor execAndWait Actionクラスを別スレッド(BackgroundProsess)にて動かし、Actionクラスの動作が完了するまでResultにwaitを返すようにする。スレッドはセッション単位。
Exception Interceptor exception 例外を検出した場合、設定されている例外とresultの対応マッピングを見て、例外ごとに定義されたresultを返すようする。
Prepare Interceptor prepare prepare()メソッドにて、Actionの実行の前処理を実装することができるようになる。
Token Interceptor token リクエストごとに発行される一時トークンをチェックし、合致しなければActionが起動されない。<s:token />で利用できる。トークンはセッションに保存される。
Token Session Interceptor tokenSession TokenInterceptorと同様の動きをする。違いは遷移チェックエラーを検出した場合、セッション情報を復元する。
Validation Interceptor validation Actionに対して入力チェック(Validator)を利用できるようになる。
Workflow Interceptor workflow ValidatorInterceptorとセットで使われる。入力チェックエラーが発生するとinputへ遷移する。
AnnotetionWorkfliwInterceptor annotetionWorkflow アノテーション定義されたメソッドの実行順序を比較し、定義された実行順序に応じて実行をする。
パラメータ制御用インターセプタ
インターセプタ エイリアス 概要
Alias Interceptor alias リクエストパラメータを別名のフィールドへコピーする。
Conversion Error Interceptor conversionError TypeConverterによる型変換エラーを入力チェックへ変換する。
ExternalReferenceInterceptor externalRef 2.1.8.1では未実装。パッケージ外でカプセル化されたBeanを外部参照で解決した場合に、該当Actionクラスでも外部参照を利用できるようにする。Xwork2.2.7での機能。
File Upload Interceptor fileUpload ファイルアップロード機能の実装を手助けするインターセプタ。
I18n Interceptor i18n HTTPリクエストの内容からロケール(i18n)対応を行い、リソースバンドルから正しいロケールで文字列を返す。メッセージ全般に使われる。
Model Driven Interceptor modelDriven Actionクラスのmodelフィールドに対して、getModel()で実装した内容のインスタンスがバインドされる。
Scoped Model Driven Interceptor scopedModelDriven 設定したスコープ(セッション、コンテキスト)にてmodelインスタンスを扱い、setModel()にて実装した内容からインスタンスを取得することができる。
Parameters Interceptor params リクエストパラメータをActionのフィールドへ自動的にバインドする。
Static Parameters Interceptor staticParams struts.xmlにて定義された定数をActionクラスへバインドする。
Message Store Interceptor store ActionクラスのメッセージをHTTPセッションへ保持する。
Checkbox Interceptor checkbox 未チェックのチェックボックス項目がリクエストパラメータから欠けないようにhiddenパラメータを自動生成し、本来のフィールドへ値またはfalseが必ず入るようにする。
JSONValidationInterceptor jsonValidation Validatorで検出した入力チェックエラー情報をJSON形式に変換し、HTTPレスポンスを行うところまでを提供する。
Multiselect Interceptor multiselect 未チェックの複数選択ボックス(MultiBox)の項目がリクエストパラメータから欠けないようにhiddenパラメータを自動生成し、本来のフィールドへ値またはfalseが必ず入るようにする。
バンドル済プラグイン拡張インターセプタ
インターセプタ エイリアス 概要
ActionAutowiringInterceptor autowiring Struts2-Springプラグインとして分離。Springプラグインを導入することでActionクラスをSpring管理下にすることができ、また、このautowiringの宣言は必要ない。
SessionContextAutowiringInterceptor sessionAutowiring Struts2-Springプラグインとして分離。Springプラグインを導入することでSpringのSessionContextをActionへ扱うことができる。
デバッグ用インターセプタ
インターセプタ エイリアス 概要
DebuggingInterceptor debugging 開発モードをTRUEとし、リクエストパラメータにdebug=[デバッグ出力タイプ]を指定することで利用できるデバッグモードを稼動。
Logger Interceptor logger 起動されたActionクラス名がログに出力される。
Timer Interceptor timer Actionの処理終了にまでかかった時間をミリ秒でログに出力する。
Profiling Interceptor profiling Struts 2の各機能のプロファイリング機能を使うことができる。稼働したインターセプタ、Actionクラス、Resultの実行順序、実行時間を出力する。

 表中には、Struts 2内で使われるエイリアス名(alias)も記載しています。インターセプタを利用する際には、クラス名でなくこの名前を指定します。また、インターセプタ・スタックと呼ばれる、インターセプタの集合を指定することもできます(以降、インターセプタ・スタックをスタックと表記します)。

次のページ

この記事は参考になりましたか?

続 Struts 2入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 東 浩二(アズマ コウジ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5024 2010/04/22 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー