您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java Session和Cookie的區(qū)別是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java Session和Cookie的區(qū)別是什么”吧!
Session的概念
Session 是存放在服務(wù)器端的,類(lèi)似于Session結(jié)構(gòu)來(lái)存放用戶(hù)數(shù)據(jù),當(dāng)瀏覽器 第一次發(fā)送請(qǐng)求時(shí),服務(wù)器自動(dòng)生成了一個(gè)Session和一個(gè)Session ID用來(lái)唯一標(biāo)識(shí)這個(gè)Session,并將其通過(guò)響應(yīng)發(fā)送到瀏覽器。
當(dāng)瀏覽器第二次發(fā)送請(qǐng)求,會(huì)將前一次服務(wù)器響應(yīng)中的Session ID放在請(qǐng)求中一并發(fā)送到服務(wù)器上,服務(wù)器從請(qǐng)求中提取出Session ID,并和保存的所有Session ID進(jìn)行對(duì)比,找到這個(gè)用戶(hù)對(duì)應(yīng)的Session。
一般瀏覽器提供了兩種方式來(lái)保存,還有一種是程序員使用html隱藏域的方式自定義實(shí)現(xiàn):
1)使用Cookie來(lái)保存,這是最常見(jiàn)的方法,本文“記住我的登錄狀態(tài)”功能的實(shí)現(xiàn)正式基于這種方式的。服務(wù)器通過(guò)設(shè)置Cookie的方式將Session ID發(fā)送到瀏覽器。如果我們不設(shè)置這個(gè)過(guò)期時(shí)間,那么這個(gè)Cookie將不存放在硬盤(pán)上,當(dāng)瀏覽器關(guān)閉的時(shí)候,Cookie就消失了,這個(gè)Session ID就丟失了。如果我們?cè)O(shè)置這個(gè)時(shí)間為若干天之后,那么這個(gè)Cookie會(huì)保存在客戶(hù)端硬盤(pán)中,即使瀏覽器關(guān)閉,這個(gè)值仍然存在,下次訪(fǎng)問(wèn)相應(yīng)網(wǎng)站時(shí),同 樣會(huì)發(fā)送到服務(wù)器上。
2)使用URL附加信息的方式,也就是像我們經(jīng)??吹絁SP網(wǎng)站會(huì)有aaa.jsp?JSESSIONID=*一樣的。這種方式和第一種方式里面不設(shè)置Cookie過(guò)期時(shí)間是一樣的。
3)第三種方式是在頁(yè)面表單里面增加隱藏域,這種方式實(shí)際上和第二種方式一樣,只不過(guò)前者通過(guò)GET方式發(fā)送數(shù)據(jù),后者使用POST方式發(fā)送數(shù)據(jù)。但是明顯后者比較麻煩。
會(huì)話(huà)(Session)跟蹤
會(huì)話(huà),指用戶(hù)登錄網(wǎng)站后的一系列動(dòng)作,比如瀏覽商品添加到購(gòu)物車(chē)并購(gòu)買(mǎi)。會(huì)話(huà)(Session)跟蹤是Web程序中常用的技術(shù),用來(lái)跟蹤用戶(hù)的整個(gè)會(huì)話(huà)。常用的會(huì)話(huà)跟蹤技術(shù)是Cookie與Session。Cookie通過(guò)在客戶(hù)端記錄信息確定用戶(hù)身份,Session通過(guò)在服務(wù)器端記錄信息確定用戶(hù)身份。
Session和Cookie的區(qū)別與聯(lián)系?
Cookie和Session區(qū)別
cookie存儲(chǔ)在客戶(hù)端(瀏覽器),session存儲(chǔ)在服務(wù)端,簡(jiǎn) 單的說(shuō),當(dāng)你登錄一個(gè)網(wǎng)站的時(shí)候,如果web服務(wù)器端使用的是session,那么所有的數(shù)據(jù)都保存在服務(wù)器上面,客戶(hù)端每次請(qǐng)求服務(wù)器的時(shí)候會(huì)發(fā)送 當(dāng)前會(huì)話(huà)的sessionid,服務(wù)器根據(jù)當(dāng)前sessionid判斷相應(yīng)的用戶(hù)數(shù)據(jù)標(biāo)志,以確定用戶(hù)是否登錄,或具有某種權(quán)限。
由于數(shù)據(jù)是存儲(chǔ)在服務(wù)器 上面,所以你不能偽造,但是如果你能夠獲取某個(gè)登錄用戶(hù)的sessionid,用特殊的瀏覽器偽造該用戶(hù)的請(qǐng)求也是能夠成功的。sessionid是服務(wù) 器和客戶(hù)端鏈接時(shí)候隨機(jī)分配的,一般來(lái)說(shuō)是不會(huì)有重復(fù),但如果有大量的并發(fā)請(qǐng)求,也不是沒(méi)有重復(fù)的可能性。
Session與Cookie聯(lián)系
Cookies是屬于Session對(duì)象的一種。但有不同,Cookies不會(huì)占服務(wù)器資源,是存在客服端內(nèi)存或者一個(gè)cookie的文本文件中;而“Session”則會(huì)占用服務(wù)器資源。所以,盡量不要使用Session,而使用Cookies。
但是我們一般認(rèn)為cookie是不可靠的,session是可靠地,但是目前很多著名的站點(diǎn)也都以來(lái)cookie。有時(shí)候?yàn)榱私鉀Q禁用cookie后的頁(yè)面處理,通常采用url重寫(xiě)技術(shù),調(diào)用session中大量有用的方法從session中獲取數(shù)據(jù)后置入頁(yè)面。
Cookies與Session的應(yīng)用場(chǎng)景
Cookies的安全性能一直是倍受爭(zhēng)議的。雖然Cookies是保存在本機(jī)上的,但是其信息的完全可見(jiàn)性且易于本地編輯性,往往可以引起很多的安全問(wèn)題。所以Cookies到底該不該用,到底該怎樣用,就有了一個(gè)需要給定的底線(xiàn)。
1)session
登陸驗(yàn)證信息。一般采用Session(“Logon”)=true or false的形式。 用戶(hù)的各種私人信息,比如姓名等,某種情況下,需要保存在Session里 需要在頁(yè)面間傳遞 的內(nèi)容信息,比如調(diào)查工作需要分好幾步。每一步的信息都保存在Session里,最后在統(tǒng)一更 新到數(shù)據(jù)庫(kù)。
2)cookie
判斷用戶(hù)是否登陸過(guò)網(wǎng)站,以便下次登錄時(shí)能夠直接登錄。如果我們刪除cookie,則每次登 錄必須從新填寫(xiě)登錄的相關(guān)信息。 另一個(gè)重要的應(yīng)用是“購(gòu)物車(chē)”中類(lèi)的處理和設(shè)計(jì)。用戶(hù)可能在一段時(shí)間內(nèi)在同一家網(wǎng)站的不同 頁(yè)面選擇不同的商品,可以將這些信息都寫(xiě)入cookie,在最后付款時(shí)從cookie中提取這些信 息,當(dāng)然這里面有了安全和性能問(wèn)題需要我們考慮了。
session共享
對(duì)于多網(wǎng)站(同一父域不同子域)單服務(wù)器,我們需要解決的就是來(lái)自不同網(wǎng)站之間SessionId的共享。由于域名不同(blog.yoodb.com 和daohang.yoodb.com),而SessionId又分別儲(chǔ)存在各自的cookie中,因此服務(wù)器會(huì)認(rèn)為對(duì)于兩個(gè)子站的訪(fǎng)問(wèn),是來(lái)自不同的會(huì)話(huà)。
解決的方法是通過(guò)修改cookies的域名為父域名達(dá)到cookie共享的目的,從而實(shí)現(xiàn)SessionId的共享。帶來(lái)的弊端就是,子站間的cookie信息也同時(shí)被共享了。
cookie典型應(yīng)用
1)判斷用戶(hù)是否登陸過(guò)網(wǎng)站,以便下次登錄時(shí)能夠直接登錄。如果我們刪除cookie,則每次登錄必須從新填寫(xiě)登錄的相關(guān)信息。
2)在線(xiàn)商城“購(gòu)物車(chē)”中處理和設(shè)計(jì)。用戶(hù)可能在一段時(shí)間內(nèi)在同一家網(wǎng)站的不同頁(yè)面選擇不同的商品,可以將這些信息都寫(xiě)入cookie,在最后付款時(shí)從cookie中提取這些信息,當(dāng)然這里面需要考慮安全和性能問(wèn)題。
感謝各位的閱讀,以上就是“Java Session和Cookie的區(qū)別是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java Session和Cookie的區(qū)別是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。