SpringBoot项目网页加载出现Whitelabel Error Page的解决

  • Post category:http

以下是对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路径等多种因素灵活选择不同的解决方法。