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 進行設置