錯誤處理頁面error.jsp
Web應用程序一般都有一個或多個統一的錯誤處理JSP頁面,以便在功能性的JSP頁面發生錯誤時,能以一種友好的形式向用戶反饋。友好而統一的錯誤頁面是Web展現層一個無可忽略的方面。
下面,我們創建錯誤處理error.jsp文件,其代碼如下所示:
代碼清單 11 error.jsp錯誤處理JSP頁面
1. <%@page contentType="text/html; charset=GBK" isErrorPage="true" %>
2. <html>
3. <head>
4. <title>error</title>
5. </head>
6. <body bgcolor="#ffffff">
7. 抱歉,系統發生異常,點擊<a href="login.jsp">這兒</a>返回首頁
8. </body>
9. </html>
錯誤處理JSP頁面的page指令標簽中的isErrorPage屬性應該設置為true,如第1行所示,這樣JSP頁面中就可以訪問exception隱含對象了。在第7行,我們用一種"優雅"的方式向用戶報告程序錯誤並提供一個返回到登錄頁面的鏈接。
現在,我們回過頭去,通過<%@ page errorPage="錯誤處理JSP"%>將error.jsp指定為switch.jsp和login.jsp的錯誤處理頁面。
為switch.jsp頁面添加錯誤處理頁面後,其代碼如下:
代碼清單 12 switch.jsp添加錯誤處理Jsp頁面
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
2. <%@page import="bookstore.*"%>
3. <%@page import="java.sql.*"%>
4. …
為login.jsp頁面添加錯誤處理JSP頁面後,其代碼如下:
代碼清單 13 login.jsp添加錯誤處理頁面
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
2. <%@page errorPage="error_error.jsp"%>
3. …
這樣,當switch.jsp的SQL查詢語句不正確引發SQLException異常時,那個晦澀難懂的異常跡信息錯誤頁面不見了,取而代之的是下面這個友好的報錯頁面:
圖 15 友好的錯誤處理頁面
登錄失敗fail.jsp
當用戶提供不正確的密碼時,switch.jsp將轉向fail.jsp頁面,同樣你可以通過JSP向導創建fail.jsp頁面,fail.jsp的代碼如下:
代碼清單 14 fail.jsp 登錄失敗頁面
1. <%@ page contentType="text/html; charset=GBK" errorPage="error.jsp" %>
2. <html>
3. <head>
4. <title>
5. fail
6. </title>
7. </head>
8. <body bgcolor="#ffffff">
9. 你輸入的密碼不正確,點擊<a href="login.jsp">這兒</a>返回登錄頁面。
10. </body>
11. </html>
當用戶密碼輸入錯誤後,所看到的fail.jsp頁面效果,如下圖所示:
圖 16 fail.jsp頁面效果