12.Spirng Boot自定义错误页面

目录


Spring 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";
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未禾

您的支持是我最宝贵的财富!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值