看見小夥伴留言
要娜姐分享
Cookie 和 Session 的區別
那好的今天我們就來認識一下
Cookie 和 Session 吧
Servlet 會話
想要了解Cookie和Session首先要了解會
什麼是會話!會話指用戶打開一個瀏覽器,訪問一個網站,只要不關閉該瀏覽器,不管該用戶點擊多少個鏈接,訪問多少資源,直到用戶關閉瀏覽器,整個這個過程我們稱之為一次會話。會話過程中要解決的一些問題?每個用戶在使用瀏覽器與服務器進行會話的過程中,不可避免各自會產生一些數據,服務器要想辦法為每個用戶保存這些數據。
例如:多個用戶打開今日頭條各自商品,服務器應該想辦法把每一個用戶購買的商品保存在各自的地方,以便於這些用戶點擊結賬時 servlet 可以得到用戶各自購買的商品為用戶結賬。
每一次請求中,客戶端必須將會話 ID(JSESSIONID) 發送給服務端。這樣,服務器就能辨認客戶端並維持會話狀態了。其中JSESSIONID是由 Tomcat 或 Jetty 等服務器產生的用於會話管理的 cookie 管理。
Web 服務器一般採用如方式來進行會話管理
1.通過保存在客戶端的 Cookie。
2.通過服務器端的 HttpSession 對象,要求客戶端開啟 Cookie。
3.如果客戶端禁用 Cookie,只能通過 URL 重寫方式。
cookiecookie技術可以做什麼?
1.保存用戶上次登錄時間。
2.顯示用戶瀏覽歷史。
3.把登錄的用戶和密碼記錄下來,下次登錄,不需要重新輸入。
什麼是 Cookie?服務器在客戶端保存用戶的信息,如登錄名,密碼等,就是 Cookie。Cookie(小甜餅) 是客戶端技術,服務器把每個用戶的數據以 cookie的形式寫給用戶各自的瀏覽器。當用戶使用瀏覽器再去訪問服務器中的 web 資源時,就會帶著各自的數據去。這樣 web 資源處理的就是用戶各自的數據了。
那麼現在我們來創建一個 Cookie
把登錄的用戶和密碼記錄下來
下次登錄不需要重新輸入
我們先創建一個工程
然後創建一個 index.html 登錄頁面
然後再建一個 Servlet
再來寫一個jsp頁面
(就是方便我們知道頁面程序運行成功了沒有)
現在來運行一下
點擊登錄
這就帶表我們的程序沒有問題可以正常執行
現在按下 F12 打開開發者調試工具
重新在頁面輸入賬號和密碼
夥伴們能看到我輸入的用戶名和密碼是什麼了嗎?
現在我們設置 cookie 已經設置完成了
下一步
讓我們的瀏覽器
得到 cookie 裡面的值
(這邊需要利用到 js 的知識)
效果就是:
總結:
1.Cookie 是在服務端創建,保存在瀏覽器這端。
2.Cookie 的生命週期可以通過 cookie.setMaxAge(2000) 設置。
如果不設置setMaxAge則該cookie的生命週期當瀏覽器關閉時,就消亡
3.Cookie 可以被多個瀏覽器共享(與session的區別)。
4.一個 web 應用可以保存多個 Cookie。
(如果 Cookie 重名了就會替換存在的 Cookie 值)
5.cookie存放的時候是以明文方式存放,因此安全較低。
(建議只保存用戶名,不保存密碼。)
注意:
1.保存在客戶端的 Cookies 會在每個 HTTP 請求中都要附帶發送,導致網絡傳輸數據增大,影響性能。
2.在 HTTP 請求以明文發送 Cookies,除非使用安全協議(HTTPS),否則會有安全問題。
3.Cookies 的大小限制在4KB(新版本放鬆至8 KB)左右,難以保存複雜的會話跟蹤信息。
4.用戶可以改變瀏覽器的設置,啟用或禁用 Cookies。如果用戶禁用Cookies,服務器就無法將 Cookies 保存至客戶端,從而無法使用Cookies 來跟蹤會話狀態。
5.安裝在客戶端的 Cookies 具有安全缺陷。一些瀏覽器自帶或安裝開發者工具包允許用戶查看、修改或刪除特定網站的 Cookies 信息。黑客可能採用跨站點腳本技術盜取用戶的 Cookies 信息,可能給用戶造成經濟或其他損失。
session
大家都有在網上購物的經歷吧?
不同的用戶登錄網站後,不管該用戶瀏覽該網站的哪個頁面都可以顯示登錄人的名字,同樣可以隨時去查看自己的購物車中的商品,而且我們的購物車中的商品也不一樣,這些都是怎麼實現的呢?
session技術
Session 是服務器端技術,利用這個技術,服務器在運行時可以為每一個用戶的瀏覽器創建一個獨享的 Session 對象,由於 Session 為用戶獨享,所以用戶在訪問服務器的 web 資源時,可以把各自的數據放在各自的 Session 中,當用戶再去訪問服務器中的其它 web 資源時,其它 web 資源再從用戶各自的Session 中取出數據為用戶服務。
我們創建一個 Session
創建一個監聽器
(用來監聽Session會話的創建與銷燬)
好咧!
現在我們打開了兩個瀏覽器
第一次訪問的時候,會創建一個 Session!並且提示你是新朋友,當我們刷新頁面之後,檢測到你不是第一次訪問,頁面上輸出歡迎回來!
同時監聽器在控制檯上輸出監聽到的Session的生命週期
Session小結1. session是存在服務器的內存中。
2. 一個用戶瀏覽器,獨享一個session域對象。
3. session中的屬性的默認生命週期是30min ,我們有3種 Session 生命週期的設置方式
第一種:tomcat/conf/web.xml
<session-config>
<session-timeout>30</session-timeout>
//表示30分鐘的意思
</session-config>
對所有的 web 應用生效
第二種:在單個web應用的下去修改 web.xml
<session-config>
<session-timeout>30</session-timeout>
</session-config>
session精確到分鐘,cookie精確到秒
如果發生衝突,則以自己的 web 應用的優先級高
第三種:直接在代碼中寫 session.setMaxInactiveinterval(30);
三十秒後session失效
5. session中可以存放多個屬性
6. session 可以存放對象
7. 如果 session.setAttribute(“name”,val) , 如果名字重複,則會替換該屬性.
Session 的作用
1.防止用戶非法登錄到某個頁面
2.用戶必須登錄!否則不能操作和管理頁面
這下了解
cookie 和 Session 的區別了嗎?
夥伴們?