我正在尝试使用servlet来处理简单Web应用程序的错误,并且它在我的web.xml中使用exception-type专门定义的任何错误都能正常工作。但是,如果我尝试使用HttpServletResponse.sendError方法发送HTML错误代码,则web.xml似乎不会收到错误,只显示该特定HTML状态代码的Tomcat默认错误页面。
我的错误处理servlet有一些“全能”通用错误页面,如果它与特定的错误代码不匹配就会产生,所以错误只是没有进入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将根据错误代码或异常类型以及生成错误的servlet显示相关的错误页面。正如我所提到的,这对于异常非常有用,并且根本不适用于使用sendError方法发送的错误。
我确保响应中内容大小最小的问题不是问题(或者不应该是),因为我没有收到特定于浏览器的错误页面,而是tomcat的通用400错误页面。
非常感谢任何帮助!
答案 0 :(得分:1)
解决:
我在错误处理servlet中忽略了NullPointerException的问题,因此tomcat默认为自己的错误页面。