會話技術之Cookie

什么是會話

會話可簡單理解為:用戶開一個瀏覽器,點擊多個超鏈接,訪問多個web資源,然后關閉瀏覽器,整個過程稱之為一個會話。

Cookie

Cookie翻譯成中文是小甜點,小餅干的意思。在HTTP中它表示服務器送給客戶端瀏覽器的小甜點。其實Cookie就是一個鍵和一個值構成的,隨著服務器端的響應發送給客戶端瀏覽器。然后客戶端瀏覽器會把Cookie保存起來,當下一次再訪問服務器時把Cookie再發送給服務器。

Cookie規范

Cookie最多只有4KB,一個服務器最多只能發送到客戶端20個Cookie,并且瀏覽器最多可以保存300個Cookie。當然,在瀏覽器大戰的今天,一些瀏覽器為了打敗對手,可能對Cookie規范“擴展”了一些,例如每個Cookie的大小為8KB,最多可保存500個Cookie等!但也不會出現把你硬盤占滿的可能!

Cookie的屬性、

  • name 名稱
  • value 值
  • path 有效路勁
  • domain 有效域名

Cookie的使用

  • 得到Cookie

    1. 從request中得到Cookie數組,得到想要的,從這里面遍歷取出Cookie
      Cookie[] cookies = request.getCookies()
    2. 構造函數創建
      Cookie c = new Cookie(LAST_ITME,time);
  • 往瀏覽器寫Cookie

    • 代碼
      response.addCookie(c);
    • 效果:在瀏覽器響應頭可以看到
      Set-Cookie:last_time="2016-46-22 12:46:00"; Version=1

注意:瀏覽器第二次請求的時候會把第一次請求返回的Cookie在請求行帶上,服務器就可以得到上一次響應的Cookie

部分API介紹

  • c.setMaxAge(int maxAge);設置Cookie有效期

    1. maxAge = -1
      也就是不設這個屬性的情況,Cookie默認保存在瀏覽器內存里,隨著瀏覽器的關閉而消亡

    2. maxAge = 0
      返回的Cookie不會被第二次請求的請求頭帶上

    3. maxAge>0
      表示Cookie持久化了,持久化的時間為maxAge值(秒),換句話說,當用戶關閉瀏覽器,只要在maxAge時間內重新打開瀏覽器,就會帶上該Cookie

  • setPath() 設置Cookie的有效路勁,如果第二次訪問的資源能匹配上Cookie的該屬性,則請求的時候回帶上
    c.setPath("/ConversationDemo/LastTimeServlet");
    也就是說,非此"/ConversationDemo/LastTimeServlet"不帶該Cookie

  • c.setDomain("taobao.com");設置Cookie的有效域名

Cookie保存中文

Cookie中是不可以設置中文的,但可以使用URLEncodor.encode()方法編碼后在存放到Cookie中。在獲取Cookie時,需要先使用URLDecoder.decode()方法解碼,再使用

  • 向客戶端響應添加Cookie
    String name = URLEncoder.encode("姓名", "UTF-8");
    String value = URLEncoder.encode("張三", "UTF-8");
    Cookie c = new Cookie(name, value);
    c.setMaxAge(3600);
    response.addCookie(c);

  • 從客戶端請求中獲取Cookie
    String name = URLDecoder.decode(c.getName(), "UTF-8");
    String value = URLDecoder.decode(c.getValue(), "UTF-8");
    String s = name + ": " + value + "
    ";
    response.getWriter().print(s);

Cookie的應用場景

  • 記住密碼,xxx天免登陸
  • 瀏覽記錄
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • HTTP cookie(也稱為web cookie,網絡cookie,瀏覽器cookie或者簡稱cookie)是網...
    留七七閱讀 18,091評論 2 71
  • 趙益軍 小時候,夢很大, 曾夢想著美麗的童話, 天藍水清地闊路遠美如畫。 追夢,前行, 把自己的夢, 在陽光下升華...
    慶軍_a3d7閱讀 259評論 0 0
  • 今天父親節,也是電商節,不過沒啥買的,畫了一張我爸年輕時的照片,畫的不好! 下午開始,下一會兒雨晴一會兒,感覺更悶...
    只一點閱讀 102評論 0 0
  • 對你來說天大的事兒,在別人眼里那都不是事兒,所以當有人順口問你事情發展情況時,千萬不要喋喋不休地、長篇大論地敘述,...
    言薇閱讀 540評論 0 50