【问题标题】:How can I use the same error page for multiple error codes in Tomcat?如何在 Tomcat 中为多个错误代码使用相同的错误页面?
【发布时间】:2011-09-24 16:16:28
【问题描述】:

我正在尝试从 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 范围内的任何错误,而无需为每个错误手动指定新的 &lt;error-page&gt; 块。我会假设&lt;error-code&gt;*&lt;/error-code&gt; 会做到这一点,但事实并非如此。 Tomcat 是否提供了一种机制来做到这一点?

【问题讨论】:

    标签: java javascript jsp tomcat


    【解决方案1】:

    如果您使用的是 Servlet 3.0 容器,例如 Tomcat 7.0,那么您可以省略 &lt;error-code&gt;(或 &lt;exception-type&gt;)元素,使其成为全局默认错误页面。

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

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

    但是,如果您还没有使用 Servlet 3.0,那么您必须在容器级别对其进行配置。例如,在 Tomcat 6.0(这是一个 Servlet 2.5 容器)中,您需要创建一个自定义错误报告阀类。然后,您可以将其指定为/conf/server.xml 文件中&lt;Host&gt; elementerrorReportValveClass 属性。

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

    【讨论】:

    • 谢谢!不幸的是,我还不能使用 Tomcat 7。
    【解决方案2】:

    您可以在 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多