如何在Spring Boot中自定义错误页面

x33g5p2x  于2022-10-04 转载在 Spring  
字(2.5k)|赞(0)|评价(0)|浏览(653)

Spring Boot作为自动配置的一部分,默认显示一个 "空白"错误页面。在本教程中,你将学习如何使用不同的视图解析器创建一个自定义错误页面。

定制错误页面的最简单方法是创建一个自定义视图,该视图将解析为名为 "error "的视图。最终,这取决于错误视图被解析时所在的视图解析器。这意味着在实践中,任何实现Spring的视图接口的Bean ID为 "error "的BeanNameViewResolver都会被解析。

用Thymeleaf添加一个标准错误页面

这个自定义错误模板应命名为 "error.html",并放在模板目录下,以便Thymeleaf模板解析器找到。对于典型的Maven构建,这意味着将其放在src/main/resources/templates中

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">    <head>       <style>div { background-color:lightblue; }</style>    </head>    <h1>Error!</h1>    <div class="errorPage">       <br />       <p>          There seems to be a problem with the page you requested (          <span th:text="${path}" />          ).       </p>       <p th:text="${'Details: ' + message}" />       <p th:text="${'Status: ' + status}" />    </div> </html>

这是带有自定义错误页面的项目树。

├── src │   ├── main │   │   ├── java │   │   │   └── com │   │   │       └── example │   │   │           └── demo │   │   │               └── DemoApplication.java │   │   └── resources │   │       ├── application.properties │   │       ├── static │   │       └── templates │   │           └── error.html

现在,如果你请求一个未找到的页面,就会发现你的错误页面。

正如你所看到的,一些属性在视图中是自动可用的。默认情况下,Spring Boot让以下错误属性在错误视图中可用。

timestamp -错误发生的时间

status - HTTP状态代码

error -错误的原因

exception - 异常的类别名称

message -异常信息(如果错误是由异常引起的)。

errors -来自BindingResult异常的任何错误(如果错误是由异常引起的)。

trace -异常的堆栈跟踪(如果错误是由异常引起的)。

path -错误发生时请求的URL路径。

如果你想让堆栈跟踪作为表达式属性包含在我们的Thymeleaf视图中,你需要在src/main/resources/application.properties中进行配置

server.error.include-stacktrace=always

使用自定义JSP错误页面

如果你使用JSP作为视图解析器,那么你可以在src/main/webapp/WEB-INF/views文件夹中放置一个名为 "error.jsp "的错误页面。

下面是一个示例页面,它能够输出一些导出的错误状态变量。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <html> <body>     <h1>Oops!!!</h1>     <table>           <tr>             <td>Error</td>             <td>${error}</td>         </tr>         <tr>             <td>Status</td>             <td>${status}</td>         </tr>         <tr>             <td>Message</td>             <td>${message}</td>         </tr>         <tr>             <td>Exception</td>             <td>${exception}</td>         </tr>         <tr>             <td>Trace</td>             <td>                 <pre>${trace}</pre>             </td>         </tr>     </table> </body> </html>

除此之外,我们必须在 src/main/resources/application.properties 中禁用默认的白标签页面,并使堆栈跟踪作为表达式属性包含在我们的视图中。

spring.mvc.view.prefix= /WEB-INF/views/ spring.mvc.view.suffix= .jsp server.error.whitelabel.enabled=false server.error.include-stacktrace=always

相关文章

微信公众号

最新文章

更多