娜姐帶你認識Java-cookie&session

編程語言 Java 腳本語言 Tomcat web前端開發學習 web前端開發學習 2017-11-02

看見小夥伴留言

要娜姐分享

Cookie 和 Session 的區別

娜姐帶你認識Java-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 登錄頁面

娜姐帶你認識Java-cookie&session

Java學習交流群:495273252

然後再建一個 Servlet

娜姐帶你認識Java-cookie&session

Java學習交流群:495273252

再來寫一個jsp頁面

(就是方便我們知道頁面程序運行成功了沒有)

娜姐帶你認識Java-cookie&session

現在來運行一下

娜姐帶你認識Java-cookie&session

點擊登錄

娜姐帶你認識Java-cookie&session

這就帶表我們的程序沒有問題可以正常執行

現在按下 F12 打開開發者調試工具

重新在頁面輸入賬號和密碼

夥伴們能看到我輸入的用戶名和密碼是什麼了嗎?

娜姐帶你認識Java-cookie&session

現在我們設置 cookie 已經設置完成了

下一步

讓我們的瀏覽器

得到 cookie 裡面的值

(這邊需要利用到 js 的知識)

娜姐帶你認識Java-cookie&session

效果就是:

娜姐帶你認識Java-cookie&session

總結:

1.Cookie 是在服務端創建,保存在瀏覽器這端。

2.Cookie 的生命週期可以通過 cookie.setMaxAge(2000) 設置。

如果不設置setMaxAge則該cookie的生命週期當瀏覽器關閉時,就消亡

3.Cookie 可以被多個瀏覽器共享(與session的區別)。

4.一個 web 應用可以保存多個 Cookie。

(如果 Cookie 重名了就會替換存在的 Cookie 值)

5.cookie存放的時候是以明文方式存放,因此安全較低。

(建議只保存用戶名,不保存密碼。)

娜姐帶你認識Java-cookie&session

注意:

1.保存在客戶端的 Cookies 會在每個 HTTP 請求中都要附帶發送,導致網絡傳輸數據增大,影響性能。

2.在 HTTP 請求以明文發送 Cookies,除非使用安全協議(HTTPS),否則會有安全問題。

3.Cookies 的大小限制在4KB(新版本放鬆至8 KB)左右,難以保存複雜的會話跟蹤信息。

4.用戶可以改變瀏覽器的設置,啟用或禁用 Cookies。如果用戶禁用Cookies,服務器就無法將 Cookies 保存至客戶端,從而無法使用Cookies 來跟蹤會話狀態。

5.安裝在客戶端的 Cookies 具有安全缺陷。一些瀏覽器自帶或安裝開發者工具包允許用戶查看、修改或刪除特定網站的 Cookies 信息。黑客可能採用跨站點腳本技術盜取用戶的 Cookies 信息,可能給用戶造成經濟或其他損失。

session

大家都有在網上購物的經歷吧?

不同的用戶登錄網站後,不管該用戶瀏覽該網站的哪個頁面都可以顯示登錄人的名字,同樣可以隨時去查看自己的購物車中的商品,而且我們的購物車中的商品也不一樣,這些都是怎麼實現的呢?

娜姐帶你認識Java-cookie&session

session技術

Session 是服務器端技術,利用這個技術,服務器在運行時可以為每一個用戶的瀏覽器創建一個獨享的 Session 對象,由於 Session 為用戶獨享,所以用戶在訪問服務器的 web 資源時,可以把各自的數據放在各自的 Session 中,當用戶再去訪問服務器中的其它 web 資源時,其它 web 資源再從用戶各自的Session 中取出數據為用戶服務。

我們創建一個 Session

娜姐帶你認識Java-cookie&session

創建一個監聽器

(用來監聽Session會話的創建與銷燬)

娜姐帶你認識Java-cookie&session

Java學習交流群:495273252

好咧!

現在我們打開了兩個瀏覽器

娜姐帶你認識Java-cookie&session

Java學習交流群:495273252

第一次訪問的時候,會創建一個 Session!並且提示你是新朋友,當我們刷新頁面之後,檢測到你不是第一次訪問,頁面上輸出歡迎回來!

同時監聽器在控制檯上輸出監聽到的Session的生命週期

娜姐帶你認識Java-cookie&session

Session小結1. session是存在服務器的內存中。

2. 一個用戶瀏覽器,獨享一個session域對象。

3. session中的屬性的默認生命週期是30min ,我們有3種 Session 生命週期的設置方式

第一種:tomcat/conf/web.xml

娜姐帶你認識Java-cookie&session

Java學習交流群:495273252

<session-config>

<session-timeout>30</session-timeout>

//表示30分鐘的意思

</session-config>

對所有的 web 應用生效

第二種:在單個web應用的下去修改 web.xml

娜姐帶你認識Java-cookie&session

Java學習交流群:495273252

<session-config>

<session-timeout>30</session-timeout>

</session-config>

session精確到分鐘,cookie精確到秒

如果發生衝突,則以自己的 web 應用的優先級高

第三種:直接在代碼中寫 session.setMaxInactiveinterval(30);

娜姐帶你認識Java-cookie&session

Java學習交流群:495273252

三十秒後session失效

5. session中可以存放多個屬性

6. session 可以存放對象

7. 如果 session.setAttribute(“name”,val) , 如果名字重複,則會替換該屬性.

Session 的作用

1.防止用戶非法登錄到某個頁面

2.用戶必須登錄!否則不能操作和管理頁面

這下了解

cookie 和 Session 的區別了嗎?

夥伴們?

相關推薦

推薦中...