Spring boot定制错误页面

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

定制错误页面

浏览器访问
如果,程序出错了
需要返回一个符合项目网站风格的页面

有模板引擎的情况下
error/状态码

将错误页面命名为,错误状态码.html
放在模板引擎文件夹里面的,error文件夹下
发生此状态码的错误,就会来到对应的页面
这里写图片描述

DefaultErrorViewResolver

默认错误视图解析器
这里写图片描述
可以使用
4xx和5xx作为错误页面的文件名
来匹配这种类型的,所有错误

查找规则,精确优先

优先寻找,精确的状态码.html
如果,没有找到,就返回4xx.html页面

比如,寻找403错误页面
没有的话,返回4xx.html

ModelAndView

errorHtml返回页面
getErrorAttributes
这里写图片描述
ErrorAttributes
DefaultErrorAttributes实现了ErrorAttributes接口

作用,在页面共享信息
这里写图片描述
getErrorAttributes
实现了getErrorAttributes方法
这里写图片描述

获取信息

页面能获取的信息

timestamp:时间戳
status:状态码
error:错误提示
exception:异常对象
message:异常消息
errors:JSR303数据校验的错误都在这里

获取错误信息
可以在自定义错误页面,获取这些信息

比如,获取错误状态码、时间戳

<main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4">
    <h1>status:[[${status}]]</h1>
    <h2>timestamp:[[${timestamp}]]</h2>
</main>

这里写图片描述

没有模板引擎

如果,模板引擎下面,找不到这个错误页面
那么,就会去静态资源文件夹下寻找

Template下面没有error文件夹
那么,就会去静态资源文件夹下寻找error文件夹

以上都没有错误页面
就会默认来到SpringBoot默认的错误提示页面

ModelAndView
errorHtml如果,都没有找到,就会返回null
返回null之后,就会返回一个error视图
这里写图片描述

ErrorMvcAutoConfiguration

注入了一个errorBean
这里写图片描述
defaultErrorView
error返回的是defaultErrorView
这里写图片描述
代码中定义好的一段页面代码

看到的错误页面
就是采用SpelView解析出来的这段代码

<html>
<body><h1>Whitelabel Error Page</h1>
<p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p>
<div id='created'>${timestamp}</div>
<div>There was an unexpected error (type=${error}, status=${status}).</div>
<div>${message}</div>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/nangeali/article/details/82597822