response.sendError()显示Tomcat默认错误页面而不是web.xml指定的错误页面

时间:2012-10-29 03:15:03

标签: java tomcat servlets

我正在尝试使用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错误页面。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

解决:

我在错误处理servlet中忽略了NullPointerException的问题,因此tomcat默认为自己的错误页面。