如何在JSP页面中打印错误堆栈跟踪?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (56)

我在web.xml中设置了我的错误页面:

 <error-page>
  <exception-type>java.lang.Exception</exception-type>
  <location>/errors/error.jsp</location>
 </error-page>

现在我想在JSP上打印错误的堆栈跟踪。如何在JSP页面上打印错误的堆栈跟踪?

提问于
用户回答回答于

从内部设置的请求中获取参数,并使用它来打印和处理其他信息causemessage

<c:set var="exception" value="${requestScope['javax.servlet.error.exception']}"/>

并打印堆栈跟踪:

<!-- Stack trace -->
<jsp:scriptlet>
  exception.printStackTrace(new java.io.PrintWriter(out));
</jsp:scriptlet>
用户回答回答于

当请求被转发到错误页面时,container将设置以下参数:

  • javax.servlet.error.status_code
  • 的javax.servlet.error.exception
  • javax.servlet.error.message
  • javax.servlet.error.request_uri
  • javax.servlet.error.servlet_name
  • javax.servlet.error.exception_type

在你的错误JSP中做到这一点:

<%request.getAttribute("javax.servlet.error.exception").printStackTrace(new java.io.PrintWriter(out));

或者,如果你的错误页面被定义为带有页面指令的错误页面:

<%@ page isErrorPage="true" import="java.io.*"%>

该例外脚本变量将在JSP中声明。你可以使用scriptlet打印脚本变量:

exception.printStackTrace(new java.io.PrintWriter(out));

要么就这样做:

<jsp:scriptlet>
    exception.printStackTrace(response.getWriter())
</jsp:scriptlet>

扫码关注云+社区

领取腾讯云代金券