errorPage指令有效,但web.xml中的错误页面不起作用?

时间:2010-05-07 17:46:43

标签: java jsp servlets error-handling

当我把它放在JSP的顶部时,我得到jsp异常导致转发到我的错误页面...

<%@ page errorPage="/error.page" %>

但当我尝试使用web.xml全局地执行此操作时:

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.page</location>
</error-page>

我只是得到一个空白页面...我也尝试将/error.jsp放在location元素中..但是也不喜欢它...

我正在使用一个只包含此内容的jsp触发异常:

<%if(true)throw new RuntimeException("test exception");%>

我确实从tomcat中看到了控制台中的异常,但是我无法在没有每个jsp的指令的情况下显示该错误页面...我在这里错过了一些简单的东西吗?

更新

映射

/error.page(使用spring),内容如下:

<%@ page isErrorPage="true"%>
<html>
<head></head>
<body>
<div class="error">
An error has occurred, the development team has been notified. Sorry for the inconvenience.
</div>
</body>
</html>

我可以直接点击页面而没有错误。

更新

如果您遇到此问题...请确保您的链中没有过滤异常的过滤器!请参阅下面的答案。

5 个答案:

答案 0 :(得分:2)

确保如果/error.page映射到servlet,那么Servlet将实现所有相关的do方法(至少doPostdoGet)。

我遇到了类似的问题(空白页面,没有显示任何内容),因为在我最初的实施中,我只实现了doGet

实际的do调用可以收敛于单个方法,因为在大多数情况下,错误的处理非常相似。

答案 1 :(得分:2)

虚幻......事实证明链条中有一个过滤器正在吞咽并吐出异常......所以它从未传播到足够高的容器来处理!糟糕的形式!我把它拿出来了,现在一切都按预期工作了...对不起噪音。

答案 2 :(得分:1)

确保/error.page是有效的映射。如果您的错误页面本身有错误,则会导致tomcat显示其通用错误页面

答案 3 :(得分:0)

通常,如果您使用/ErrorPage.jsp或/ ErrorPage,则需要在webapp / appname /目录或Servlet中使用JSP文件(在部署描述符中使用正确的url-mapping)

此外,如果您使用该指令以及DD,则该指令将始终优先。

答案 4 :(得分:0)

作为一个建议,您不应该只向最终用户显示友好的消息,而应该考虑对异常做一些有用的事情,例如记录它或通知某人它发生了。

您可以通过访问请求中设置的各种属性来执行此操作,例如:

request.getAttribute("javax.servlet.error.message");

并在bean或内联JSP代码块中使用这些属性。

查看http://metatations.com/2011/11/20/global-exception-handling-in-java/以获取更详细的说明。

相关问题