如何設(shè)置Session的有效期
在編寫web應(yīng)用程序時(shí),會(huì)經(jīng)常使用到Session來存儲(chǔ)和管理用戶的會(huì)話信息。而要有效地管理Session的生命周期,需要了解Session銷毀的兩種情況。一種是調(diào)用()方法手動(dòng)銷毀,另一種是超過了指
在編寫web應(yīng)用程序時(shí),會(huì)經(jīng)常使用到Session來存儲(chǔ)和管理用戶的會(huì)話信息。而要有效地管理Session的生命周期,需要了解Session銷毀的兩種情況。一種是調(diào)用()方法手動(dòng)銷毀,另一種是超過了指定的生命周期時(shí)間。
下面介紹幾種設(shè)置Session有效期的方法:
方法一:使用web app server的配置
對(duì)于使用web app server的開發(fā)者來說,比如websphere,可以通過設(shè)置超時(shí)時(shí)間來控制Session的有效期。一般可以將超時(shí)時(shí)間設(shè)置為30分鐘。
方法二:在web.xml中進(jìn)行配置
在項(xiàng)目的web.xml文件中,可以使用session-config元素來配置默認(rèn)的會(huì)話超時(shí)時(shí)間間隔,以分鐘為單位。session-timeout元素的值必須為整數(shù)。如果設(shè)置為零或負(fù)數(shù),表示會(huì)話永遠(yuǎn)不會(huì)超時(shí)。例如:
lt;session-configgt; lt;session-timeoutgt;30lt;/session-timeoutgt; lt;/session-configgt;
上述配置表示會(huì)話超時(shí)時(shí)間為30分鐘。
方法三:使用setMaxInactiveInterval方法
可以使用setMaxInactiveInterval方法來設(shè)置當(dāng)前會(huì)話的失效時(shí)間,單位為秒。這個(gè)方法設(shè)置的是當(dāng)前會(huì)話的時(shí)間,而不是整個(gè)web應(yīng)用程序的時(shí)間。如果設(shè)置的值為零或負(fù)數(shù),表示會(huì)話永遠(yuǎn)不會(huì)超時(shí)。通常用于設(shè)置當(dāng)前會(huì)話的有效期。這個(gè)方法的優(yōu)先級(jí)高于方法二中的配置。
方法四:自定義過期時(shí)間
可以在Session中保存一個(gè)Bean或Map對(duì)象,其中存儲(chǔ)著相應(yīng)的過期時(shí)間。一旦過期,就將其從Session中移除。這種方式可以使用一個(gè)線程來掃描Session,如果時(shí)間到了,則自動(dòng)清除過期的Session。也可以在使用Session時(shí)進(jìn)行判斷,使用完畢后及時(shí)移除過期的Session。如果需要使用線程自動(dòng)移除,可以使用Spring的線程池來實(shí)現(xiàn)。