1、JSP的執行過程
雖然JSP感覺上很像一般的HTML網頁,但事實上它是以Servlet的形式被運行的。因為JSP文件在第一次運行的時候會先解釋成Servlet源文件,然后編譯成Servlet類文件,最后才會被Servlet容器運行,JSP的執行過程主要可以分為以下幾點:
1)客戶端發出請求;
2)Web容器將JSP轉譯成Servlet源代碼;
3)Web容器將產生的源代碼進行編譯;
4)Web容器加載編譯后的代碼並執行;
5)把執行結果響應至客戶端。
2、JSP的異常處理機制
JSP中除了HTML代碼,其他的就是Java腳本元素,所以在JSP頁面中想使用try-catch來處理異常時比較困難的。JSP規范中定義了異常處理機制。
1)撰寫一個JSP“錯誤頁面”
異常處理文件中國需要使用page指令的isErrorPage屬性:<%@ page isErrorPage="true"%>,此時能夠訪問異常對象exception。
2)在JSP內指定異常發生時應該回應到哪個“錯誤頁面”
讓頁面產生異常的時候由專門的異常處理文件對異常進行處理,需要在該頁面中使用page指令的errorPage指定專門的異常處理頁面<%@ page errorPage="異常處理文件"%>
當然,還可以通過web.xml文件進行異常處理文件的配置,為同一種類型的異常指定統一的異常處理文件。
常見的異常編碼:
· 400錯誤:錯誤請求
· 401錯誤:訪問被拒絕
· 403錯誤:文件被禁止訪問
· 404錯誤:文件沒有找到
· 500錯誤:文件在運行過程中發生未知錯誤
例子:
測試頁面index.jsp,故意設置一個異常
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>異常頁面</title> </head> <body> <% //這里故意設置了一個異常 String[] strlen = {"hello","error","beijing"}; for(int i = 0; i < 10; i++){ out.println(strlen[i] + "--test"); i++; } %> </body> </html>
在web.xml文件中配置異常處理頁面
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!--根據異常編碼進行配置--> <error-page> <!--為響應狀態碼聲明錯誤頁面--> <error-code>500</error-code> <location>/500.jsp</location> </error-page> <!--根據異常類型進行配置--> <error-page> <!--為特定的異常類型聲明錯誤頁面--> <exception-type>java.lang.Throwable</exception-type> <location>/500.jsp</location> </error-page> </web-app>
編寫異常處理頁面500.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page isErrorPage="true" %> <html> <head> <title>500錯誤處理</title> </head> <body> 這是500的錯誤處理頁面! <br> 異常信息為<%=exception.getClass().getName()%> </body> </html>