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);});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

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

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {return new EmbeddedServletContainerCustomizer() {@Overridepublic 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);}};
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

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

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

Spring Boot自定义错误页面相关推荐

  1. Spring boot定制错误页面

    定制错误页面 浏览器访问 如果,程序出错了 需要返回一个符合项目网站风格的页面 有模板引擎的情况下 error/状态码 将错误页面命名为,错误状态码.html 放在模板引擎文件夹里面的,error文件 ...

  2. HOW-TO:带有Spring MVC的Tomcat中的自定义错误页面

    默认的Tomcat错误页面看起来很可怕. 此外,它们可能会公开有价值的信息,包括服务器版本和异常堆栈跟踪. Servlet规范提供了一种通过web.xml配置异常行为的方法. 可以配置对特定Java异 ...

  3. SpringBoot自定义错误页面

    Spring Boot以一种新的微服务的方式来替代以Spring Framework构建项目的传统方式,我已经计划在后续的项目开发中使用它.它已经帮我们做了90%的工作,剩下10%的工作需要我们自己去 ...

  4. 017_SpringBoot异常处理方式-自定义错误页面

    1. 使用maven构建SpringBoot的名叫spring-boot-exception1项目 2. pom.xml <project xmlns="http://maven.ap ...

  5. SpringBoot异常处理-自定义错误页面

    自定义错误页面 SpringBoot 默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制. 一旦程序中出现了异常SpringBoot 会像/error 的url 发送请求. ...

  6. react 错误边界_React with GraphQL和错误边界中的自定义错误页面

    react 错误边界 by Abi Noda 通过Abi Noda React with GraphQL和错误边界中的自定义错误页面 (Custom error pages in React with ...

  7. ASP.NET自定义错误页面(转)

    ASP.NET自定义错误页面(转) ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件.Application_Error 事件以及应用程序配置文件 (Web ...

  8. ASP.NET Core中显示自定义错误页面-增强版

    之前的博文 ASP.NET Core中显示自定义错误页面 中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取. 在这篇博文中改用middleware实现,并且放在独 ...

  9. apache 设置404 页面_SpringBoot自定义错误页面

    SpringBoot请求错误如404可能看到如下页面: 有时可能需要自定义错误页面针对不同的http.status,如404/400. [1]解决方法 ① 注册错误页面 如下所示: @Componen ...

最新文章

  1. Sources for NFC/RFID inspection ( Soft Materials )
  2. Apache Camel 2.18发布–包含内容
  3. SpringCloud企业实战专栏
  4. Go语言详细介绍:logo和版本
  5. PHP将swf转为gif,swf怎么转换成gif 怎么把swf转换成gif
  6. 天九共享全方位孵化增添活力 助力独角兽企业开辟更多新大陆
  7. 06-Sentinel限流熔断应用实践
  8. python 语音转文字_音频转文字这种刚需,我用python写了个软件,免费不限时
  9. 文人教你说祝福——古语祝福
  10. 存储服务器在监控中的作用,监控项目中存储服务器IPSAN云存储方案的优劣势对比...
  11. 小酷智慧地图3D导览v1.0.82 打卡定位 地图打卡
  12. google earth engine (GEE)面向对象分类 代码
  13. 豆瓣2018年度电影榜单
  14. zabbix简单安装部署
  15. 绕过WAF(防火墙)进入网站后台
  16. javascript事件轮询(event loop)详解
  17. python将列表转换成集合_python集合变成列表
  18. C++和Win32实现录音器功能
  19. 程序员买房买车成功理财参考书
  20. 后端总结(Tomcat Nginx)

热门文章

  1. js微信抢红包脚本代码_使用AutoJs实现微信抢红包的代码
  2. 简介Linux磁盘管理与文件系统
  3. php动态渲染和静态渲染,php,vue,vue-ssr 做出来的页面有什么区别?
  4. python之.py生成.exe可执行文件
  5. python笔记之序列(tuple的基本使用和常用操作)
  6. C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
  7. test.php创建,基于phpstudy简单快速搭建一个php程序
  8. cad自动标注界址点_这样绘制cad施工图,提升效率至少3倍以上!
  9. 宝塔php的opcache模块未载入,宝塔面板CPU负载过高使用opcache扩展的解决方法
  10. 大学生java考试题库6_《JAVA程序设计》期末考试试题_(六)