当我把它放在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>
我可以直接点击页面而没有错误。
更新
如果您遇到此问题...请确保您的链中没有过滤异常的过滤器!请参阅下面的答案。
答案 0 :(得分:2)
确保如果/error.page
映射到servlet,那么Servlet将实现所有相关的do
方法(至少doPost和doGet)。
我遇到了类似的问题(空白页面,没有显示任何内容),因为在我最初的实施中,我只实现了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/以获取更详细的说明。