1. 程式人生 > >設定session失效的幾種方法

設定session失效的幾種方法

在一般系統登入後,都會設定一個當前session失效的時間,以確保在使用者長時間不與伺服器互動,自動退出登入,銷燬session
具體設定的方法有三種
1.在web容器中設定(以tomcat為例)
在tomcat-7.0\conf\web.xml中設定,以下是tomcat7.0中預設配置:

<session-config>
<session-timeout>30</session-timeout>
</session-config>

tomcat預設session超時時間為30分鐘,可以根據需要修改,負數或0為不限制session失效時間

這裡要注意這個session設定的時間是根據伺服器來計算的,而不是客戶端。所以如果在除錯程式,應該是修改伺服器端時間來測試,而不是客戶端

2.在工程的web.xml中設定
<!--時間單位為分鐘-->

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

 這裡的15是指15分鐘失效

3.通過java程式碼設定
session.setMaxInactiveInterval(30*60);//以秒為單位,即在沒有活動30分鐘後,session將失效

三種方式優先等級:1 < 2 < 3

在一般系統中,也可能需要在session失效後做一些操作
1.控制使用者數,當session失效後,系統的使用者數減少一個,控制使用者數量在一定範圍內,確保系統的效能
2.控制一個使用者多次登入,當session有效時,如果相同使用者登入,就提示已經登入了,當session失效後,就可以不同提示,直接登入
那麼如何在session失效後,進行一系列的操作呢?
這裡就需要用到監聽器了,即當session因為各種原因失效後,監聽器就可以監聽到,然後執行監聽器中定義好的程式就可以了
監聽器類為:HttpSessionListener類,有sessionCreated和sessionDestroyed兩個方法


自己可以繼承這個類,然後分別實現
sessionCreated指在session建立時執行的方法
sessionDestroyed指在session失效時執行的方法
例子:

public class SessionListener implements HttpSessionListener{      
             
       public void sessionCreated(HttpSessionEvent event) {      
       HttpSession ses = event.getSession();      
       String id=ses.getId()+ses.getCreationTime();      
       SummerConstant.UserMap.put(id, Boolean.TRUE);     //新增使用者      
}      
       
  public void sessionDestroyed(HttpSessionEvent event) {      
      HttpSession ses = event.getSession();      
      String id=ses.getId()+ses.getCreationTime();      
      synchronized (this) {      
                     SummerConstant.USERNUM--;   //使用者數減一      
                     SummerConstant.UserMap.remove(id); //從使用者組中移除掉,使用者組為一個map      
              }      
       }      
}

然後只需要把這個監聽器在web.xml中宣告就可以了

<listener>
<listener-class>com.demo.OnlineUserListener</listener-class>
</listener>

相關推薦

C語言socket設定超時的方法

1.建立socket2.將該socket設定為非阻塞模式3.呼叫connect()4.使用select()檢查該socket描述符是否可寫(注意,是可寫)5.根據select()返回的結果判斷connect()結果6.將socket設定為阻塞模式(如果你的程式不需要用阻塞模式

設定backBarButtonItem的方法

替換返回按鈕的文字 很多app的要求所有的返回按鈕的title都是“返回”,如果上一層題目文字太多,下一層的返回按鈕文字就會顯示不完全,而且這樣可以使軟體顯得整潔。 方法一: 最普通的想法,A介面的navigationItem.backBarButtonItem修改

獲取session方法

獲取session常用的幾種方法 1.spring mvc中 HttpServletRequest request = ((ServletRequestAttributes) RequestConte

git設定忽略的方法

1、    環境 Windows XP SP3 + TortoiseGit + msysGit 2、  ignore files的三種方法 以下涉及的ignore檔案均為如下格式: # 以'#'開始的行,被視為註釋.                                      

設定session失效方法

在一般系統登入後,都會設定一個當前session失效的時間,以確保在使用者長時間不與伺服器互動,自動退出登入,銷燬session具體設定的方法有三種:1.在web容器中設定(以tomcat為例)在tomcat-7.0\conf\web.xml中設定,以下是tomcat7.0中預設配置:<session-

詳細解說Tomcat 設定虛擬路徑的方法及為什麼設定虛擬路徑

說明:此次使用的是Tomcat 7.0   很多朋友都會很疑惑,既然我們都知道在Tomcat伺服器上部署專案只要將專案打包,然後放到webapps目錄下就可以了,為什麼還需要配置虛擬路徑?的確,把專案放到webapps目錄下非常方便,至少在部署一個專案時,直接把專案扔到webapps目錄下所進行

python os 設定讀取環境變數的方法

專案中的跳板機是用的使用者公私鑰鑑權的,登入跳板機需要使用的每個人的name,因此如果將封裝的MySQL或者Redis方法中傳入USERNAME作為引數的話,感覺有點傻。因此,考慮將名字寫入環境變數。 兩種方法: 1、使用os.environ.setdefault方法寫入(或者直接

伺服器安全升級:ssl證書配置好,設定http跳轉https的方法 伺服器安全升級:ssl證書配置好,設定http跳轉https的方法

轉自https://blog.csdn.net/milli236/article/details/72142066 伺服器安全升級:ssl證書配置好,設定http跳轉https的幾種方法 2017年05月15日 14:17:09 milli236 閱

djjango cookie和session常用需求使用方法

------https://www.cnblogs.com/liuqingzheng/articles/8990027.html 需求情形一:正常設定cookie def test_cookie_login(request): if request.method == 'POST':

Linux設定免密登入的方法(ssh-copy-id / ansible)

一. ssh-keygen -t rsa 生成公鑰、私鑰 authorized_keys:存放遠端免密登入的公鑰,主要通過這個檔案記錄多臺機器的公鑰 id_rsa : 生成的私鑰檔案 id_rsa.pub : 生成的公鑰檔案 know_hosts : 已知的主

獲取session常用的方法

獲取session常用的幾種方法 1.spring mvc中 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

MAC 設定環境變數path的方法

mac 一般使用bash作為預設shell Mac系統的環境變數,載入順序為:/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc當然/etc/profile和/etc/paths是系統級別的,系統啟動就會載入,

在web page中使滑鼠右擊失效方法

這裡主要介紹兩種方法,一種是使用js來處理,另一種是在html屬性中設定。 方法一:js 1: <script language="javascript"> document.onmousedown=disableclick; status="Right Cli

設定textview字型顏色的方法

轉自:http://txlong-onz.iteye.com/blog/1249609 android中設定TextView的顏色有方法setTextColor,這個方法被過載了,可以傳入兩種引數。 Java程式碼   public void setText

eclipse配置JDK和設定編譯版本的方法

注:截圖時使用的eclipse4.6、jdk1.8、jdk1.7 一、eclipse配置JDK 開啟window–>preferences,彈出的頁面裡選擇java–>Installed JREs,開啟如下圖介面: 然後點選右側add按

設定Java環境變數的方法

JAVA中常用需要設定的三個環境變數:JAVA_HOME、CLASSPATH、PATH(一)配置環境變數:(相對路徑)1.JAVA_HOME=x:\jdk1.6.0JAVA_HOME2.用%JAVA_HOME%就可以取代:x:\jdk1.6.0這一部分CLASSPATH=.:

Qt常見設定背景圖片的方法總結

     常用的設定背景的方式有三種: 1、利用style sheet給窗體設定背景。 2、利用Qt UI設計器的改變樣式表進行設定。如下: 3、通過如下程式碼來實現。 QPixmap pixmap

Android : 顏色設定方法

平時開發中總是能遇見需要設定顏色的地方,而且每次設定的方法不盡相同,東西瑣碎,自己又不願意記這些,每次都是得查半天,現記錄一下,方便以後查詢 xml設定 這個誰都懂,不說了 class中設定 今天主要記錄這個 利用系統自帶的顏色類 tx.s

線程同步的方法

並且 word 進行 void 等待 輸出結果 每次 wait 無法訪問 用什麽關鍵字修飾同步方法 ? 用synchronized關鍵字修飾同步方法 同步有幾種實現方法,都是什麽?分別是synchronized,wait與notify wait():使一個線程處於等待狀

SQL Server遍歷表的方法

都是 遍歷 lec delet -s rop itl 想要 temp  在數據庫開發過程中,我們經常會碰到要遍歷數據表的情形,一提到遍歷表,我們第一印象可能就想到使用遊標,使用遊標雖然直觀易懂,但是它不符合面向集合操作的原則,而且性能也比面向集合低。當然,從面向集合操作的角