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