1、在Web项目开发过程中,错误信息提示页是一个重要的组成部分。为了不让用户直接看见异常信息的页面,此时,就需要有一个错误信息提示页。错误页面一般都属于静态页面,这里在src/main/resources/static目录下创建error-404.html。
首先,在pom.xml里面新增几个配置,在src/main/resources目录下面要加下,不然无法进行加载,修改完毕之后,maven -> Update Project一下。
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
5 https://maven.apache.org/xsd/maven-4.0.0.xsd">
6 <modelVersion>4.0.0</modelVersion>
7 <parent>
8 <groupId>org.springframework.boot</groupId>
9 <artifactId>spring-boot-starter-parent</artifactId>
10 <version>2.3.5.RELEASE</version>
11 <relativePath /> <!-- lookup parent from repository -->
12 </parent>
13 <groupId>com.example</groupId>
14 <artifactId>demo</artifactId>
15 <version>0.0.1-SNAPSHOT</version>
16 <name>demo</name>
17 <description>Demo project for Spring Boot</description>
18
19 <properties>
20 <java.version>1.8</java.version>
21 <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
22 </properties>
23
24 <dependencies>
25 <dependency>
26 <groupId>org.springframework.boot</groupId>
27 <artifactId>spring-boot-starter-web</artifactId>
28 </dependency>
29
30 <dependency>
31 <groupId>org.springframework.boot</groupId>
32 <artifactId>spring-boot-starter-test</artifactId>
33 <scope>test</scope>
34 <exclusions>
35 <exclusion>
36 <groupId>org.junit.vintage</groupId>
37 <artifactId>junit-vintage-engine</artifactId>
38 </exclusion>
39 </exclusions>
40 </dependency>
41 <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
42 <dependency>
43 <groupId>org.hibernate</groupId>
44 <artifactId>hibernate-validator</artifactId>
45 <version>6.1.0.Final</version>
46 </dependency>
47 </dependencies>
48
49 <build>
50 <plugins>
51 <plugin>
52 <groupId>org.springframework.boot</groupId>
53 <artifactId>spring-boot-maven-plugin</artifactId>
54 </plugin>
55 </plugins>
56 <resources>
57 <resource>
58 <directory>src/main/resources</directory>
59 <includes>
60 <include>**/*.properties</include>
61 <include>**/*.yml</include>
62 <include>**/*.xml</include>
63 <include>**/*.p12</include>
64 <include>**/*.html</include>
65 <include>**/*.jpg</include>
66 <include>**/*.png</include>
67 </includes>
68 </resource>
69 </resources>
70 </build>
71
72 </project>
搞一个html静态界面放到src/main/resources/static下面,如下所示:
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>Insert title here</title>
6 </head>
7 <body>
8
9 <img alt="错误页面" src="images/error.jpg">
10
11 </body>
12 </html>
建立错误页配置,springboot2.x此类EmbeddedServletContainerCustomizer已经被替换为WebServerFactoryCustomizer,如下所示:
1 package com.demo.config;
2
3 import org.springframework.boot.web.server.ConfigurableWebServerFactory;
4 import org.springframework.boot.web.server.ErrorPage;
5 import org.springframework.boot.web.server.WebServerFactoryCustomizer;
6 import org.springframework.context.annotation.Bean;
7 import org.springframework.context.annotation.Configuration;
8 import org.springframework.http.HttpStatus;
9
10 /**
11 *
12 * @author
13 *
14 * springboot2.x此类EmbeddedServletContainerCustomizer已经被替换为WebServerFactoryCustomizer
15 *
16 */
17 @Configuration
18 public class ErrorPageConfig {
19
20 @Bean
21 public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {
22 WebServerFactoryCustomizer<ConfigurableWebServerFactory> customizer = new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
23
24 @Override
25 public void customize(ConfigurableWebServerFactory factory) {
26 // 定义404错误页
27 HttpStatus notFound = HttpStatus.NOT_FOUND;
28 System.out.println(notFound);
29 // 定义404错误页
30 ErrorPage errorPage404 = new ErrorPage(notFound, "/error-404.html");
31 // 追加错误页,替换springboot默认的错误页
32 factory.addErrorPages(errorPage404);
33 // 设置tomcat服务器的端口号
34 factory.setPort(8081);
35 }
36
37 };
38 return customizer;
39 }
40
41 }
配置完错误页之后,会根据用户请求时的http状态码跳转到不同的页面进行显示。
运行效果,如下所示: