JSP內置對象之------response、session、application


1. 重定向和轉發
   response.sendRedirect("地址");
a. 頁面地址顯示最終頁面
        b. 不可向後傳遞參數
        c. 跳到外部站點


   request.getRequestDispatcher("地址").forward(request, response);
a. 頁面地址顯示請求頁面
        b. 可以向後傳遞參數
        c. 不可以跳到外部站點


通俗的來說兩者的區別就是:


  重定向:發出兩次請求,不能夠共享前一次請求中封裝的參數信息
  轉發:   發一次請求


2、HTTP是無狀態的,   只要是兩次請求,則無法保持狀態. 
當客戶向服務器端發出請求(request),然後服務器返回響應(response),連接關閉。在服務器端不會保存連接的相關信息,下一次客戶再發出請


求,服務器無法判斷這一次的連接和上一次的連接是否屬於同一個客戶,所以上述的  重定向 在一次請求發出後,第二次無法再獲取到響應中的參數。
但是,當我們在瀏覽網站的時候,(例如:逛淘寶)登錄成功之後,隨意瀏覽該網站的其他頁面,信息還能夠得以保存。這是怎麼辦到的呢?
解決方案:
  1. 客戶端:    Cookie
  2. 服務器端:
                request   (不能解決)
                session
                application


3、cookie
cookie對象不屬於jsp內置對象,通常用於在瀏覽器端保存會話過程中的一些參數,如下面要介紹的 sessionId
它是web服務器保存在用戶硬盤上數據,保存路徑爲:C:\Documents and Settings\登錄用戶名\Cookies ,信息片段以“名”/“值” 對( name--


value)的方式存取
cookie對象的寫入要結合 response 對象來實現,主要步驟:
a、創建 cookie對象
b、設定屬性( 一般爲 有效期)  以  秒  爲單位
c、通過response寫入客戶端
<%
Cookie c=new Cookie("username","emily_RR");
c.setMaxAge(60*60);
response.addCookie(c);
%>




4、session 
工作原理:
(1)、客戶首次訪問服務器的一個頁面時,服務器就會爲客戶分配一個session對象,該對象對應一個唯一的 sessionId ,將該sessionId 發送到客


戶端,並寫入到 cookie中,使得客戶端和服務器端對應
(2)、當客戶繼續訪問服務器上的其他資源時,session不會被重新分配。直到session被銷燬
(3)、session被銷燬後,重新向服務器發送請求時,session對象也會重新分配


這就好比你去圖書館借書,管理員一定需要你出示借書證,如果沒有,會讓你辦理一張,然後發給你,憑藉這個證,你可以在這個借書證的有效時間內


借書,一旦圖書證銷燬( 丟失、或者是到期),當你又去圖書館借書的時候,又會重新給你辦理一張。


session 的常用方法:     session.setAttribute("uname",“emily_RR”);
session.getAttribute("uname");
session.removeAttribute("uname");
session.invalidate();   銷燬 session   
5、session銷燬的時機:
a、 關閉瀏覽器一段時間後.    會話有持續時間
b、 session.invalidate();
    session.removeAttribute("");
c、 關閉服務器.


6、application對象
提供全局信息,不同的客戶可以共享,但是session對象是與客戶根據編號一一對應的,而且session對象是客戶第一次訪問服務器上的jsp頁面時被創


建的,application則是在 服務器被啓動的時候建立的,知道服務器被關閉,application對象才被取消。
我們發現在一些網站上可以顯示:您是本站第xxxx位訪問者,這個就是用application提供的計數器


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章