俺の開発研究所

Ruby on Rails、Linux、Windowsを中心にIT技術系の備忘録とか。よく忘れるので。

*

Java(Seasar2)でインターセプターによるActionメソッドの前処理・後処理

      2014/08/31

Java(Seasar2)のSAStrutsで、Actionメソッドの前処理・後処理として、ログの出力や、認証チェック処理などの共通的な処理を入れたい。

そんな場合は、「Interceptor(インターセプター)」とやらを使用すれば楽にできるみたい。

とりあえずやってみた。

なお、今回のバージョンは以下です。

  • Eclipse 4.2 Juno
  • JDK 7u15
  • Apache Tomcat 7.0.35

スポンサード リンク

AbstractInterceptorクラスを継承したインターセプタークラスの作成

まずは、「AbstractInterceptor」クラスを継承し、「invoke」をオーバーライドさせる。

今回は、クラス名を「ActionInterceptor」とした。

以下のように、「Object object = invocation.proceed();」の部分で、Actionなどの制御に移るらしく、ここより前に処理を書けば前処理に、後ろに処理を書けば後処理になる。

なお、ここでは「Executeアノテーション(@Execute)」がついているActionメソッドかどうかを判定している。

「Executeアノテーション(@Execute)」がついているActionメソッドのみを対象としないと、全てのメソッドが引っかかってしまい、不要なログまで出ていたので。

Actionメソッドならほぼ全部に「Executeアノテーション(@Execute)」がついているはず。

app.diconにインターセプターを登録

続いて、上記で作成したインターセプターを「app.dicon」ファイルに登録する。

「app.dicon」ファイルの場所は、「/プロジェクト名/src/main/resources/app.dicon」。

実際の書き方はこんな感じ。

1行追加しただけ。

customizer.diconにインターセプターを追加

最後に、上記で作成したインターセプターを「customizer.dicon」ファイルに追加する。

「customizer.dicon」ファイルの場所は、「/プロジェクト名/src/main/resources/customizer.dicon」。

追加する場所は、「actionCustomizer」の下に「addCustomizer」で追加する。

以下のような感じ。

動作確認

以上の設定で、動作を確認してみる。

以下のように、無事に目的のログが出力されていました。

なお、Log4Jに関しては、こちらの記事参照⇒「Java(Seasar2)で「Log4J」によるログ出力の設定

GitHub(ソースはこちらで公開中)

Actionインターセプター(Actionメソッドの共通前処理・後処理)

参考サイト

Java、SAStruts、インターセプターを作る|マコトのおもちゃ箱 ?ぼへぼへ自営業者の技術メモ?

SAStrutsでログイン確認インターセプタを使う – idesaku blog

 - Java, Java(Seasar2)