如何在web.xml中指定默认错误页面?

我正在使用web中的元素.xml来指定当用户遇到某个错误(例如代码为404的错误)时的友好错误页面:<error-page>

<error-page>
        <error-code>404</error-code>
        <location>/Error404.html</location>
</error-page>

但是,我希望如果用户不符合 中指定的任何错误代码,他或她应该看到默认的错误页面。我如何使用 Web 中的元素执行此操作.xml<error-page>


答案 1

在 Servlet 3.0 或更高版本上,您可以指定

<web-app ...>
    <error-page>
        <location>/general-error.html</location>
    </error-page>
</web-app>

但是,由于您仍然使用Servlet 2.5,因此除了单独指定每个常见的HTTP错误之外,没有其他方法。您需要弄清楚最终用户可能面临的HTTP错误。在准系统Web应用程序上,例如使用HTTP身份验证,禁用目录列表,使用可能引发未处理的异常或未实现所有方法的自定义servlet和代码,然后您希望分别将其设置为HTTP错误401,403,500和503。

<error-page>
    <!-- Missing login -->
    <error-code>401</error-code>
    <location>/general-error.html</location>
</error-page>
<error-page>
    <!-- Forbidden directory listing -->
    <error-code>403</error-code>
    <location>/general-error.html</location>
</error-page>
<error-page>
    <!-- Missing resource -->
    <error-code>404</error-code>
    <location>/Error404.html</location>
</error-page>
<error-page>
    <!-- Uncaught exception -->
    <error-code>500</error-code>
    <location>/general-error.html</location>
</error-page>
<error-page>
    <!-- Unsupported servlet method -->
    <error-code>503</error-code>
    <location>/general-error.html</location>
</error-page>

这应该包括最常见的问题。


答案 2

您也可以执行类似操作:

<error-page>
    <error-code>403</error-code>
    <location>/403.html</location>
</error-page>

<error-page>
    <location>/error.html</location>
</error-page>

对于错误代码 403,它将返回页面 403.html,对于任何其他错误代码,它将返回页面错误.html。