以下是对SpringBoot项目网页加载出现Whitelabel Error Page的解决的完整攻略:
1. 理解问题
在SpringBoot web项目的开发中,如果我们简单的提交一个请求却没有对相应的请求进行处理,或者请求的处理没有按照期望返回正确的结果时,会出现Whitelabel Error Page的页面显示,这通常表示我们的程序没有正确的处理一些异常或错误情况,导致系统出现了异常。
2. 解决方法
方法一:添加controller处理异常
我们可以自定义一个全局异常处理器,对异常和错误情况进行捕获和处理。示例代码如下:
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 处理自定义的业务异常
* @param e
* @return
*/
@ExceptionHandler(BizException.class)
@ResponseBody
public Result bizExceptionHandler(BizException e) {
log.error("发生业务异常!原因是:{}",e.getErrorMsg());
return Result.error(e.getErrorCode(), e.getErrorMsg());
}
/**
* 处理空指针的异常
* @param e
* @return
*/
@ExceptionHandler(NullPointerException.class)
@ResponseBody
public Result nullPointerExceptionHandler(NullPointerException e) {
log.error("发生空指针异常!原因是:",e);
return Result.error(ErrorCodeEnum.NULL_POINTER_ERROR);
}
/**
* 处理其他异常
* @param e
* @return
*/
@ExceptionHandler(Exception.class)
@ResponseBody
public Result exceptionHandler(Exception e) {
log.error("未知异常!原因是:",e);
return Result.error(ErrorCodeEnum.SYSTEM_ERROR);
}
}
可以看出,我们可以针对不同的异常进行不同的处理,最后都会返回一个自定义的Result对象,格式大致如下:
{
"code":"errorCode",
"msg":"errorMsg",
"data":null
}
方法二:设置应用上下文路径
如果直接运行SpringBoot项目编译后的打包运行文件,页面会加载出现Whitelabel Error Page的页面,这是因为默认情况下SpringBoot的应用上下文路径是“/”,而我们没有设置静态资源的访问路径。因此,我们需要在主类中需要添加以下注解:
@SpringBootApplication
public class SampleController {
public static void main(String[] args) {
SpringApplication application= new SpringApplication(SampleController.class);
application.setContextPath("/demo");
application.run(args);
}
}
在上述代码中,我们设置了应用上下文路径“/demo”。这将使应用程序的访问路径指向“http://localhost:8080/demo/”,而不是默认情况下的“http://localhost:8080/”。我们可以在/static目录下存放静态资源,它们会被自动配置用于访问,加载静态资源文件时直接使用href src即可,例如:
<link href="/demo/css/main.css" rel="stylesheet">
<script src="/demo/js/script.js"></script>
3. 总结
通过以上两种方法,我们可以消除SpringBoot项目在加载网页时可能出现的Whitelabel Error Page的问题。在实际开发中,我们可以根据异常类型和URL路径等多种因素灵活选择不同的解决方法。