JSP學習總結
每一個JSP都被翻譯成一個Servlet,然後再編譯執行
一個JSP翻譯之後繼承HttpJspBase類,實現JspSourceDependent接口
Jsp生命週期
1.翻譯
2.編譯
3.加載類 ü
4.實例化類 ü
5.jspInit()調用 ü
6._jspService()調用 ü
7.jspDestroy()調用
JSP中共有9個內置對象,分別是:
request,response,session,out,application,pageContext,page, config,exception
查看jsp翻譯後的代碼可以發現這九個內置對象是在_jspService()方法中創建並初始化的
其中常用的內置對象有4個,下面重點介紹這四個內置對象
1.《請求級別》request獲取請求信息,轉發數據
在原位置保存數據,在轉發目標位置來獲取數據
所以request(請求轉發)是兩個頁面之間共享數據的功能
request.setAttribute(“key”,”value”);
request.getRequestDispatcher(“Dream.jsp”).forward(request,response);
在目標頁面可以獲取請求級別共享的數據
方法一:Java代碼獲取共享數據
<%
String value=request.getAttribute(“key”).toString();
%>
方法二:EL表達式獲取共享數據<requestScope表示取那個範圍>
${requestScope.key}
方法三:EL表達式獲取共享數據《會在所有範圍中尋找key的參數,從小範圍到大範圍找pageContext-->request-->session-->application》
${key}
2.《頁面級別》pageContext可以通過方法set/getAttribute方法來保存/獲取數據。操作數據作用範圍只在當前頁面有效,當數據存儲好後,任意位置可以使用該數據pageContext.setAttribute(“key”,”value”);
<%=pageContext.getAttribute(“key”)%>//太麻煩
<!--通過EL表達式訪問更方便-->
${key}//很方便
3.《會話級別》Session。當一個客戶端,連接服務器(對服務器發出請求),雙方會建立一個會話。通過會話,服務器才能辨認出每一個客戶端。
服務器會爲每一個客戶端分配一個ID,根據時間形成,不會重複。在客戶端也會保存一個文件(cookie)裏面保存這個ID
當客戶端離開會話,或者關閉瀏覽器,會話就會結束,
會話默認持續20分鐘會關閉
使用session,主要在連接與斷開這個期間,使服務器與客戶端之間共享數據
Session ID會話期間ID是不變的(每個電腦是一個客戶端,而不是每個瀏覽器)
電腦(客戶端)連接上服務器,電腦上(客戶端)會生成一個Cookie,服務器端會有一個Session ID
一般用於存儲用戶名
4.《應用級別》application
當服務器啓動,就可以向appliaction範圍來存儲數據,該範圍內的數據,服務器和所有的用戶共享。
服務器關閉,這些數據纔會消失,也可以通過函數刪除這些數據
常用於網站計數器
5.out輸出信息(out.print()在頁面輸出信息)
6.response對象:當前響應對象
7.page:指向頁面自身的方式,相當於this關鍵字
8.config:與當前JSP頁面的Servlet對應的ServletConfig對象
9.exception:其他地方拋出的Throwable對象,僅當<%@ page isErrorPage=”true”%>時有效