Spring Bootの404エラー(リクエストしたアドレスのページがない)時に画面を表示するサンプルです。(確認環境:Spring Boot 2.5,JDK 11,thymeleaf 3)
目次
サンプル | 404エラー(リクエストしたアドレスのページがない場合)の表示 |
コントローラのクラス(MainController.java) | |
エラー情報を表示するファイル(error.html) | |
存在しないURLを指定した場合(404のエラー) | |
URLは存在するが返すページが存在しない場合(500のエラー) |
404エラー(リクエストしたアドレスのページがない場合)の表示
src/main/resourcesのtemplates配下にerror.htmlを配置します。
存在しないURLを指定して404エラーを発生させるとerror.htmlのエラーページが表示されます。
error.htmlの内容は独自に記載できます。
※error.htmlを配置しない場合は、Whitelabel Error Pageが表示されます。
起動してブラウザに以下のURLを入力するとindex.htmlが画面に表示されます。
http://localhost:8765/test1/
githubにコードがあります。
https://github.com/ut23405/springboot/tree/master/springboot-error404
コントローラのクラス(MainController.java)
package com.example.test1;
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を指定した場合(404のエラー)
以下のように404のエラーが表示されます。
URLは存在するが返すページが存在しない場合(500のエラー)
package com.example.test1;
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のエラーが表示されます。
関連の記事