·
Java中會話session的過期時間配置(容器session有效期),
以及session三種超時設置的優先級說明[Java web]
[Java web] 項目開發中,默認的Session存活時間是30分鍾
<session-config> <session-timeout>30</session-timeout> </session-config>
一、Java web開發中,三種會話Session過期時間(Session)設置位置和方法
以下以Tomcat8.5.27為例(其他版本可以參考替換); 為了方便,我們作以下簡寫。
簡寫: Tomcat的安裝目錄簡寫為{Tomcat_home};
工程目錄簡寫為{MyProject};
A. 在web容器中設置(此處以tomcat為例)
在{Tomcat_home}\conf\web.xml中設置, {Tomcat_home}是bin、conf等目錄所在的路徑,例如 E:\Apache-TomCat\TomCat8.5.27\
以下是tomcat 8中的默認配置:
<!-- ==================== Default Session Configuration ================= --> <!-- You can set the default session timeout (in minutes) for all newly --> <!-- created sessions by modifying the value below. --> <session-config> <session-timeout>90</session-timeout> </session-config>
</session-config>Tomcat默認session超時時間為30分鍾;可以根據需要修改,負數或0為不限制session失效時間。
B. 在工程的web.xml中設置
在{Tomcat_home}\WebApps\{MyProject}\WEB-INF\web.xml中設置, WebApps目錄 是docs、examples、、manager、ROOT等目錄所在的路徑,
例如 E:\Apache-TomCat\TomCat8.5.27\WebApps\[工程名稱]\\WEB-INF\web.xml
<!-- 時間單位為分鍾 --> <session-config> <session-timeout>180</session-timeout> </session-config>
工程和Web容器一樣,默認的session超時時間也是30分鍾;可以根據需要修改,負數或0為不限制session失效時間。
C. 通過java代碼設置
在Java代碼中使用java函數
session.setMaxInactiveInterval(100*60); //以秒為單位
上方設置的有效期是 100分鍾 (100* 60s)
特別注意:這里的單位是秒(s) ; 如果設置的值為零或負數,則表示會話將永不超時!
二、這三種設置session有效期方法的優先級
此處優先級按上面的三種方法(A、B、C)來展示,
如果A、B、C三種方法同時使用時的優先級如下:
三種設置session有效期方式的優先級: A < B < C
也就是說,如果同一個工程項目中,如果同時采用了上面的三種方式,則生效的是C :會話超時時間為100分鍾 (Java代碼中的部分優先生效)
另外,一般情況下,很少有人會直接在Java代碼中設置session的過期時間,所以,只需要工程項目的 \WebApps\{MyProject}\WEB-INF\web.xml中設置即可。
(可以直接在War包中做好控制)
···