Cookie和Session
阿新 • • 發佈:2020-07-30
Cookie和Session
1. 會話
會話:使用者打開了一個瀏覽器,點選了很多超連結,訪問多個web資源,關閉瀏覽器,這個過程可以稱之為會話
有狀態會話:一個同學來過教室,下次再來教室,我們會知道這個同學曾經來過,稱之為有狀態會話
你 學校
你能怎麼證明你是學校的學生?
- 發票 學校給你發票
- 學校登記 學校標記你來過了
一個網站,證明證明你來過?
客戶端 服務端
- 服務端給客戶端一個信件,客戶端下次訪問服務端帶上信件就可以了;cookie
- 伺服器登記你來過了,下次你來的時候我來匹配你;session
2. 儲存會話的兩種技術
cookie
- 客戶端技術 (響應,請求)
session
- 伺服器技術,利用這個技術,可以儲存使用者的會話資訊。我們可以把資訊或者資料放在session中
常見場景:網站登陸之後,下次不用再登入了,第二次直接就訪問上去了
3. Cookie
- 從請求中拿到cookie資訊
- 伺服器響應給客戶端cookie
Cookie[] cookies = req.getCookies(); //獲得cookie cookie.getName(); //獲得cookie中的key cookie.getValue(); //獲得cookie中的value Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + ""); //新建一個cookie cookie.setMaxAge(24*60*60); //設定cookie有效期 resp.addCookie(cookie); //響應給客戶端一個cookie
cookie:一般會儲存在本地的使用者目錄下的appdata
一個網站cookie是否存在上限?聊聊細節問題
- 一個Cookie只能儲存一個資訊
- 一個web站點可以給瀏覽器傳送多個cookie,最多存放20個cookie
- Cookie大小有限制4kb
- 300個cookie瀏覽器上限
刪除Cookie
- 不設定有效期,關閉瀏覽器,自動失效;
- 設定有效期時間為0;(相同的key,這樣會操作同樣的cookie)
編碼解碼:使用中文時,可能遇到亂碼問題(Tomcat版本較低),使用下面的方法編碼解碼(使用中文輸出要解碼,輸入要編碼)
URLEncoder.encode("漢字", "utf-8") //編碼 URLDecoder.decode(cookie.getValue(), "UTF-8") //對cookie中的value存放的漢字進行解碼