3

我正在尝试使用 servlet 来处理简单 Web 应用程序的错误,并且它对于在我的 web.xml 中使用异常类型专门定义的任何错误都非常有效。但是,如果我尝试使用 HttpServletResponse.sendError 方法发送 HTML 错误代码,web.xml 似乎并没有发现错误,而只是显示 Tomcat 针对该特定 HTML 状态代码的默认错误页面。

我的错误处理 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 错误页面。

任何帮助是极大的赞赏!

4

1 回答 1

1

解决了:

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

于 2012-10-29T16:17:59.057 回答