session的生命周期是如何進行的?

session簡介

在計算機專業術語中,Session是指一個終端用戶與交互系統進行通信的時間間隔,通常指從注冊進入系統到注銷退出系統之間所經過的時間以及如果需要的話,可能還有一定的操作空間。

具體到Web中的Session指的就是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是用戶瀏覽這個網站所花費的時間。因此從上述的定義中我們可以看到,Session實際上是一個特定的時間概念。

需要注意的是,一個Session的概念需要包括特定的客戶端,特定的服務器端以及不中斷的操作時間。A用戶和C服務器建立連接時所處的Session同B用戶和C服務器建立連接時所處的Session是兩個不同的Session。

session生命周期

Session中的數據保存在服務器端,在客戶端需要的時候創建Session,在客戶端不需要的時候銷毀Session,使它不再占用服務器內存。前面說了服務器并不管客戶端是否依然存在,因而它也無法確定客戶端什么時間不再使用它,但是如果在客戶端不再用的時候不及時銷毀Session的話,服務器很快就會內存不足。為了解決這個問題,給Session加了一個生命周期,當服務器發現Session超過了它的生命周期,就會釋放該Session所占用的內存空間。

要了解Session首先要知道一個概念:Session的銷毀只有兩種情況:

第一:session調用了session.invalidate()方法.

第二:前后兩次請求超出了session指定的生命周期時間.

第二種情況的解釋:

Session生成后,只要用戶繼續訪問,服務器就會更新Session的最后訪問時間,并維護該Session。用戶每訪問服務器一次,無論是否讀寫Session,服務器都認為該用戶的Session"活躍(active)"了一次。

在ASP.NET中Session的默認生命周期是20分鐘,也就是當我們在9:00的時候設置了一個Session,如果在9:20之前客戶端沒有任何請求,那么它的生命周期就到9:20分鐘結束。但是一旦用戶在9:19又向服務器發送了一個請求,那么這個Session現在的生命周期就是在當前時間的基礎上再加上20分鐘,也就是此時這個Session的生命周期是到9:39結束。

舉例:當我們登陸一個網站,網站會記錄我們的個人信息如用戶名等,如果我們登陸了很長時間但是沒有任何操作,那么session超時,我們再次操作時會讓我們重新登陸。但是如果我們登陸后,一直在訪問這個網站,就不會出現session超時的問題,我們也無需重新登陸。(個人理解)

由于會有越來越多的用戶訪問服務器,因此Session也會越來越多。為防止內存溢出,服務器會把長時間內沒有活躍的Session從內存刪除。這個時間就是Session的超時時間。如果超過了超時時間沒訪問過服務器,Session就自動失效了。

Session的超時時間為maxInactiveInterval屬性,可以通過對應的getMaxInactiveInterval()獲取,通過setMaxInactiveInterval(longinterval)修改。

Session的超時時間也可以在web.xml中修改。另外,通過調用Session的invalidate()方法可以使Session失效。

60??????

注意:參數的單位為分鐘,而setMaxInactiveInterval(int s)單位為秒。

web.config里設置

Session具有以下特點:

(1)Session中的數據保存在服務器端;

(2)Session中可以保存任意類型的數據;

(2)Session默認的生命周期是20分鐘,可以手動設置更長或更短的時間。

至于設置可以用代碼設置或者在Web.config中配置,不過不建議將Session的超時時間設置過長,因為默認情況下Session在內存中保存,設置時間過長保存的數據過大的話會導致內存不足。

注意:新開的瀏覽器窗口會生成新的Session,但子窗口除外。子窗口會共用父窗口的Session。例如,在鏈接上右擊,在彈出的快捷菜單中選擇"在新窗口中打開"時,子窗口便可以訪問父窗口的Session。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,836評論 18 139
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,340評論 11 349
  • Session機制 除了使用Cookie,Web應用程序中還經常使用Session來記錄客戶端狀態。Session...
    薛晨閱讀 6,977評論 4 34
  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,081評論 6 13
  • 林彪是赫赫有名的戰神,剛讀了他自己總結的9點經驗,感觸頗深。 9點經驗,概括起來是從個人,業務,團隊這3個角度去講...
    那些來了去了的人閱讀 5,948評論 0 0