原文链接:https://aspiresoftware.in/blog/catalinatomcat-custom-error-report-valve-to-handle-errors-exceptions/
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
通过在server.xml文件中 增加上面代码 重启tomcat 400页面如下
自定义 400 错误页面方法
1.添加依赖
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-coyote</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-el-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jaspic-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-juli</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-util</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-util-scan</artifactId>
<version>${tomcat.version}</version>
</dependency>
2 创建类并继承 ErrorReportValve
public class CustomErrorReportValve extends ErrorReportValve
实现方法
@Override protected void report(Request request, Response response, Throwable t)
if (response.getStatus() == 400) {
StringBuilder sb = new StringBuilder();
//Give relative path of html
String pageString = getHtmlPage("./400.html");
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
sb.append(pageString);
Writer writer = response.getReporter();
if (writer != null) {
writer.write(sb.toString());
}
}
public String getHtmlPage(String path) throws IOException {
File file = new File("test");
file.exists();
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader(path));
try {
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.getProperty("line.separator"));
line = br.readLine();
}
} finally {
br.close();
}
return sb.toString();
}