我遇到了一个让我抓狂的问题。不确定这是 Tomcat 中的一个 bug 还是我的愚蠢,但就这样吧。
我设置了一个自定义错误 servlet,一些东西 like this .该设置有效,如果我模拟异常或 404 错误等 servlet 运行,错误页面会正确显示,响应代码为 500 或 400...好吧,它有效。
但是上面的设置不适合我,我需要转发到 JSP(我在 servlet 中执行操作,将适当的数据放入请求范围并转发到 JSP 进行显示)。
因此,在我的 servlet 的 doPost/doGet 方法中:
getServletContext().getRequestDispatcher(...).forward(request, response);
新设置在一点上有效。也就是说,servlet 运行并转发到 JSP,JSP 执行(我在其中放置日志指令并执行)但在浏览器中我得到默认的 tomcat 错误页面,而不是我的 JSP 的内容。
我还设置了<%@page isErrorPage="true"%>
在我的 JSP 中,但它是否存在并不重要,在 JSP 执行后,它的响应就消失了,我在浏览器中看到了默认的 Tomcat 错误页面。
现在有人知道为什么这不起作用吗?我要疯了!
谢谢大家!
附言我正在使用 Tomcat 5.5.26。
最佳答案
很可能只是抛出了一个异常。自定义错误页面是否显示异常详细信息?如果没有,您是否检查过/logs
文件夹中的服务器日志以查看是否发生了异常?如果您显示 ${exception}
(错误页面中有 isErrorPage="true"
),错误页面会说什么?请注意,isErrorPage="true"
不应出现在“普通”JSP 文件中。
关于java - Tomcat 忽略我的自定义错误 servlet/页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3798785/