Cookie & Session
(一)會話技術(shù)的概述
1骇窍、每個用戶與服務(wù)器進(jìn)行交互過程中,產(chǎn)生一些各自的數(shù)據(jù)锥余,程序想要把這些數(shù)據(jù)進(jìn)行保存腹纳,就需要使用會話技術(shù)
2、例如:用戶點(diǎn)擊超鏈接購買一個商品,程序應(yīng)該保存用戶所購買的商品嘲恍,以便于用戶點(diǎn)擊結(jié)賬時足画,可以得到用戶所購買的商品信息
3、思考:用戶購買的商品保存在Request或ServletContext中是否可以佃牛?
答案:無論保存在Request或ServletContext中都不行
(二)會話技術(shù)的實現(xiàn)原理
一淹辞、會話技術(shù)分類
1、Cookie技術(shù)
(1)Cookie是客戶端技術(shù)俘侠,程序把每個用戶的數(shù)據(jù)以cookie的形式保存到各自的瀏覽器中桑涎,
(2)當(dāng)用戶使用瀏覽器再次訪問服務(wù)器中的Web資源的時候,就會帶著各自的數(shù)據(jù)過去兼贡。
(3)這樣Web資源處理的就是用戶各自的數(shù)據(jù)了
2、Session技術(shù)
(1)Session是服務(wù)器端技術(shù)娃胆,利用這個技術(shù)遍希,服務(wù)器在運(yùn)行時為每一個用戶的瀏覽器創(chuàng)建一個獨(dú)享的Session對象。
(2)由于Session為用戶瀏覽器獨(dú)享里烦,所有用戶在訪問服務(wù)器的時候凿蒜,可以把各自的數(shù)據(jù)放在各自的Session中,
(3)當(dāng)用戶再次訪問服務(wù)器中的Web資源的時候胁黑,其他的Web資源再從用戶各自的Session中取出數(shù)據(jù)废封,為用戶服務(wù)
二、會話技術(shù)的實現(xiàn)原理
1丧蘸、Cookie的實現(xiàn)原理
2漂洋、Session的實現(xiàn)原理
(三)記錄用戶上次訪問時間的分析
分析需求和流程
(四)記錄用戶上次訪問時間的代碼實現(xiàn)
一、Cookie的簡單使用
1力喷、獲得從瀏覽器帶過來的Cookie
? ? 通過HttpServletRequest對象中的方法:
?? ??? ?getCookies()
2刽漂、向瀏覽器回寫Cookie
? ? 通過HttpServletResponse對象中的方法:
?? ??? ?addCookie(Cookie cookie)
3、Cookie的構(gòu)造
? ??Cookie(String name, String value)
二弟孟、案例代碼實現(xiàn)
? ? 創(chuàng)建一個Web項目
創(chuàng)建包結(jié)構(gòu)
? ? 代碼實現(xiàn)
?? ?? ? 編寫工具類
?? ?? ? 編寫Servlet
(五)Cookie的分類
一贝咙、案例存在問題
問題描述:
? ? 用戶訪問Servlet,記錄用戶的上次訪問時間拂募,但是如果用戶將瀏覽器關(guān)閉庭猩,再重新打開瀏覽器訪問程序,程序就會把其當(dāng)成是第一次訪問的用戶(顯示:您好陈症,歡迎來到本網(wǎng)站)
二蔼水、Cookie的分類
1、默認(rèn)級別的Cookie
指的是沒有設(shè)置有效時間的Cookie录肯,默認(rèn)的情況下徙缴,只要關(guān)閉了瀏覽器,Cookie也會被銷毀(Cookie存在于瀏覽器的內(nèi)存中,當(dāng)關(guān)閉了瀏覽器于样,Cookie就銷毀了)
2疏叨、持久級別的Cookie
指的是具有有效時間的Cookie,這種Cookie的內(nèi)容不是保存在瀏覽器的內(nèi)存中穿剖,而是將Cookie的內(nèi)容保存(持久化)到硬盤上蚤蔓。當(dāng)關(guān)閉瀏覽器,再次打開時糊余,會加載硬盤上的文件秀又,從而Cookie中的數(shù)據(jù)就不會丟失
(六)Cookie的API的概述
一、構(gòu)造方法
? ? Cookie(String name, String value)
? ? 需要傳入字符串類型的名稱和值
二贬芥、其他的方法
? ? 獲得Cookie的名稱:getName()
? ? 獲得Cookie的值:getValue()
? ? 設(shè)置Cookie的有效域名:setDomain(String domain)
? ? 設(shè)置Cookie的有效路徑:setPath(String uri)
? ? 設(shè)置Cookie的有效時長:setMaxAge(int expiry)
三吐辙、代碼改進(jìn)
案例問題解決
(七)Cookie的使用細(xì)節(jié)
1、一個Cookie只能標(biāo)識一種信息蘸劈,至少含有一個標(biāo)識該信息的名稱和值(即鍵值對)
2昏苏、一個web站點(diǎn)可以給一個瀏覽器發(fā)送多個Cookie,一個Web瀏覽器也可以存儲多個Web站點(diǎn)的Cookie
3威沫、老版本瀏覽器一般只允許存放300個Cookie贤惯,每個站點(diǎn)最多可以存放20個Cookie,每個Cookie的大小限制為4KB棒掠,瀏覽器存放的Cookie的大小和個數(shù)是有限制的
4孵构、如果創(chuàng)建了一個Cookie,并發(fā)送到瀏覽器烟很,默認(rèn)情況下颈墅,它是一個會話級別的Cookie,用戶退出瀏覽器就被刪除了
5雾袱、如果希望將這個Cookie存到磁盤上精盅,需要設(shè)置有效時長,就要調(diào)用setMaxAge(int expiry)方法谜酒,以秒為單位
6叹俏、需要手動刪除持久性Cookie的話,可以將Cookie的有效時長設(shè)置為0僻族,必須注意:刪除Coo