JavaWeb設置session失效時間的三種方式以及注意事項
1、通過web容器配置
2、通過項目中的web.xml中配置
3、通過java代碼動態配置
4、優先級
當用戶登陸系統后,服務器會設置一個當前session失效的時間,以確保在用戶長時間不與服務器交互,自動銷毀session,退出登錄,釋放資源。
1、通過web容器配置
在web容器中設置,以Tomcat-9.0.16為例,在安裝目錄conf\web.xml文件中找到session-config元素,以下是默認配置:
tomcat默認session超時時間為30分鍾,可以根據需要修改,負數或0為永不失效。
需要注意這里時間單位為分鍾,參數必須為整數。
由於在服務器中設置,則session設置的時間是根據服務器來計算的,而不是客戶端。所以如果是在調試程序,應該是修改服務器端時間來測試,而不是客戶端。
2、通過項目中的web.xml中配置
在項目的web.xml中配置,以Eclipse for JavaEE為例,在WebContent\WEB-INF\lib文件夾下打開web.xml(如沒有則手動創建)
同樣,時間單位為分鍾,這里表示session在創建后10分鍾后失效
3、通過java代碼動態配置
session.setMaxInactiveInterval(10) ; //設置非活躍間隔時間
setMaxInactiveInterval(int second)不同於以上兩種方法,並且有幾個注意點:
(1)時間單位為秒
(2)此方法表示當前session在指定時間內若沒有與服務器發生任何交互后失效
(3)期間用戶的任何活動都將刷新session的失效時間,例如在10秒內用戶刷新頁面將重新計算失效時間
4、優先級
如果上述三種方法都設置了,那么優先級按照從高到低:代碼設置 > 項目web.xml設置 > 容器web.xml設置(3>2>1)