Spring Boot 基本

Spring Bootで特定のHTTPステータスコードが返却された場合に独自エラー画面を表示してみた

Springフレームワークでは、特定のHTTPステータスコード(例:404(Not Found))が返却された場合に独自のエラー画面に遷移するようにすることができる。

今回は、Spring Bootプロジェクトで、404(Not Found)エラーが発生した場合とそれ以外の場合でエラー画面の遷移先を変更するサンプルプログラムを作成してみたので、共有する。

前提条件

下記記事の実装が完了していること。

IntelliJ IDEA上でGradleを使ってWeb画面のSpring Bootプロジェクトを作成してみたSpring Bootのプロジェクトを新規作成を「IntelliJ IDEA」のメニューから実施しようとしたところ、無料の「Commun...



サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから追加/変更したプログラムである。

404(Not Found)エラーが発生した場合のHTMLファイルの内容は以下の通りで、templates/errorフォルダ下に配置している。

なお、上記ファイル内で利用している${status}, ${error}, ${message}は、DefaultErrorAttributesというクラスに含まれる属性である。詳細は以下のサイトを参照のこと。
https://spring.pleiades.io/spring-boot/docs/2.0.0.M7/api/org/springframework/boot/autoconfigure/web/reactive/error/DefaultErrorAttributes.html



また、404(Not Found)以外のエラーが発生した場合のHTMLファイルの内容は以下の通りで、templatesフォルダ下に配置している。

さらに、初期表示画面の内容は以下の通りで、404(Not Found)エラー、404(Not Found)以外のエラーを発生させるボタンを配置している。



また、コントローラクラスの内容は以下の通りで、初期表示処理と、404(Not Found)以外のエラーを発生させる処理を記載している。なお、404エラーはコントローラクラスのパスが存在しない場合に発生するので、ここには記載していない。



サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) Spring Bootアプリケーションを起動し、「http://(サーバー名):(ポート番号)/」とアクセスすると、以下の画面が表示される。
サンプルプログラムの実行結果_1

2) 初期表示画面で「このボタンを押すと404エラーが発生します」ボタンを押下すると、以下のように、404.html画面に遷移することが確認できる。
サンプルプログラムの実行結果_2_1

サンプルプログラムの実行結果_2_2

3) 初期表示画面で「このボタンを押すと404以外のエラーが発生します」ボタンを押下すると、以下のように、error.html画面に遷移することが確認できる。
サンプルプログラムの実行結果_3_1

サンプルプログラムの実行結果_3_2

要点まとめ

  • 特定のHTTPステータスコードが返却された場合に遷移するエラー画面は、templates/errorフォルダ下に「(HTTPステータスコード).html」という名前で作成すればよい。
  • 一般的なエラー画面は、templatesフォルダ下に「error.html」という名前で作成すればよい。