【问题标题】:response.sendError() shows Tomcat default error page instead of web.xml specified error pageresponse.sendError() 显示 Tomcat 默认错误页面而不是 web.xml 指定的错误页面
【发布时间】:2012-10-29 03:15:03
【问题描述】:

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

我的错误处理 servlet 有几个“包罗万象”的通用错误页面,如果它与特定的错误代码不匹配,它将生成,所以错误根本没有进入 servlet,我完全不明白为什么会这样。

这是我的 web.xml 中的相关 sn-p:

<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 错误页面。

非常感谢任何帮助!

【问题讨论】:

    标签: java tomcat servlets


    【解决方案1】:

    已解决:

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

    【讨论】:

      猜你喜欢
      • 2011-10-27
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 2011-04-20
      • 2012-08-20
      • 1970-01-01
      相关资源
      最近更新 更多