错误处理原理
ErrorMvcAutoConfiguration
错误处理自动配置
自动配置
给容器中添加了以下组件
1、DefaultErrorAttributes
2、BasicErrorController
3、ErrorPageCustomizer
4、DefaultErrorViewResolver
错误处理过程
一但系统出现4xx或者5xx之类的错误
ErrorPageCustomizer
就会生效,定制错误的响应规则
registerErrorPages
注册错误页面的响应规则
getPath
path,值为/error
/error,就是从配置文件中,取出error.path的值
系统出现错误以后,来到error请求进行处理
web.xml注册的错误页面规则
就会来到/error请求
就会被BasicErrorController处理
BasicErrorController
基本错误处理
从配置文件中,获取server.error.path的值
如果,没有配置,获取error.path的值
如果,也没有配置,获取/error的值
处理默认/error请求
处理方式
提供了两种方式
处理/error请求
ModelAndView
产生html类型的数据
浏览器发送的请求,来到这个方法处理
ResponseEntity
产生json数据
其他客户端,来到这个方法处理
识别原理
根据请求头来识别
浏览器的请求头
客户端的请求头
ModelAndView
处理浏览器请求
去哪个页面,作为错误页面
错误页面,包含的页面地址,页面内容
resolveErrorView
获取所有的异常视图解析器
ErrorViewResolver得到ModelAndView
如果,得到了就返回
如果,得不到就为null
响应页面,去哪个页面
是由DefaultErrorViewResolver解析得到的
DefaultErrorViewResolver
默认错误视图解析器
ModelAndView
将视图名,拼在error/后面
默认SpringBoot可以去找到一个页面
比如,error/404
如果,模板引擎可以解析
这个页面地址,就用模板引擎解析
模板引擎可用的情况下
返回到errorViewName指定的视图地址
resolveResource
模板引擎不可用
就在静态资源文件夹下
找errorViewName对应的页面 error/404.html
如果,静态资源文件夹下存在,返回这个页面
如果,静态资源文件夹下不存在,返回null