jsp页面中主要有两种错误 一、通过JSTL<c:catch>标记来处理JSP页面所产生的错误,一般形式如下: 例:下面代码假定没有定义errobj对象。 |
<script type="text/javascript">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
| ||
这段代码没有指定var属性,尽管会捕获错误,但是不能做进一步的处理。应该为它增加一个var属性,如: <c:catch var="localerr" > 这次输出如下: Page with error in JSP directive and actions 使用localerr对象的stackTrace性质,可以得到出现错误时的一个java VM栈轨迹。可以使用EL<c:forEach> 循环标记来访问这个信息。修改这个例子如下: <c:catch var="localerr"> Page with error in JSP directive and actions org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(JspRuntimeLibrary.java:306) org.apache.jsp.example3.index_jsp._jspx_meth_c_catch_0(org.apache.jsp.example3.index_jsp:104) org.apache.jsp.example3.index_jsp._jspService(org.apache.jsp.example3.index_jsp:63) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) java.lang.Thread.run(Thread.java:595) 注意: 二、使用JSP错误页面转发处理错误 使用JSP的错误页面转发机制,可以使用一个特定的JSP页面来处理或显示错误。相对于前面的<c:catch>标记,这样能提供一个更为全局的错误处理机制,还能为多个JSP页面提供同一个错误页面来处理错误。 必须在一个JSP页面中通过<@% page %>指令指定errorPage属性,把一个JSP页面与一个错误页面相关联。如: <%@page errorPage="showerr.jsp" %> 看下面的一个实例: 1、这是一个会产生错误的页面index.jsp,并指出了错误处理页面。
public ErrorGenerator() { 2、看看错误处理页面是如何访问错误信息的 <html> <tr valign="top"> <tr valign="top"> <tr valign="top"> <tr valign="top"> <td> </table> </body> 说明: (II)在错误处理期间可以访问pagecontext.errorDate对象,这个对象类型为javax.servlet.jsp.ErrorDate,它有两个有用的性质: |