SpringBoot 404エラー時に画面を表示する

Spring Bootの404エラー(リクエストしたアドレスのページがない)時に画面を表示するサンプルです。(確認環境:Spring Boot 2.5,JDK 11,thymeleaf 3)

目次

サンプル 404エラー(リクエストしたアドレスのページがない場合)の表示
  コントローラのクラス(MainController.java)
  エラー情報を表示するファイル(error.html)
  存在しないURLを指定した場合
  URLは存在するが返すページが存在しない場合(500のエラー)

404エラー(リクエストしたアドレスのページがない場合)の表示

src/main/resourcesのtemplates配下にerror.htmlを配置するだけです。

流れ

存在しないURLを指定して404エラーを発生させエラーページを表示します。

起動してブラウザに以下のURLを入力するとindex.htmlが画面に表示されます。

http://localhost:8765/test1/

githubにコードがあります。
https://github.com/ut23405/springboot/tree/master/springboot-error404

コントローラのクラス(MainController.java)

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MainController {

	@GetMapping("/test1")
    public String input1() {
        return "test1/index";
    }
}

指定のURLアクセスでページを返します。

エラー情報を表示するファイル(error.html)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>test</title>
<style>
	table {border-collapse: collapse;width: 500px;}
	td {border: 1px solid black;padding-left:5px;}
</style>
</head>

<body>
<table style>
<tr><td>timestamp</td><td th:text="${timestamp}"></td></tr>
<tr><td>status</td><td th:text="${status}"></td></tr>
<tr><td>error</td><td th:text="${error}"></td></tr>
<tr><td>exception</td><td th:text="${exception}"></td></tr>
<tr><td>message</td><td th:text="${message}"></td></tr>
<tr><td>errors</td><td th:text="${errors}"></td></tr>
<tr><td>trace</td><td th:text="${trace}"></td></tr>
<tr><td>path</td><td th:text="${path}"></td></tr>
</body>
</html>

エラー時にエラー内容を表示するhtmlファイルで、各項目はDefaultErrorAttributesクラスの属性です。

以下は、springのDefaultErrorAttributesのリンクです。
https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/api/org/springframework/boot/web/servlet/error/DefaultErrorAttributes.html

存在しないURLを指定した場合(400のエラー)

以下のように404のエラーが表示されます。

URLは存在するが返すページが存在しない場合(500のエラー)

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MainController {

	@GetMapping("/test1")
    public String input1() {
        return "test111/index";
    }
}

11行目は存在しないページを指定しています。

以下のように500のエラーが表示されます。

関連の記事

SpringBoot 例外のサンプル(ControllerAdvice)

△上に戻る