對於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應用程序的根目錄(注意不是站點根目錄),否則,表示相對於當前頁