Spring Boot自定义错误页面,Whitelabel Error Page处理方式

我已经是Spring Framework框架的忠实粉丝。对于企业软件开发者来说它提供了对常见问题的通用解决方案,包括那些你在未来开发中没有意识到的问题。但是,它构建的J2EE项目变得比较臃肿,需要被一种新的解决方案替代。

我最大的抱怨就是最开始使用spring Framework构建项目十分缓慢和复杂,比如构建一个包含JPA的MVC应用。为改变这种情况,Spring Boot应运而生了。

Spring Boot以一种新的微服务的方式来替代以Spring Framework构建项目的传统方式,我已经计划在后续的项目开发中使用它。它已经帮我们做了90%的工作,剩下10%的工作需要我们自己去完成。对于我来说,自定义错误页面就是其中之一。比如404错误,如果不处理的话,会出现“This application has no explicit mapping for /error, so you are seeing this as a fallback.”的错误信息,如图所示:

Spring Boot默认使用嵌入式Tomcat,默认没有页面来处理404等常见错误。因此,为了给用户最佳的使用体验,404等常见错误需要我们自定义页面来处理。

我们需要用org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer类来实现该功能,在Spring Boot的启动类(main方法所在类)当中,添加如下代码:

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {

   return (container -> {
        ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html");
        ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
        ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html");

        container.addErrorPages(error401Page, error404Page, error500Page);
   });
}

这是使用Java8的lambda表达式来简化实现的方式,在代码中创建了三个ErrorPage实例来处理三个通用的HTTP错误状态码,并将他们添加到Container当中。ErrorPage类是一个封装了错误信息的类,它可以在Jetty和Tomcat环境下使用。

这是使用Java 7内部类的一个等价实现方式:

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {

    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {

            ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html");
            ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
            ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html");

            container.addErrorPages(error401Page, error404Page, error500Page);
        }
    };
}

错误页面需要放在Spring Boot web应用的static内容目录下,它的默认位置是:src/main/resources/static,如下图所示:

点击链接下载图中的三个文件的压缩文件,这些文件使用 HTML5 Boilerplate制作。

现在,就可以看到一个简易版本的错误页面,可以根据自己的需要对它进行一些美化。

编译自:http://www.sporcic.org/2014/05/custom-error-pages-with-spring-boot/

http://blog.csdn.net/github_32521685/article/details/50198467

时间: 2024-11-04 22:22:32

Spring Boot自定义错误页面,Whitelabel Error Page处理方式的相关文章

spring boot 支持freemarker提示Whitelabel Error Page

错误:This application has no explicit mapping for /error, so you are seeing this as a fallback. 前提: 1.配置URL正确 (XXXController中的@requestMapping(value="/xxxx")) 2.springboot的配置文件:application.yml或application.properties中视图解析器的配置正确 分析原因:spring-boot会自动加载

IIS下自定义错误页面配置的两种方式(亲测可行)--IIS服务器

网站自定义错误页面的设置,大家应该都知道它的重要性……不多说,下面带大家一步步在IIS下设置网站自定义错误页面…… 1.首先进入你的网站主页,找到[错误页](注意是IIS下的错误页不是.NET错误页),双击[错误页] 2.这样就进入了错误页面,点击[编辑]或者双击状态代码行,打开“编辑自定义错误页面” 3.填写状态码,响应操作处选择第二项[在此网站上执行],输入URL 4.查看错误页面相对根目录的位置,按照示例填写就可以的.然后依次设置其它页面 5.当然还可以通过修改配置文件(web.confi

spring security +spring boot 自定义 403 页面

用的spring security  做的权限控制, 当  访问没有权限, 跳转 会跳到默认403 页面.不符合当前项目需求. 一下是解决方式: package com.ycmedia; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.au

SpringBoot启动项目之后,访问页面出现Whitelabel Error Page

话说万事具备,只欠东风- 蹭闲暇时来跑个SpringBoot项目玩玩,把一切配置依赖准备就绪之后打算运行项目. Staring...... 接着,在浏览器输入地址 localhost:8080/hello 很惊讶的看见 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sat Jan 18 22:33:51 CST 202

springboot的页面出现Whitelabel Error Page

Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Fri Sep 06 21:41:26 CST 2019 There was an unexpected error (type=Not Found, status=404). No message available 导致的原因就是主方法放的包,位置有问题,我百度很多都是

SpringBoot接口服务处理Whitelabel Error Page

转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50915979 <SpringBoot接口服务处理Whitelabel Error Page> <Maven依赖载入错误的情况分析> <Java Webproject转换为基于Maven的Webproject> <Maven Webproject执行异常:Maven.multiModuleProjectDirectory system propery

Spring Boot Learning(错误处理)

三种方式: 第一种: Spring Boot 将所有的错误默认映射到/error, 实现ErrorController 这时候需要定义一个Controller去实现ErrorController package com.example.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.web.ErrorControll

翻译:ASP.NETMVC自定义错误页面真的简单吗?

如果你在设置asp.net mvc自定义错误页面时遇到问题,这并不止你一个人.惊讶之余你的做法是正确的,没有起到作用的原因是其一部分错误是由asp.net管道处理的,另一部分是由iis直接处理. 通常情况 (我期望是这种情况,在一些其他框架/服务器上) 我们只需要在一个地方配置自定义错误页就可以了,无论怎么哪儿引发的错误.就像这样︰ <customErrors mode="On"> <error code="404" path="404.

HAProxy自定义错误页面

HAProxy自定义错误页面 HAProny自定义错误页面有两种方式,一种是由haproxy本机提供错误页面,第二种是将错误重定向到一台专用来提供错误界面的sorry server上来提供错误页面 由haproxy本机提供错误页面 haproxy还可以捕捉错误码,然后根据错误码将错误页面重定向到本机的错误页面上,由haproxy来提供错误页面 语法 errorfile errorcode /path/to/error/indexfile 示例:修改haproxyp配置文件,在default配置段