目录
Spirng Boot自定义错误页面
Spirng Boot自定义错误页面
默认情况下不用配置。Spring Boot会自动跳转。但是必须是在static下建立一个error文件夹。且在error文件夹下放入404.html和500.html才生效。如果使用了如Thymeleaf模板引擎时,可以将错误模板页面放在template目录下
1.实现ErrorPageRegistrar接口
配置类要实现ErrorPageRegistrar类,并且要注入到容器中:可以使用@Component注入到容器中,就不需要使用@Bean
在ErrorPageRegistrar注册了根据不同的请求响应错误类型显示不同的网页,也可以根据异常类型来显示错误网页
@Component
public class MyErrorPage implements ErrorPageRegistrar {
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
// ①:按错误的类型显示错误的网页
// 有html后缀的为static,没有的话需要配置Controller
// 错误类型为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");
// ②:按具体某个异常显示错误的网页
/* 当某个异常即可以根据错误类型显示错误网页,由可以根据某个具体的异常来显示错误网页时,优先根据具体的某个异常显示错误的网页 */
ErrorPage argsException = new ErrorPage(IllegalArgumentException.class, "/args.html");
registry.addErrorPages(e404, e500, argsException);
}
}
2.使用@Bean注入至容器中(实现WebMvcConfigurer接口)
@Configuration
public class DefaultIndexView implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/")
.setStatusCode(HttpStatus.OK)
.setViewName("index");
registry.addViewController("/index.html")
.setStatusCode(HttpStatus.OK)
.setViewName("index");
WebMvcConfigurer.super.addViewControllers(registry);
}
@Bean
public LocaleResolver localeResolver() {
return new TestLocaleResolver();
}
// 自定义错误页面
@Bean
public ErrorPageRegistrar errorPageRegistrar() {
return new MyErrorPage();
}
}
3.配置对应的Controller
@Controller
public class PageController {
// 记录器
Logger logger = LoggerFactory.getLogger(getClass());
@RequestMapping("/404")
public String error404() {
return "404";
}
@RequestMapping("/500")
public String error500() {
return "500";
}
}