Spring Boot-配置错误页面(404、500等)

在项目中为了友好化,对于错误页面,我们常常会使用自定义的页面。SSM框架组合时代,我们通常通过拦截或者在web.xml中设置对于错误码的错误页面:


    404
    /error/404.jsp

然而到了SpringBoot,web.xml消失了,SpringBootServletInitializer初始化servlet代替了web.xml。难道要再把web.xml加回去?这样虽然可以做到,但并不合理。下面提供了多种在SpringBoot中实现自定义错误页面的方法。

 

通过ErrorPageRegistrar实现

配置类要实现ErrorPageRegistrar类,并且要注入到容器中:

@Component
public class MyError implements ErrorPageRegistrar {
    @Override
    public void registerErrorPages(ErrorPageRegistry registry) {
        /*1、按错误的类型显示错误的网页*/
        /*错误类型为404,找不到网页的,默认显示404.html网页*/
        ErrorPage e404 = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
        /*错误类型为500,表示服务器响应错误,默认显示500.html网页*/
        ErrorPage e500 = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html");
        /*2、按具体某个异常显示错误的网页*/
        /*当某个异常即可以根据错误类型显示错误网页,由可以根据某个具体的异常来显示错误网页时,优先根据具体的某个异常显示错误的网页*/
        ErrorPage argsException = new ErrorPage(IllegalArgumentException.class, "/args.html");
        registry.addErrorPages(e404, e500,argsException);
    }
}

在ErrorPageRegistrar我们注册了根据不同的请求响应错误类型显示不同的网页,也可以根据异常类型来显示错误网页,下面我们写一个Controller来测试这些错误页面有没有显示出来:

@Controller
public class ErrorTestController {

    /*一、把错误抛在页面上
     * 1.错误异常自定义在org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration.class中。*/
    @RequestMapping("/error")
    /*抛出参数不合法的异常到页面*/
    public String erro(){
        throw new IllegalArgumentException("arg is empty");
    }
}

浏览器访问http://127.0.0.1:8080/erro2:

Spring Boot-配置错误页面(404、500等)_第1张图片

浏览器访问http://127.0.0.1:8080/errotest1:

Spring Boot-配置错误页面(404、500等)_第2张图片

你可能感兴趣的:(SpringBoot)