Java設置session超時(失效)的三種方式


轉自:http://blog.csdn.net/hu_shengyang/article/details/8021435

 

1.      在web容器中設置(此處以tomcat為例)

 

在tomcat-5.0.28\conf\web.xml中設置,以下是tomcat 5.0中的默認配置:

1 <!-- ==================== Default Session Configuration ================= -->
2 <!-- You can set the default session timeout (in minutes) for all newly   -->
3 <!-- created sessions by modifying the value below.    -->
4 
5 <session-config>
6         <session-timeout>30</session-timeout>
7 </session-config>

 

Tomcat默認session超時時間為30分鍾,可以根據需要修改,負數或0為不限制session失效時間。

 

2.      在工程的web.xml中設置

1 <!-- 時間單位為分鍾   -->
2 
3 <session-config>
4       <session-timeout>15</session-timeout>
5 </session-config>

 

 

3.      通過java代碼設置

 1 session.setMaxInactiveInterval(30*60);//以秒為單位 


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

 

 

session 在tomcat重啟后一般也不會失效,關閉瀏覽器后,session失效                   

  在一般系統中,也可能需要在session失效后做一些操作:
  (1)控制用戶數,當session失效后,系統的用戶數減少一個等,控制用戶數在一定范圍內,確保系統的性能。
  (2)控制一個用戶多次登錄,當session有效時,如果相同用戶登錄,就提示已經登錄了,當session失效后,就可以不用提示,直接登錄了。


  那么如何在session失效后,進行一系列的操作呢?
  這里就需要用到監聽器了,即當session因為各種原因失效后,監聽器就可以監聽到,然后執行監聽器中定義好的程序就可以了。


  監聽器類為:HttpSessionListener類,有sessionCreated和sessionDestroyed兩個方法 
  自己可以繼承這個類,然后分別實現。
  sessionCreated指在session創建時執行的方法
  sessionDestroyed指在session失效時執行的方法


  給一個簡單的例子:

 1 public class SessionListener implements HttpSessionListener{      
 2             
 3       public void sessionCreated(HttpSessionEvent event) {      
 4          HttpSession ses = event.getSession();      
 5          String id=ses.getId()+ses.getCreationTime();      
 6           SummerConstant.UserMap.put(id, Boolean.TRUE);     //添加用戶      
 7     }      
 8         
 9      public void sessionDestroyed(HttpSessionEvent event) {      
10          HttpSession ses = event.getSession();      
11          String id=ses.getId()+ses.getCreationTime();      
12           synchronized (this) {      
13                SummerConstant.USERNUM--;           //用戶數減一      
14                SummerConstant.UserMap.remove(id); //從用戶組中移除掉,用戶組為一個map     
15           }      
16        }      
17  }  

 

 

    

然后只需要把這個監聽器在web.xml中聲明就可以了

1 <listener>     
2       <listener-class>     
3              com.demo.SessionListener      
4        </listener-class>     
5 </listener>    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM