ダウンロード サンプルファイル (12.3 MB)
(2)Execute And Wait Interceptor
Actionクラスを別スレッド(BackgroundProsess)にて動かし、Actionクラスの動作が完了するまでResultにwaitを返すようにします。スレッドはセッション単位で動作します。
詳細については『続・Struts 2入門(1)Struts 2の同期処理を手助けするExecuteAndWaitインターセプタ』を参照してください。
(3)Exception Interceptor
例外を検出した場合、設定されている例外とresultの対応マッピングを見て、例外ごとに定義されたresultを返すようになります。Action単位で指定も可能で、共通の指定も可能になっています。
次のサンプルは、設定ファイルであるstruts.xmlに例外設定を付け加えたものです。
<struts>
<!-- 継承用の設定 -->
<package name="base" extends="struts-default" abstract="true">
…(省略)…
<!-- 共通Result定義 -->
<global-results>
<result name="ApplicationException">/ApplicationException.jsp
</global-results>
<global-exception-mappings>
<exception-mapping exception="seren.lumi2.exception.ApplicationException"
result="ApplicationException"/>
</global-exception-mappings>
</package>
</struts>
上のサンプルでは、Strust2のデフォルト設定を継承したbaseパッケージという共通定義をpackage要素で作成しています。その中で、global-exception-mappingsにて例外と対応する遷移先ID、global-resultsにて、共通する遷移先IDと遷移先を定義することができます。この例では、seren.lumi2.exception.ApplicationExceptionを検出すると、遷移先がApplicationExceptionになり、つまりApplicationException.jspが表示されるようになります。
では実際にサンプルで確認をしてみましょう。ブラウザで「http://127.0.0.1:8080/interceptors/exception/start.action」を開きます。

この画面で「Actionを起動する」ボタンを押して起動されるActionクラスでは、次のような実装をしています。
// 使用するpackage名
@Namespace(value="/exception")
// 利用するstruts.xmlのpackage要素名
@ParentPackage("base")
// Actionクラスの遷移先
@Results({
@Result(name="success" , location="success.jsp"),
})
/**
* ExceptionInterceptor利用サンプル。
*/
public class ExceptionSampleAction extends ActionSupport {
private static Logger log = Logger.getLogger(ExceptionSampleAction.class);
// 開始画面を表示
@Action(value="start")
public String start() throws Exception {
return "success";
}
// アプリケーション例外を送出するAction
@Action(value="execute")
public String execute() throws Exception {
log.debug("アプリケーション例外を送出します");
throw new ApplicationException("アプリケーション例外です");
}
}
「Actionを起動する」ボタンを押すと、execute()メソッドが起動します。このメソッドではstruts.xmlにて定義した例外クラスであるApplicationExceptionを送出します。すると定義どおり、ApplicationException.jspへ遷移し、次の画面が表示されます。

この記事は参考になりましたか?
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
