什么是會(huì)話?
會(huì)話可以理解為用戶開一個(gè)瀏覽器,點(diǎn)擊多個(gè)超鏈接,訪問服務(wù)器多個(gè)web資源,然后關(guān)閉瀏覽器的整個(gè)過程。
會(huì)話要解決的問題是什么?
- 每個(gè)用戶在使用瀏覽器與服務(wù)器進(jìn)行會(huì)話的過程中,不可避免各自會(huì)產(chǎn)生一些數(shù)據(jù),服務(wù)器要想辦法為每個(gè)用戶保存這些數(shù)據(jù)。
- 例如:多個(gè)用戶點(diǎn)擊超鏈接通過一個(gè)servlet各自購(gòu)買了一個(gè)商品,服務(wù)器應(yīng)該想辦法把每一個(gè)用戶購(gòu)買的商品保存在各自的地方,以便于這些用戶點(diǎn)結(jié)帳servlet時(shí),結(jié)帳servlet可以得到用戶各自購(gòu)買的商品為用戶結(jié)帳。
保存會(huì)話的兩種技術(shù):
- Cookie是客戶端技術(shù),服務(wù)器把每個(gè)用戶的數(shù)據(jù)以cookie的形式寫給用戶各自的瀏覽器。當(dāng)用戶使用瀏覽器再去訪問服務(wù)器中的web資源時(shí),就會(huì)帶著各自的數(shù)據(jù)去。這樣,web資源處理的就是用戶各自的數(shù)據(jù)了。
- Session是服務(wù)端技術(shù),利用這個(gè)技術(shù),服務(wù)器在運(yùn)行時(shí)可以為每一個(gè)用戶的瀏覽器創(chuàng)建一個(gè)其獨(dú)享的session對(duì)象,由于session為用戶瀏覽器獨(dú)享,所以用戶在訪問服務(wù)器的web資源時(shí),可以把各自的數(shù)據(jù)放在各自的session中,當(dāng)用戶再去訪問服務(wù)器中的其它web資源時(shí),其它web資源再?gòu)挠脩舾髯缘膕ession中取出數(shù)據(jù)為用戶服務(wù)。
Cookie細(xì)節(jié)知識(shí)
- 一個(gè)Cookie只能標(biāo)識(shí)一種信息,它至少含有一個(gè)標(biāo)識(shí)該信息的名稱(NAME)和設(shè)置值(VALUE)。
- 一個(gè)WEB站點(diǎn)可以給一個(gè)WEB瀏覽器發(fā)送多個(gè)Cookie,一個(gè)WEB瀏覽器也可以存儲(chǔ)多個(gè)WEB站點(diǎn)提供的Cookie。
- 瀏覽器一般只允許存放300個(gè)Cookie,每個(gè)站點(diǎn)最多存放20個(gè)Cookie,每個(gè)Cookie的大小限制為4KB。
- 如果創(chuàng)建了一個(gè)cookie,并將他發(fā)送到瀏覽器,默認(rèn)情況下它是一個(gè)會(huì)話級(jí)別的cookie(即存儲(chǔ)在瀏覽器的內(nèi)存中),用戶退出瀏覽器之后即被刪除。若希望瀏覽器將該cookie存儲(chǔ)在磁盤上,則需要使用maxAge,并給出一個(gè)以秒為單位的時(shí)間。將最大時(shí)效設(shè)為0則是命令瀏覽器刪除該cookie。
- 注意,刪除cookie時(shí),path必須一致,否則不會(huì)刪除
Session細(xì)節(jié)知識(shí)以及與Cookie的區(qū)別
- 在WEB開發(fā)中,服務(wù)器可以為每個(gè)用戶瀏覽器創(chuàng)建一個(gè)會(huì)話對(duì)象(session對(duì)象),注意:一個(gè)瀏覽器獨(dú)占一個(gè)session對(duì)象(默認(rèn)情況下)。因此,在需要保存用戶數(shù)據(jù)時(shí),服務(wù)器程序可以把用戶數(shù)據(jù)寫到用戶瀏覽器獨(dú)占的session中,當(dāng)用戶使用瀏覽器訪問其它程序時(shí),其它程序可以從用戶的session中取出該用戶的數(shù)據(jù),為用戶服務(wù)。
- Session和Cookie的主要區(qū)別在于:
Cookie是把用戶的數(shù)據(jù)寫給用戶的瀏覽器。
Session技術(shù)把用戶的數(shù)據(jù)寫到用戶獨(dú)占的session中。
Session對(duì)象由服務(wù)器創(chuàng)建,開發(fā)人員可以調(diào)用request對(duì)象的getSession方法得到session對(duì)象。