SpringBoot 定制应用程序错误页面

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41723615/article/details/88372172

最简单的方法就是创建一个自定义视图,让解析出的视图名为error。

这一点归根到底取决于错误视图解析时的视图解析器。
实现了Spring的View接口的Bean,其 ID为error(由Spring的BeanNameViewResolver
所解析)。

  • 如果配置了Thymeleaf,则有名为error.html的Thymeleaf模板。
  • 如果配置了FreeMarker,则有名为error.ftl的FreeMarker模板。
  • 如果配置了Velocity,则有名为error.vm的Velocity模板。
  • 如果是用JSP视图,则有名为error.jsp的JSP模板。

因为我们的阅读列表应用程序使用了Thymeleaf,所以我们要做的就是创建一个名为
error.html的文件,把它和其他的应用程序模板一起放在模板文件夹里。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" th:href="@{/style.css}">
    <title>Title</title>
</head>
<body>
  <div class="errorPage">
      <span class="oops">Oops!</span><br/>
      <img th:src="@{/MissingPage.png}">
      <!--显示请求路径-->
      <p>There seems to be a problem with the page you requested
         (<span th:text="${path}></span>").</p>

      <!--显示错误明细-->
      <p th:text="${'Details:' + message}"></p>
  </div>

</body>
</html>

这个自定义的错误模板应该命名为error.html,放在模板目录里,这样Thymeleaf模板解析器才能找到它。在典型的Maven或Gradle项目里,这就意味着要把该文件放在src/main/resources/templates中,运行时它就在Classpath的根目录里。

基本上,这个简单的Thymeleaf模板就是显示一张图片和一些提示错误的文字。其中有两处
特别的信息需要呈现:错误的请求路径和异常消息。但这还不是错误页上的全部细节。默认情况
下,Spring Boot会为错误视图提供如下错误属性。
 timestamp:错误发生的时间。
 status:HTTP状态码。
 error:错误原因。
 exception:异常的类名。
 message:异常消息(如果这个错误是由异常引起的)。
 errors:BindingResult异常里的各种错误(如果这个错误是由异常引起的)

 trace:异常跟踪信息(如果这个错误是由异常引起的)。
 path:错误发生时请求的URL路径。
其中某些属性,比如path,在向用户交待问题时还是很有用的。其他的,比如trace,用起来要保守一点,将其隐藏,或者用得聪明点,让错误页尽可能对用户友好。
请注意,模板里还引用了一张名为MissingPage.png的图片。图片的实际内容并不重要,所以尽情挑选适合你的图片就好了,但请一定将它放在src/main/resources/static或src/main/resources/public里,这样应用程序运行时才能找到它。

猜你喜欢

转载自blog.csdn.net/qq_41723615/article/details/88372172