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

时间:2011-08-15 14:34:33

标签: java jsp servlets web.xml custom-error-pages

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

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

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

执行此操作

3 个答案:

答案 0 :(得分:229)

在Servlet 3.0或更高版本上,您只需指定

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

但是当你还在使用Servlet 2.5时,除了单独指定每个常见的HTTP错误之外别无他法。您需要确定最终用户可能面临的HTTP错误。在一个准系统webapp上,例如使用HTTP身份验证,具有禁用的目录列表,使用自定义servlet和代码可能会抛出未处理的异常或者没有实现所有方法,那么你想为HTTP错误设置它401分别为403,300和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>

应该涵盖最常见的那些。

答案 1 :(得分:21)

您也可以这样做:

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

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

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

答案 2 :(得分:7)

您还可以使用<error-page>为例外指定<exception-type>,例如:

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/errorpages/exception.html</location>
</error-page>

使用<error-code>映射错误代码:

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