,上一篇:《SpringBoot对Spring MVC都做了哪些事?(二)》,默认情况下,Spring Boot提供了一个/error映射,以合理的方式处理所有错误,并在servlet容器中注册为“全局”错误页。对于机器客户端,它生成一个JSON响应,其中包含错误、HTTP状态和异常消息的详细信息。对于浏览器客户端,有一个以HTML格式呈现相同数据的“whitelabel”错误视图(要对其进行自定义,请添加一个解决错误的视图)。,如果要自定义默认错误处理行为,可以设置许多server.error属性。,要完全替换默认行为,可以实现ErrorController并注册该类型的bean定义,或者添加ErrorAttributes类型的bean以使用现有机制,但替换内容。,你还可以定义一个用@ControllerAdvice注释的类,以自定义JSON格式,以针对特定控制器和/或异常类型返回,如以下示例所示:,在前面的示例中,如果你的异常是由与AcmeController在同一个包中定义的控制器引发的,那么将使用CustomErrorType POJO的JSON表示,而不是ErrorAttributes表示。,如果要显示给定状态代码的自定义HTML错误页面,可以将文件添加到/error目录。错误页面可以是静态HTML(即,添加到任何静态资源目录下),也可以使用模板构建。文件名应为准确的状态代码或序列掩码。,例如,要将404映射到静态HTML文件,目录结构如下:,要使用FreeMarker模板映射所有5xx错误,目录结构如下:,对于更复杂的映射,你还可以添加实现ErrorViewResolver接口的bean,如以下示例所示:,系统默认提供的DefaultErrorViewResolver 在该类中我们可以看到默认从如下几个位置查找错误页。,对于不使用Spring MVC的应用程序,可以使用ErrorPageRegistrar接口直接注册ErrorPages。此抽象直接与底层嵌入式servlet容器一起工作,即使你没有Spring MVC DispatcherServlet,也可以工作。,自定义错误页,工作原理,在上一步中注册了BeanPostProcessorsRegistrar处理器。在该处理器中会注册一个ErrorPageRegistrarBeanPostProcessor错误页注册器的处理器。,以上的过程就实现了自定义错误页的注册实现。,跨源资源共享(CORS)是大多数浏览器实现的W3C规范,允许您以灵活的方式指定授权何种跨域请求。而不是使用一些不太安全、功能不太强大的方法,如IFRAME或JSONP。,从版本4.2开始,Spring MVC支持CORS。在Spring Boot应用程序中使用带有@CrossOrigin注释的控制器方法CORS配置不需要任何特定配置。可以通过使用自定义的addCorsMappings(CorsRegistry)方法注册WebMVCConfiguer bean来定义全局CORS配置,如下例所示:
© 版权声明
文章版权归作者所有,未经允许请勿转载。