SpringBoot自定义错误页面

在SpringBoot中,除了SpringBoot默认的错误页面外,我们也可以自定义页面,当然了,我们首先需要添加依赖

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-thymeleafartifactId>
        dependency>

除了Thymeleaf之外,Freemarker的依赖应该也没问题,但是没有进行测试,这里就以Thymeleaf为例。
自定义错误页面,我们首先需要做的就是对错误页面进行配置,这里,我通过实现接口ErrorPageRegistrar的方式来进行错误配置。

package com.boot.servlet.api.bootservlet.error;

import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.ErrorPageRegistrar;
import org.springframework.boot.web.server.ErrorPageRegistry;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;

@Component
public class MyErrorPageRegistrar implements ErrorPageRegistrar {

    @Override
    public void registerErrorPages(ErrorPageRegistry registry) {
        ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/404");
        registry.addErrorPages(errorPage404);
    }
}

当然了,我们还可以通过配置的方式对ErrorPageRegistrar进行注入

    @Bean
    public ErrorPageRegistrar errorPageRegistrar(){
        return new MyErrorPageRegistrar();
    }

在上面的自定义错误页面的配置中,我们已经将404错误重定向到/404,此时,只需要在Controller中有这个RequestMapping路径的定义,即可成功跳转到我们的自定义错误页面中

package com.boot.servlet.api.bootservlet.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class ErrorController {

    @GetMapping("/404")
    public String error404() {
        return "/error/404";
    }
}

需要注意的是这里返回的文件/error/404需要存放于resources目录下的templates中。

你可能感兴趣的:(SpringBoot,2.x,错误页面,spring,boot)