我试图使用servlet处理错误的一个简单的Web应用程序,并且它工作得很好用专门定义任何错误异常类型在我的web.xml。不过,如果我尝试使用HttpServletResponse.sendError方法发送HTML错误代码,web.xml中似乎没有拿起错误,并只显示该特定HTML状态码Tomcat的默认错误页面。response.sendError()显示的Tomcat默认的错误页面,而不是web.xml中指定错误页面
我的错误处理servlet有一对“catch-all”通用错误页面,如果它不匹配某个特定的错误代码,它会生成一个通用错误页面,所以错误根本就没有进入servlet,而我完全不明白为什么这样做。
这里是我的web.xml的相关片段:
<error-page>
<error-code>400</error-code>
<location>/Error</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/Error</location>
</error-page>
这里是我试图在servlet发送错误的例子:
if (thing.getSizeOfThing() == null || thing.getQuantity() <= 0) {
response.sendError(400);
}
我的错误处理的servlet将显示基于错误代码或异常类型,以及所生成的误差小服务程序相关的错误页面。正如我所说,这是例外伟大的工作,而不是工作在所有使用sendError方法发送错误。
我已确保在响应最小的内容大小的问题不是问题(或不应该是)因为我没有收到浏览器特定的错误页面,但是tomcat的通用400错误页面。
任何帮助,非常感谢!