日期:2014-05-16  浏览次数:20357 次

jsp中错误处理页面-isErrorPage="true"
举例说明:mustBeError.jsp

<%@ page contentType="text/html; charset=gb2312"
language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*" errorPage="error.jsp" %>
<%
//这个页面一定会出错。
int i=0;
int j=1;
out.println(j/i);
%>


在此中通过errorPage="error.jsp"来指定出错时错误处理页面


---------------------------
error.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" isErrorPage="true" import="java.io.*"%>
<html>
<head>
<title>出错了!</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
出错了!<br>
发生了以下的错误:
<br><hr><font color=red><hr>
getMessage():<br>
<%=exception.getMessage()%><br><hr>
getLocalizedMessage():<br>
<%=exception.getLocalizedMessage()%><br><hr>
PrintStatckTrace():<br>
<%
StringWriter sw=new StringWriter();
PrintWriter pw=new PrintWriter(sw);
exception.printStackTrace(pw);
out.println(sw);
%><br>
</font></body>
</html>


在error.jsp中,page指令中指定:isErrorPage="true"

<---------------------->
在web.xml中声明异常和错误页面

例如:
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">
<error-page>
<error-code>404</error-code>
<location>/pageNotFound.html</location>
</error-page>

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

</web-app>

说明:指定错误代码为404是,调用/pageNotFound.html
也可以指定错误类型如:java.lang.NumberFormatException,出现此错误类型是调用/NumberFormatException.html
文章引用自:http://www.zhuoda.org/air_tuyh/26516.html


=========================

http://www.51cto.com/art/200704/46521.htm
由于JSP文件被编译成Servlet执行,出现异常的默认操作就是显示异常的堆栈。JSP页面提供了重写这个默认行为的功能,并且将异常处理转到另一个文件中:

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



这样在这个JSP页面中,如果遇到任何未捕获到的Throwable对象,那么就会显示指定的出错页面。

下面我们来看一个具体的例子。首先我们开发一个会出错的页面,如例程10-10所示。

例程10-10 会出错的页面(mustBeError.jsp)

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*"errorPage="error.jsp" %><%//这个页面一定会出错int i=0;int j=1;//以下代码一定产生运行时错误out.println(j/i);%>



从代码可以看出,这个页面必定会出错误。在这个页面的page指令中,通过errorPage="error.jsp"指定出错时的错误处理页面。

我们来看错误处理页面的具体代码,如例程10-11所示。

例程10-11 错误处理页面(error.jsp)

<%@ page contentType="text/html; charset=gb2312" language="java"isErrorPage="true" import="java.io.*"%><html><head><title>出错了!</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body>出错了!<br>



发生了以下的错误:

<br><hr><font color=red><hr>getMessage():<br><%=exception.getMessage()%><br><hr>getLocalizedMessage():<br><%=exception.getLocalizedMessage()%><br><hr>PrintStatckTrace():<br><%StringWriter sw=new StringWriter();PrintWriter pw=new PrintWriter(sw);exception.printStackTrace(pw);out.println(sw);%><br></font></body></html>



在error.jsp中,首先在page指令中指定:

isErrorPage="true"



这是非常关键的地方,只有这样指定,这个页面才能进行错误处理,才能使用exception对象。