我想在JAR的 META-INF / resources 文件夹中放置一个 error.jsp 页面,以便我的网络应用程序可能会被重定向到此常见错误页面。
但是,我能够将应用程序重定向到此 error.jsp 页面,但页面无法访问隐式exception
对象,以便打印堆栈跟踪。
虽然此页面中的exception
隐式对象为null
我已经在error.jsp中添加了<%@ page isErrorPage="true"%>
标记。
还有其他方法可以从这个jsp页面访问Exception对象吗?
答案 0 :(得分:1)
隐式异常对象将在JSP本身使用jsp中的某个代码或web.xml中的错误页面设置自动调用。
<%@page errorPage=”relativeURL/path of the error page” %>
在手动重定向的情况下,隐式异常对象将不可用,因为它就像普通的jsp页面一样。
JSP页面指定包含
page
指令和errorPage
属性的错误页面。发生无法处理的异常时,将丢弃输出流中任何未刷新的输出,并立即执行错误页面。错误页面表明它是一个带有
page
指令和isErrorPage
属性的错误页面。这使得未处理的异常在名为exception
的变量中可用。
如果您需要隐式异常对象,请不要手动重定向/转发到错误页面。
当您手动重定向到 error.jsp 页面时。您已将异常设置为某个地方作为请求属性。
在重定向到 error.jsp 页面之前,只需在请求中设置一个属性
request.setAttribute("exception",exception); // You have to set it manually
并在 error.jsp 页面中找回。
request.getAttribute("exception");
注意:您也可以使用c:set尝试使用 JSTL 。
答案 1 :(得分:0)
尝试使用转发而不是重定向:
request.getServletContext().getRequestDispatcher("error.jsp").forward(request, response);