更新時間:2021-01-07 16:44:33 來源:動力節點 瀏覽1233次
Session 是Spring家族中的一個子項目,它提供一組API和實現,用于管理用戶的session信息,它把servlet容器實現的httpSession替換為spring-session,專注于解決 session管理問題,Session信息存儲在Redis中,可簡單快速且無縫的集成到我們的應用中;
Session的創建
當客戶端向服務器發送一個請求時,服務器首先檢查請求里是否包含SessionID,如果包含了SessionID則說明該客戶端已經登錄過并且服務端為此客戶端創建了一個Session,服務器就依照SessionID將這個Session在服務器中找出來(如果找不到,就有可能為他新創建一個)。如果客戶端請求里不包含SessionID,則為該客戶新創建一個Session并生成一個與此Session相關的SessionID。這個SessionID是不重復的,唯一的,不容易找到規律的字符串。這個SessionID將在本次響應中返回到客戶端保存。
Session是在服務端調用HttpServletRequest.getSession(true);這樣的語句時才被創建,如果JSP沒有顯式的使用page Session=”false”關閉Session,則JSP文件在編譯成Servlet時將會自動加上HttpServletRequest.getSession(true);這就是JSP內置對象session的由來。
Session的存儲機制
一般情況下,Session都是存儲在內存中,當服務器進程被停止或者重啟的時候,內存里的Session也會被清空。如果設置了Session的持久化特性,服務器就會把Session保存到硬盤上,當服務器進程重新啟動后Session里的信息能夠被再次使用。
Session的存儲方式及各存儲方式下Session屬性值是否需要可序列化:
InProc(默認):不需要序列化,存放在IIS進程中(內存),重啟IIS服務器時會話狀態消失。
SQLServer:需要序列化,存放在數據庫中,存儲在硬盤中。
StateServer:需要序列化,存放在Asp.Net狀態服務進程中,重啟Web應用時保留會話狀態。
Session的失效
Session在下列情況下失效:
程序調用HttpSession.invalidate();
距離上一次收到客戶端發送的SesionID時間間隔超過了Session的超時設置,tomcat默認session超時時間為30分鐘;
服務器進程被停止(非持久Session);
我們常說打開瀏覽器就創建了一個Session,關閉瀏覽器時Session也被刪除,事實上,除非程序通知服務器刪除Session,否則Session會被服務器一直保留,直到Session的失效時間到了自動刪除。服務器不知道瀏覽器被關閉,瀏覽器不會主動地在其關閉之前通知服務器它將要關閉。程序一般是在用戶注銷后刪除Session。我們產生這種錯覺地原因是:一般Session機制都使用cookie來保存SessionID,而一旦關閉瀏覽器,SessionID就不存在了,再連接服務器時找不到原來的Session了。如果cookie保存在硬盤中,或者用某種手段改寫瀏覽器發出的HTTP請求頭,把原來的SessionID發送給服務器,則再次打開瀏覽器仍然能夠找到原來的Session。
恰恰由于關閉瀏覽器時不會讓Session被刪除,迫使服務器為Session設置了一個失效時間。當距離客戶端上一次使用Session的時間超過失效時間,服務器就認為客戶端已經停止了活動,才會把Session刪除以節省存儲空間。
零基礎學習Session,推薦動力節點的Session菜鳥教程,此課程詳細講解Spring session如何解決集群模式/分布式/跨域環境下,實現session的同步共享問題,是構建大規模應用必須要考慮的一個問題。
課程學習目錄
1.Session視頻教程:Session的基本用法
2.Session視頻教程:Session的工作原理
3.Session視頻教程:Session的失效
4.Session視頻教程:Cookie禁用后的Session
5.Session視頻教程:Cookie禁用后重定向跳轉時Session的跟蹤
6.Session視頻教程:Cookie禁用后非重定向跳轉時Session的跟蹤
7.Session視頻教程:三個域屬性空間的對比
8.Session視頻教程:Eclipse中的WorkingSets用法
以上就是對“Session視頻教程,入門實戰精講”的介紹,希望對大家有所幫助,還想學習更多關于Java的課程,可以關注動力節點官網Java視頻教程,免費下載學習。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習