博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot自定义错误页面,Whitelabel Error Page处理方式
阅读量:6238 次
发布时间:2019-06-22

本文共 2004 字,大约阅读时间需要 6 分钟。

  hot3.png

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

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

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方法所在类)当中,添加如下代码:

@Beanpublic 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);   });}

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

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

@Beanpublic 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,如下图所示:

输入图片说明

下载图中的三个文件的压缩文件,这些文件使用 制作。

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

编译自:。

转载于:https://my.oschina.net/dabird/blog/593643

你可能感兴趣的文章
Robot Framework(十五) 扩展RobotFramework框架——远程库接口
查看>>
Eclipse中没有javax.servlet和javax.servlet.http包的处理办法
查看>>
汽车加工厂
查看>>
localStorage 和 sessionStorage 的用法
查看>>
day23-python操作数据库三
查看>>
第二次冲刺——第3天
查看>>
SpringMVC+Hibernate+Junit4+json基本框架近乎0配置
查看>>
Pro Android学习笔记(一三七):Home Screen Widgets(3):配置Activity
查看>>
Hadoop学习笔记(九)HDFS架构分析
查看>>
DB2数据库常用基本操作命令
查看>>
RHEL5.8安装Sybase 15.7_x86_64
查看>>
函数适配器bind2nd 、mem_fun_ref 源码分析、函数适配器应用举例
查看>>
武汉科技大学ACM :1002: A+B for Input-Output Practice (II)
查看>>
extjs中form.reset(true)出现的bug修复
查看>>
Some Android functions
查看>>
ORB-SLAM2学习4 initializer.h
查看>>
正向代理和反向代理
查看>>
1092 回文字符串(LCSL_DP)
查看>>
day01-Python介绍,安装,idea
查看>>
AX函数,将EXCEL列号转为列名
查看>>