博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot自定义错误页面
阅读量:6867 次
发布时间:2019-06-26

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

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

转载地址:http://sikfl.baihongyu.com/

你可能感兴趣的文章
Azure实践系列 2:Azure AD中的用户管理
查看>>
MyEclipse的Web项目开发:Maven插件jetty服务器的关闭
查看>>
js 验证手机号码
查看>>
让搜索引擎快速收录网站
查看>>
我的友情链接
查看>>
虚拟机中安装Centos
查看>>
MySQL数据库MyISAM存储引擎转为Innodb
查看>>
expdp和impdp常用参数
查看>>
我的友情链接
查看>>
35 个你也许不知道的 Google 开源项目
查看>>
CentOS minimal 安装
查看>>
线程通信之looper之用法--主线程和工作线程
查看>>
web前端开发工程师必备技能
查看>>
我的友情链接
查看>>
c#中的get和set
查看>>
WPF-002 下拉列表的简单实现
查看>>
企业IT管理体系可借助于业界的最佳实践和标准
查看>>
JavaScript常用数组操作方法,包含ES6方法
查看>>
jsp 获取请求url
查看>>
asp.net menu 控件样式 范例(转载)
查看>>