对于jsp页面错误处理这里大致有两种方式:
一、在Web.xml中配置全局的错误异常处理
即凡是该项目下(即虚拟路径下的所有文件)的任意一个文件错误或者异常,都会跳到指定的错误处理页面。
全局的错误处理可以处理两种类型的错误:一种是HTTP代码的错误,如404,500,还有一种是异常的错误,如:NullPointerException
例如修改web.xml文件,加入以下代码:<error-page>
<error-code>
500
</error-code>
<location>目录/error.jsp</location>
</error-page>
<error-page>
<error-code>
404
</error-code>
<location>目录/notfount.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/目录/error.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>
/目录
/exception.jsp</location>
</error-page>
######:注意:
2、由于如果用户直接访问errorpage会发生空指针异常,所以errorpage一般被放在WEB-INF目录下,只有转发机制才可以访问到,而错误跳转使用的正是转发机制。
二、局部异常处理
1、在可能出现异常的Java脚本中,加上try...catch
<%
try{
}
catch(){
}
%>
2、在page指令中增加errorPage属性
<%@ page errorPage="/error.jsp" %>
errorPage的属性必须使用相对路径,如果一“/”开发,那么代表Web工程的根目录
如果我们指定了errorPage属性的值为error.jsp,那么在访问出现错误时,就会跳转到error.jsp(是转发过去的),如果想要了解异常的信息和对其进行处理,那么就要在error.jsp中设置page指令中的isErrorPage属性
<%@ page isErrorPage="true"%>
那么,在这个页面中,就可以调用exception隐式对象比如:
对不起,出错了:<%=exception.getMessage() %>
。如果没有将isErrorPage属性设置为true的话,exception隐式对象是不可以调用的。
####注意:
errorPage属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前页