1. 例外のハンドリング
1-1. 実習テーマ
- Spring定義ファイルに例外処理を追加
- 例外画面JSPを作成
1-2.今回やること および 学習ポイント
- Spring定義ファイルに例外処理を追加
- やること
- Spring 設定ファイルに例外と例外ページのマッピング情報を追加
- 学習ポイント
- Spring 設定ファイルでの例外ハンドリング設定方法の把握
- やること
- 例外画面JSPを作成
- やること
- 例外画面JSPを作成する
- 学習ポイント
- 例外発生時に専用のエラー画面(JSP)に遷移する
- 例外エラーメッセージの出力方法
- やること
2. 技術解説 - 例外処理
2-1. Spring Framework の例外処理
- 例外は全てのレイヤで発生する可能性があるが、それをハンドリングする箇所は、基本的にプレゼンテーション層に実装する
-
Spring Framework における例外のハンドリングは次の方法で実装することが基本となる
- アプリケーション共通で例外ハンドリングする SimpleMappingHandlerExceptionResolver クラスを利用する
- Controller ごとに個別に例外のハンドリングを実装する
2-2. アプリケーション共通で例外をハンドリングする
- アプリケーション共通の例外ハンドリングは SimpleMappingHandlerExceptionResolver を使用
- Spring 定義ファイルで SimpleMappingHandlerExceptionResolver オブジェクトを生成、DIコンテナに登録する
-
ハンドリングしたい例外クラスは SimpleMappingHandlerExceptionResolver の exceptionMappings プロパティに複数登録できる
<!-- @@@@ @@@@ 例外ハンドラ SimpleMappingHandlerExceptionResolver を Bean 定義 @@@@ @@@@ --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!-- @@@@ @@@@ exceptionMappings プロパティに @@@@ ハンドリングしたい例外を複数登録 @@@@ --> <property name="exceptionMappings"> <props> <!-- @@@@ ハンドリングする例外クラス @@@@ --> <prop key="org.springframework.dao.DataAccessException">error/dberror</prop> <prop key="java.lang.Exception">error/syserror</prop> </props> </property> </bean>
2-3. 例外時のエラーメッセージを画面に表示する
-
例外エラーメッセージ表示例
<body> <h1>例外発生</h1> <dl style="color:red"> <!-- @@@@ SimpleMappingHandlerExceptionResolver で捕捉 @@@@ した例外オブジェクトは、JSP では ${exception} @@@@ にマッピングされている @@@@ --> <dt>例外クラス名</dt><dd><c:out value="${exception['class'].name}"/></dd> <dt>メッセージ</dt><dd><c:out value="${exception.message}"/></dd> </dl> <hr /> <a href="main">書籍管理メイン画面</a> </body>
3. ハンズオン実習
STEP07 ハンズオン
-
ハンズオン資料「 STEP07 - 例外をハンドリングする 」に従い実習を開始してください。
- アプリケーション共通の例外ハンドリング実装方法を把握しましょう
- 発生した例外のエラーメッセージを画面に表示させましょう
次のステップ
次のステップは「 STEP08 - AOPを使って走行ログを出力させてみる 」です。こちらも非常に重要な仕組みです!