Cookie(客戶端會話技術)筆記

主要內容

  1. 會話技術
    1. Cookie
    2. Session
  2. JSP:入門學習

會話技術

  1. 會話概念:一次會話中包含多次請求和響應
    *一次會話:瀏覽器一次給服務器資源發送請求,會話建立,直到一方斷開爲止
  2. 會話的功能:在一次會話的範圍內(多次請求間),進行數據的共享
  3. 會話的方式:
    1. 客戶端會話技術:Cookie
    2. 服務器端會話技術:Session

Cookie:客戶端會話技術

  1. 概念
    *客戶端會話技術,用來將數據保存到客戶端

  2. 快速入門
    *使用步驟
    1. 創建Cookie對象,並綁定數據
    *new Cookie(String name, String value);
    2. 發送Cookie對象到客戶端
    *response.addCookie(Cookie cookie);
    3. 從客戶端的請求獲取Cookie對象,拿到數據(可以獲取多個cookie)
    *Cookie[] request.getCookies()

  3. 注意
    *Cookie只在同一次會話中有效,過了本次會話,則其中的數據便不能共享
    *也即,只能在同一個客戶端下,請求服務器的資源A,在請求服務器的資源B…時,纔可以共享Cookie的內容

  4. Cookie的原理Cookie的原理

  5. Cookie的實現原理
    *基於響應頭set-cookie和請求頭cookie實現的

  6. Cookie的實現細節

    1. 一次能不能發送多個cookie?
      *我們可以通過request.getCookies()方法獲取多個cookie
      *同樣我們也可以發送多個cookie
      *我們只需要創建多個Cookie對象,然後每次均通過response.addCookie(Cookie cookie)將其發送即可
    2. cookie能在瀏覽器中保存多長時間?
      1. 默認情況下,當瀏覽器關閉後,Cookie數據被銷燬
      2. 手動設置:
        *我們可以通過public void setMaxAge(int expiry)方法來設置Cookie存儲的時間
        *當expiry的值爲正數時:表示Cookie的存活時間爲expiry秒
        *當expiry的值爲負數時:即爲默認值,瀏覽器關閉後自動銷燬
        *當expiry爲0時:表示直接刪除Cookie信息
    3. cookie能不能存中文?
      *在Tomcat 版本8之前,cookie中不支持直接存儲中文
      *需要將中文進行轉碼 --> 一般使用URL編碼(%E3)
      *在tomcat 版本8之後,cookie可以直接存儲中文
    4. cookie的獲取範圍(共享範圍)有多大?
      1. 假設在同一個tomcat服務器中,部署了多個項目,那麼這些項目之間cookie能否共享?
        1. 默認不能共享
        2. 若要共享,則需要設置public void setPath(String uri)函數;設置cookie的獲取範圍
          *默認情況下,uri爲當前項目的虛擬目錄
          *要共享,則可以設置uri爲"/"
      2. 不同tomcat服務器中,cookie能否共享?
        • 需要調用public void setDomain(String pattern)函數進行設置
          如果設置pattern的一級域名相同,則部署在tomcat上的多個服務器之間cookie可以共享
          *例如
          設置setDomain(".baidu.com"),則tieba.baidu.com和news.baidu.com中的cookie就可以共享
  7. Cookie的特點和應用

    1. Cookie是客戶端會話技術,所以cookie存儲的數據在客戶端瀏覽器
    2. 瀏覽器對單個cookie的大小有限制(4kb) 並且對同一個域名下的總cookie數量也有限制(20個)

    *作用
    1. cookie一般用於存儲少量的不太敏感的數據
    2. 在不登陸的情況下,完成服務器對客戶端的身份識別

  8. Cookie小案例
    案例詳細內容見此處

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