聲明:本欄目所使用的素材都是凱哥學(xué)堂VIP學(xué)員所寫勒虾,學(xué)員有權(quán)匿名汉买,對(duì)文章有最終解釋權(quán)赖欣;凱哥學(xué)堂旨在促進(jìn)VIP學(xué)員互相學(xué)習(xí)的基礎(chǔ)上公開筆記。
1.介紹:
客戶端每訪問(wèn)一次服務(wù)器都會(huì)產(chǎn)生請(qǐng)求對(duì)象和響應(yīng)對(duì)象撞蚕,http的請(qǐng)求是無(wú)狀態(tài)連接润梯,所謂的無(wú)狀態(tài)連接就是服務(wù)器對(duì)用戶的訪問(wèn)不會(huì)產(chǎn)生記憶,當(dāng)某個(gè)用戶訪問(wèn)了服務(wù)器之后甥厦,如果此用戶再次去訪問(wèn)此服務(wù)器纺铭,服務(wù)器是不會(huì)認(rèn)識(shí)這個(gè)用戶的,它無(wú)法識(shí)別這就是之前來(lái)訪問(wèn)的某個(gè)用戶刀疙,因此此用戶之前所做的一系列操作在此次訪問(wèn)服務(wù)器時(shí)都是沒(méi)有記錄的舶赔,這就給用戶帶來(lái)了不便。比如用戶登錄頁(yè)面將一件商品加入了購(gòu)物車谦秧,當(dāng)用戶第二次登錄時(shí)就會(huì)發(fā)現(xiàn)之前加購(gòu)的商品信息不見(jiàn)了竟纳,因?yàn)閷?duì)于服務(wù)器來(lái)說(shuō)用戶的每次訪問(wèn)都會(huì)被當(dāng)作是新用戶訪問(wèn)來(lái)看待撵溃。Cookie就是用來(lái)解決這一問(wèn)題的,它可以給用戶的信息做一個(gè)標(biāo)記锥累,這樣服務(wù)器識(shí)別到此標(biāo)記之后就會(huì)認(rèn)識(shí)這個(gè)用戶缘挑。
2.Cookie的通信原理:
如上圖所示,當(dāng)用戶第一次訪問(wèn)登錄頁(yè)面并通過(guò)登錄驗(yàn)證后桶略,會(huì)將可以作為標(biāo)記用來(lái)識(shí)別用戶身份的信息放在Cookie信息中语淘,然后在服務(wù)器響應(yīng)瀏覽器時(shí),Cookie信息會(huì)包裝在響應(yīng)對(duì)象中被瀏覽器下載际歼,當(dāng)用戶第二次去訪問(wèn)的時(shí)候惶翻,之前下載下來(lái)的Cookie信息會(huì)隨著請(qǐng)求信息一起傳給服務(wù)器,然后服務(wù)器就會(huì)進(jìn)行識(shí)別鹅心。所以想給瀏覽器帶Cookie信息就找響應(yīng)對(duì)象维贺,想得到瀏覽器帶來(lái)的Cookie信息就找請(qǐng)求對(duì)象。
當(dāng)Cookie信息隨著響應(yīng)頭信息一起下載到瀏覽器時(shí)巴帮,瀏覽器會(huì)將其保存到內(nèi)存中,所以瀏覽器一關(guān)閉就沒(méi)有了虐秋,但如果給Cookie設(shè)置了時(shí)間(以秒為單位)榕茧,無(wú)論時(shí)間是多短或多長(zhǎng),Cookie信息就會(huì)寫入硬盤中直到設(shè)置的時(shí)間客给。
3.代碼示例:
30s后再去訪問(wèn)BServlet用押,會(huì)發(fā)現(xiàn)沒(méi)有這個(gè)Cookie值:
但如果是在30s之內(nèi)訪問(wèn)的BServlet就可以看到Cookie值,即使是關(guān)閉瀏覽器靶剑,再打開瀏覽器(同一瀏覽器)蜻拨,在規(guī)定好的時(shí)間內(nèi)訪問(wèn)BServlet都是可以看到Cookie值的:
但如果沒(méi)有設(shè)置時(shí)間,一旦關(guān)閉瀏覽器再次打開瀏覽器去訪問(wèn)BServlet就沒(méi)有Cookie值了桩引,除非再訪問(wèn)AServlet再存儲(chǔ)一次Cookie信息缎讼。
4.用戶登錄小例題:
代碼示例:
數(shù)據(jù)庫(kù)內(nèi)容:
運(yùn)行結(jié)果: