java web Session會話技術(原理圖解+功能+與Cookie的區別+基本使用)
java web Session會話技術(原理圖解+功能+與Cookie的區別+基本使用)
這是我關於會話技術的第二篇文章,對 Cookie有不瞭解的兄弟可以點選下方的Cookie跳轉
Cookie連結(點選跳轉)
會話技術
類似於生活中兩個人聊天,你說一句我說一句,在web中體現為伺服器端與客戶端的互動
一次會話中包含多次請求與響應,當伺服器請求瀏覽器是會話建立,當一方斷開時會話結束
什麼是Session
Session是伺服器端會話技術,一次會話的多次請求間共享資料,將資料儲存在伺服器物件中,HttpSession
怎麼獲取Session物件
HttpSession session = req.getSession();
Session物件的相關功能
是不是覺得似曾相識
void removeAttribute(String var1);
void setAttribute(String var1, Object var2);
Object getAttribute(String var1);
Session原理圖解,伺服器端如何保證一次會話範圍內多次獲取的Session物件是同一個
由圖可見Session是依賴於Cookie而存在的
大家現在一般都已經知道了Cookie是什麼以及作用,那麼接下來我來講講二者的區別
Cookie與Session的區別
1、資料存放位置不同:
cookie資料存放在客戶的瀏覽器du上,zhisession資料放在伺服器上。
2、安全程度不同:
cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙,考慮到安全應當使用session。
3、效能使用程度不同:
session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能,考慮到減輕伺服器效能方面,應當使用cookie。
4、資料儲存大小不同:
單個cookie儲存的資料不能超過4K,很多瀏覽器都限制一個站點最多儲存20個cookie,而session則儲存與服務端,瀏覽器對其沒有限制。
5、會話機制不同
session會話機制:session會話機制是一種伺服器端機制,它使用類似於雜湊表(可能還有雜湊表)的結構來儲存資訊。
cookies會話機制:cookie是伺服器儲存在本地計算機上的小塊文字,並隨每個請求傳送到同一伺服器。 Web伺服器使用HTTP標頭將cookie傳送到客戶端。在客戶端終端,瀏覽器解析cookie並將其儲存為本地檔案,該檔案自動將來自同一伺服器的任何請求繫結到這些cookie。
Session的相關問題
1. 當客戶端關閉後,伺服器不關閉,兩次獲取session是否為同一個?
- 預設情況下。不是。 * 如果需要相同,則可以建立Cookie,鍵為JSESSIONID,設定最大存活時間,讓cookie持久化儲存。
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60); response.addCookie(c);
2. 客戶端不關閉,伺服器關閉後,兩次獲取的session是同一個嗎?
- 不是同一個,但是要確保資料不丟失。tomcat自動完成以下工作 *
session的鈍化: * 在伺服器正常關閉之前,將session物件系列化到硬碟上 *
session的活化: * 在伺服器啟動後,將session檔案轉化為記憶體中的session物件即可。
3. session什麼時候被銷燬?
-
伺服器關閉
-
session物件呼叫invalidate() 。
-
session預設失效時間 30分鐘 選擇性配置修改 30
可以在Tomcat安裝目錄下的:Tomcat\apache-tomcat-8.5.31\conf\web.xml 進行設定