如何在Tomcat中对多个错误代码使用同一错误页面



我正试图从tomcat servlet发送纯文本错误消息,以便应用程序可以向用户显示响应。

我的web.xml中有以下内容:

<error-page>
    <error-code>409</error-code>
    <location>/string_error.jsp</location>
</error-page>

string_error.jsp如下所示:

${requestScope['javax.servlet.error.message']}

这成功地为我提供了409响应的纯文本错误消息。但是,对于400/500范围内的任何错误,我都希望使用相同的页面,而无需为每个错误手动指定新的<error-page>块。我本以为<error-code>*</error-code>会实现这一点,但事实并非如此。Tomcat是否提供了这样的机制?

如果使用Servlet 3.0容器,如Tomcat 7.0,则可以省略<error-code>(或<exception-type>)元素,使其成为全局默认错误页面。

<error-page>
    <location>/string_error.jsp</location>
</error-page>

从Servlet 3.0开始,这些元素就是可选的。

但是,如果您还没有使用Servlet 3.0,则必须在容器级别对其进行配置。例如,在Tomcat6.0(一个Servlet 2.5容器)中,您需要创建一个自定义的错误报告阀类。然后可以将其指定为/conf/server.xml文件中<Host>元素的errorReportValveClass属性。

对于其他容器,请参阅其文档。

您可以通过Tomcat中的error-code或(java)exception-type添加error-page元素。我不认为它可以像你所建议的那样变得笼统。

<error-page>
    <error-code>404</error-code>
    <location>/404error.html</location>
</error-page>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/someJavaException.html</location>
</error-page>

相关内容

最新更新