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

Java 如何在web.xml中指定默认错误页?,java,jsp,servlets,web.xml,custom-error-pages,Java,Jsp,Servlets,Web.xml,Custom Error Pages,我使用web.xml中的元素指定用户遇到特定错误时的友好错误页面,例如代码为404的错误: 404 /Error404.html 但是,我希望如果用户没有遇到中指定的任何错误代码,他或她应该看到默认的错误页面。如何使用web.xml中的元素实现这一点?在Servlet 3.0或更高版本上,您可以指定 /general-error.html 但是,由于您仍然使用Servlet2.5,除了单独指定每个常见HTTP错误之外,没有其他方法。您需要确定最终用户可能会遇到哪些HTTP错误。例如,在

我使用web.xml中的
元素指定用户遇到特定错误时的友好错误页面,例如代码为404的错误:


404
/Error404.html

但是,我希望如果用户没有遇到
中指定的任何错误代码,他或她应该看到默认的错误页面。如何使用web.xml中的元素实现这一点?

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


/general-error.html
但是,由于您仍然使用Servlet2.5,除了单独指定每个常见HTTP错误之外,没有其他方法。您需要确定最终用户可能会遇到哪些HTTP错误。例如,在使用HTTP身份验证、禁用目录列表、使用自定义servlet和代码(可能引发未处理的异常或未实现所有方法)的裸体webapp上,您希望将其分别设置为HTTP错误401、403、500和503


401
/general-error.html
403
/general-error.html
404
/Error404.html
500
/general-error.html
503
/general-error.html

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

您也可以这样做:

<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

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

您还可以使用
为异常指定
,例如:

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

java.lang.Exception
/errorpages/exception.html
或使用
映射错误代码:

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

404
/errorpages/404error.html

您正在使用/瞄准哪个servlet容器,您的
web.xml
声明的servlet版本是什么?自Servlet 3.0以来,只有一种简单的方法。我使用的是Tomcat 6,Servlet 2.5。您可以指定一个常规错误页面,然后用
标记覆盖某些错误代码吗?@Tomas:Tomcat的家伙和您有同样的问题。规范中没有提到这一点,只有规范中的图14-10和
web.xml
XSD文件证明
是可选的,而不是必需的。看见指定元素没有子元素,因此将上述代码粘贴到Servlet 2.5 web.xml中会导致XSD验证错误。如果我评论他们,虽然,它的工作很好,谢谢@BalusC:WEB-INF中的general-error.html页面(在您的回答中提到)应该放在哪里?servlet 2.5有一个奇怪的问题,其中HTTP错误403,我已经创建了一个定义,error403.jsp页面位于WEB-INF中,因此,当尝试访问任何资源时,error403.jsp页面会加载,但error403.jsp中的图像和css不会加载,从而使页面看起来放错了位置。@Kaipa:只需使用URL相对路径,而不是webcontent相对路径即可CSS/JS/图像资源。许多初学者错误地认为这些资源是服务器端解析的,但实际上它们是客户端解析的。另见
<error-page>
    <error-code>404</error-code>
    <location>/errorpages/404error.html</location>
</error-page>