当前位置: 首页 > 编程笔记 >

Spring Boot项目中出现的Whitelabel Error Page问题处理

贺俊杰
2023-05-05

Whitelabel Error Page 白页

什么叫Whitelabel Error Page(也叫白页),就是SpringBoot中HTTP请求出现异常的说明页,如下图:

白页内容会展示状态码、path、以及错误原因等情况,但是真正发布在线上生成环境一般不允许出现这样的情况,更多的是自定义的404页面或者500页面等。

那么现在我们就来了解下什么情况会产生白页的情况,以及如何解决这种情况。我们就以404的情况去了解其原因。

当我们系统出错或者访问地址不正确时就会这个页面,这个页面是Spring Boot自带的白色错误页面 当然这个不是我们想要的,如果我们把这个展示给用户看,用户也会一脸懵,看不懂,那么我们既要页面美观,不是一堆看不懂的英文,也要让用户明确的知道是什么问题 接下来我们就去Spring Boot 官方文档去看看如何解决。 进入到Spring Boot官方文档中,我们找到

Customize the ‘whitelabel’ Error Page

(自定义白板错误页面),点击进入

文档中第一段给我们介绍了当我们服务出错后就会显示SpringBoot自带的whitelabel错误页面,第二段告诉我们可以在application.properties中配置

server.error.whitelabel.enabled=false

来关闭SpringBoot中自带的错误页面,当然我们也可以使用模板技术来覆盖自带的错误页面,如果使用Thymeleaf模板需要新建一个error.html模板,如果使用FreeMarker,需要定义error.ftl模板,一般来说需要定义一个Controller来处理/error路径,除非使用配置类替换默认配置,这两种方式都是可以的。详细处理可以参照“Error Handing”

1.创建一个thymeleaf的error.html页面

<!DOCTYPE HTML><html xmlns:th="http://www.thymeleaf.org"><head>


2.创建一个Controller实现ErrorController,添加一个具有@ProductMapping且具有Produces属性的公共方法,这里我们的Produces类型是text/html

CustomizeErrorController.java 用于页面跳转,请求服务报错


@Controller@RequestMapping("${server.error.path:${error.path:/error}}")public class CustomizeErrorController implements ErrorController {


3.创建一个类,并添加@ControllerAdvice注解,这个类可以用来处理自定义JSON或者异常类型返回,将返回的结果显示在error.html页面上

CustomizeErrorAdvice.java


//处理JSON数据或者服务异常报错,并返回显示到前端@ControllerAdvicepublic class CustomizeErrorAdvice {


需要编写一个异常处理类,用于填写异常信息

CustomizeException.java


public class CustomizeException extends RuntimeException {


创建一个异常信息枚举类,用于常用异常常量编写

CustomizeErrorCode.java


public enum CustomizeErrorCode{


在可能出现异常的地方将异常抛出,部分代码如下

@GetMapping("/article/detail/{id}")
 类似资料:
  • 我得到一个错误--“请指出一个有效的Swagger或OpenAPI版本字段。支持的版本字段是Swagger:”2.0“和那些与OpenAPI:3.0.n匹配的版本字段(例如,OpenAPI:3.0.0)。”当我将生成的json从/api-docs粘贴到editor.swagger.io时。我有一些观察。 > localhost:8080/v3/api-docs/yields-此json在edito

  • 在尝试运行我的第一个HelloWorld应用程序时,我发现了以下异常: org.springframework.beans.factory.beanDefinitionStoreException:未能读取候选组件类嵌套异常为java.lang.IllegalStateException:由于找不到org/springframework/dao/dataAccessException,无法计算or

  • 我有一个带有myapp-core和myapp-web模块的myapp父pom类型maven项目。myapp-core模块作为依赖项添加到MyApp-Web。 myapp-core模块中的所有类都位于根包com.myapp.core中,而myapp-web模块中的所有类都位于根包com.myapp.web中 主要的application.java也在com.myapp.web包中。由于我的核心模块根

  • 我已经用Flutter在VS代码上创建了一个应用程序,在我开始准备构建应用程序之前,没有任何问题。我开始将包名从“com.example.careona19”更改为“com.covid19rsa.app”,但随后开始出现以下错误:

  • 在使用gradle--stacktrace之后,我得到以下错误: 运行gradle后--信息 你知道这个问题怎么解决吗?

  • Springboot 项目使用 RMapCache 保存数据,发现值出现 \x00 \#1 使用 StringRedisTemplate 保存数据,可用 \#2 使用 RMapCache 保存数据, 出现\x00, 不可用 大致结构如下 demo project springboot: 2.7.18 redisson: 3.26.1 / 3.21.0 redis: Redis-x64-5.0.14

  • 本文向大家介绍浅谈导入JavaWeb 项目出现的问题,包括了浅谈导入JavaWeb 项目出现的问题的使用技巧和注意事项,需要的朋友参考一下 前言: 环境: windown 10 JDK 1.8 Tomcat 7 eclipse 导入项目 下面错误是出现的问题 解决方法 第一步右击项目名,选择配置 properties 第二步找到 Java Build Path ,选择 Libraies,再选择 A

  • 本文向大家介绍解决springboot项目上传文件出现临时文件目录为空的问题,包括了解决springboot项目上传文件出现临时文件目录为空的问题的使用技巧和注意事项,需要的朋友参考一下 最近写文件上传到服务器读取的代码,前端使用FormData上传,服务端用MultipartFile接收,自己测试了下MultipartFile对象有什么东西,结果一般属性都能出来,测试getInputStrea(