原文链接: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 htmlString 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();}