Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java errorPage指令起作用,但web.xml中的error page不起作用;T_Java_Jsp_Servlets_Error Handling - Fatal编程技术网

Java errorPage指令起作用,但web.xml中的error page不起作用;T

Java errorPage指令起作用,但web.xml中的error page不起作用;T,java,jsp,servlets,error-handling,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> <

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

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

但是,当我尝试使用web.xml进行全局操作时,如下所示:

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

java.lang.Throwable
/错误页
我只是得到一个空白页。。。我还尝试将/error.jsp放在location元素中。。但是我也不喜欢那样

我正在用一个jsp触发一个异常,该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>

发生错误,已通知开发团队。很抱歉给您带来不便。
我可以直接点击页面,没有错误

更新:


如果你有这个问题。。。确保您的链中没有过滤器吞咽异常!请参阅下面的答案。

确保/error.page是有效映射。如果错误页面本身有错误,则会导致tomcat显示其一般错误页面。通常,如果使用/ErrorPage.jsp或/ErrorPage,则需要在webapp/appname/目录或Servlet中有一个jsp文件(在部署描述符中有正确的url映射)


此外,如果您正在使用指令和DD,则该指令将始终优先。

确保如果
/error.page
映射到servlet,则该servlet实现所有相关的
do
方法(至少和)

我曾经遇到过类似的问题(空白页,没有显示),因为在我的初始实现中,我只实现了
doGet


实际的
do
调用可以聚合到一个方法上,因为在大多数情况下错误的处理非常相似。

不真实。。。结果是链条中有一个过滤器在吞咽和吐出异常。。。因此,它永远不会传播到足以被容器处理的高度!糟糕的状态!我把它拿了出来,现在一切都正常了。。。抱歉,噪音。

作为建议,而不是只向终端用户显示友好的消息,还应该考虑做一些有用的异常,比如记录或通知某人发生了什么。 您可以通过访问请求中设置的各种属性来实现这一点,例如:

request.getAttribute("javax.servlet.error.message");
并在bean或内联JSP代码块中使用这些属性


查看更详细的解释。

我想这正是原因。该页面是有效的映射,目前非常简单,没有返回错误。。我把它加到问题上了。。我也试过一个简单的jsphow关于使用而不是?大约500。我认为匹配异常类型更为棘手。当我尝试时,行为没有改变。。。对于它的价值,返回的空白页面在浏览器、视图源中有200右击空白页的状态,你看到什么了吗?我删除了指令,尝试让DD工作。url映射正确。能否重新启动tomcat服务器并重试?对DD的任何更改都需要重新启动。我重新启动并完成干净的构建的次数超过了今天的计数。error.page已映射,并在我浏览时按应有的方式显示。。我现在只是使用spring SimpleUrlHandlerMapping将.page URL映射到.jsp文件。。但是即使我在DD中切换到一个普通的JSP,我仍然得到空白页面。甚至当jsp基本上只是html时。@danb。我建议您将其映射到servlet,并验证在抛出异常时是否调用了servlet的doGet/doPost方法。我不确定发生了什么。。我将一个非常简单的servlet映射到/error.err并将其放在那里。。。它没有击中它。。“但我可以手动打,没问题。”丹布。覆盖Servlet中的
doService
,看看是否达到了这个目标。另外,从JSP中删除
指令。使用错误页面,您无论如何都应该访问该页面。我覆盖了所有do*()和service()方法,只需写出一些调试输出。。。没有爱。我现在也尝试为jasper将开发模式设置为false。。也没有帮助。顺便说一句,对不起我的回答错了。我把它删掉了。我不知道为什么我贴了它。我显然把它与
欢迎文件
的行为混淆了。见鬼,在我自己的项目中,我甚至将错误页面映射到前端控制器servlet上。一定是星期五了。好吧,回到你的问题上来:你有没有在你的日志中看到任何
非法状态异常:响应也已经出现了
。。日志中没有其他错误。发生在我们当中最好的:)但是你有资格接受这个答案。它说我必须等待2天才能接受。。。哦,好吧。。回到为自己制造问题上来。。。再次感谢。是的,这就是本页的重点,我只是想把管道安装好,这样我就可以在那个级别上做合理的错误报告。我最终通过我的日志系统记录了异常和一些关于用户的信息,然后通过电子邮件发送给我们的支持系统。