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

我使用 Xml中的 <error-page>元素来指定友好的错误页面,当用户遇到一个特定的错误,如代码为404的错误:

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

但是,我希望如果用户不满足 <error-page>中指定的任何错误代码,他或她应该看到一个默认错误页面。如何使用 Xml中的元素实现这一点?

249594 次浏览

在 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>

这应该包括最常见的那些。

你也可以这样做:

<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。

您也可以使用 <exception-type>为异常指定 <error-page>,例如:

<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>