requester、會話技術Cookie&Session

一、Request

1、requeste的生命週期:

     創建:訪問時創建

     銷燬:響應結束

     域的作用範圍:一次請求中

2、轉發和重定向的區別(詳情請點擊https://www.jianshu.com/p/68988b42d21d

     (1)重定向兩次請求,轉發一次。

     (2)重定向地址欄變化,轉發地址欄不變化

     (3)重定向可以訪問外部資源,轉發只能訪問內部資源

3、用request.getParameter(“parameter_name“) 來取得參數時,如果不存在 parameter_name 這個參數,request.getParameter ()將返回 null

二、會話技術

一個瀏覽器訪問某個站點,到關閉這個瀏覽器的整個過程,成爲一次會話。會話技術就是記錄這次會話中客戶端的狀態與數據的。

會話技術分爲Cookie和Session:

1、Cookie:存儲在客戶端。

      (1)cookie分爲會話級別的cookie和持久化cookie。會話級別cookie存儲在瀏覽器的內存中,用戶關掉瀏覽器,本次會話結束,那麼cookie就會消失。持久化cookie存儲在瀏覽器的磁盤文件中,關閉瀏覽器再打開會存在,持久化cookie用cookie.setMaxAge(seconds);方法。

      (2)cookie 是服務器創建並傳輸給客戶端,創建用Cookie cookie = new Cookie(name,value);

發送給客戶端用:response.addCookie(cookie);

      (3)服務器端獲取來自客戶端的cookie:Cookie []  cookies = request.getCookies();

2、Session:將數據存儲到服務器端。

Session技術是將數據存儲在服務器端的技術,會爲每個客戶端都創建一塊內存空間 存儲客戶的數據,但客戶端需要每次都攜帶一個標識ID去服務器中尋找屬於自己的內存空間。所以說Session的實現是基於Cookie,Session需要藉助於Cookie存儲客 戶的唯一性標識JSESSIONID.

     (1)session對象的生命週期:服務器創建session開始,到服務器異常關閉,或者session過期或者手動銷燬session爲止。

session默認存在30分鐘,session過期是指用戶無操作30分鐘之後session不存在,他的過期時間可以修改。手動銷燬session的方法:session.invalidate();

     (2)獲得Session對象:HttpSession session = request.getSession();如果服務器中已經有該客戶端的session,就會獲取這個session,否則會創建一個新的session。服務器端怎麼知道這個session是這個客戶端的呢,靠的是jsessionID,而jsessionid是服務器創建session時創建的,要發送給客戶端,這就要依靠cookie,所以說Session的實現是基於Cookie。那麼問題來了,如果服務器把jsessionid發送給客戶端之後,客戶端關閉了瀏覽器,那麼cookie就不存在了,那再次訪問的時候session也就不存在了,所以可以把cookie持久化,這樣再次訪問就不會出現session沒了的問題了。

 

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