SpringBoot2.0学习之自定义错误页面
首先,什么是自定义错误页面?
在程序出现错误的时候,跳转到自己定义好的页面。
那么,为什么要自定义错误页面?
当然是为了更好的用户体验,总不能让用户点着点着看到个500的错误吧… 也拉低了自己的水平不是?
ps: 什么是好的用户体验,就是用户用这个软件的时候感觉自己生活在2050年,而且所有的操作他一看就明白。o( ̄︶ ̄)o
接下来,我们怎么自定义错误页面呢?
1. 创建配置类,通过重写WebServerFactoryCustomizer的customize接口来创建自定义的错误页面。代码如下:
@Configuration
public class ErrorPageConfig {
@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
return factory -> {
ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND,
"/error/404");
ErrorPage errorPage400 = new ErrorPage(HttpStatus.BAD_REQUEST,
"/error/500");
ErrorPage errorPage500 = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR,
"/error/500");
factory.addErrorPages(errorPage400, errorPage404,
errorPage500);
};
}
}
2. 创建错误跳转的控制器
@Controller
@RequestMapping("/error")
public class ErrorController {
@RequestMapping("/404")
public String to404(){
return "error/404";
}
@RequestMapping("/500")
public String to500(){
return "error/500";
}
3. 创建错误页面
404.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>这里是404错误页面</h1>
</body>
</html>
500.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>这里是500错误页面</h1>
</body>
</html>
4. 编写测试代码进行测试,如下:
@RequestMapping("/err")
public String err(){
int i = 1/0;
return "index";
}
@RequestMapping("/exception")
public String exception() throws Exception {
throw new Exception("手动抛出异常");
}