服務器session有效期「設置session有效時間的方法」

Cookie與Session的作用於原理

會話跟蹤是Web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤技術是Cookie與Session。Cookie通過在客戶端記錄信息確定用戶身份,Session通過在服務器端記錄信息確定用戶身份。
Cookie
Cookie實際上是一小段的文本信息。客戶端請求服務器,如果服務器需要記錄該用戶狀態,就產生一個用戶身份標識,然後在響應消息中將該標識號以Cookie的形式傳遞給瀏覽器.客戶端瀏覽器會把Cookie保存起來。瀏覽器在以後每次訪問該web服務器時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。服務器還可以根據需要修改Cookie的內容. Cookie不能被瀏覽器共享
Cookie具有不可跨域名性,例如瀏覽器訪問Google只會攜帶Google的Cookie,而不會攜帶Baidu的Cookie。Cookie的maxAge決定着Cookie的有效期,單位為秒(Second).

默認情況下,cookie是一個會話級別的,用戶退出瀏覽器後被刪除

Session
Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。這就是Session。
如果說Cookie機制是通過檢查客戶身上的“通行證”來確定客戶身份的話,那麼Session機制就是通過檢查服務器上的“客戶明細表”來確認客戶身份。Session相當於程序在服務器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。

Session保存在服務器端。為了獲得更高的存取速度,服務器一般把Session放在內存里。每個用戶都會有一個獨立的Session。如果Session內容過於複雜,當大量客戶訪問服務器時可能會導致內存溢出。因此,Session里的信息應該盡量精簡。

session工作原理
(1)web不會在客戶端開始訪問它時創建session,在訪問特殊的程序並且該程序(servlet)決定與客戶端開啟會話時,服務器生成一個唯一值,稱為Session ID(好像是通過取進程ID的方式取得的)。服務器開闢一塊內存,對應於該Session ID。
(2)服務器再將該Session ID寫入瀏覽器的cookie。
(3)服務器內有一進程,監視所有Session的活動狀況,如果有Session超時或是主動關閉,服務器就釋放該內存塊。
(4)當瀏覽器連入服務器時並請求Session時,服務器就讀瀏覽器Cookie中的Session ID。
(5)然後,服務檢查該Session ID所對應的內存是否有效。
(6)如果有效,就讀出內存中的值。
(7)如果無效,就建立新的Session。

tomcat默認設置是30分鐘
具體設置很簡單,方法有三種:
(1)在主頁面或者公共頁面中加入:
session.setMaxInactiveInterval(900);
參數900單位是秒,即在沒有活動15分鐘後,session將失效。設置為-1將永不關閉。
這裡要注意這個session設置的時間是根據服務器來計算的,而不是客戶端。所以如果是在調試程序,應該是修改服務器端時間來測試,而不是客戶端。

(2)也是比較通用的設置session失效時間的方法,就是在項目的web.xml中設置

<session-config>
<session-timeout>15</session-timeout>
</session-config>

這裡的15也就是15分鐘失效.

(3)直接在應用服務器中設置,如果是tomcat,可以在tomcat目錄下conf/web.xml中
找到元素,tomcat默認設置是30分鐘,只要修改這個值就可以了。
需要注意的是如果上述三個地方如果都設置了,有個優先級的問題,從高到低:

(1)—>(2)—->(3)

生命周期:
1)tomcat默認是30分鐘
2)因為session和cookie有關係,客戶端瀏覽器通過cookie維持該會話,cookie不支持跨瀏覽器共享,意味着如果把瀏覽器關該會閉的話該會話就會失效(但服務端還保存着)。因此同一機器的兩個瀏覽器窗口訪問服務器時,會生成兩個不同的Session。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/259116.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-15 16:30
下一篇 2024-12-15 16:30

相關推薦

發表回復

登錄後才能評論