09
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package cn.org.jock.http.listener;
 
import java.util.Hashtable;
import java.util.Iterator;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* @author jock
*
*/
public class SessionListener implements HttpSessionListener {
 // 集合对象,保存session 对象的引用
 static Hashtable<String,HttpSession> ht = new Hashtable<String,HttpSession>();
 // 实现HttpSessionListener接口,完成session创建事件控制
 public void sessionCreated(HttpSessionEvent arg0) {
   HttpSession session = arg0.getSession();
   ht.put(session.getId(), session);
   System.out.println("create session :" + session.getId());
 }
 
 // 实现HttpSessionListener接口,完成session销毁事件控制
 public void sessionDestroyed(HttpSessionEvent arg0) {
   HttpSession session = arg0.getSession();
   System.out.println("destory session :" + session.getId());
   ht.remove(session.getId());
 }
 
 // 返回全部session对象集合
 
 static public Iterator getSet() {
   return ht.values().iterator();
 }
 
 // 依据session id返回指定的session对象
 static public HttpSession getSession(String sessionId) {
   return (HttpSession) ht.get(sessionId);
 }
 
}

别忘了在web.xml里加上
<listener>
   <listener-class>cn.org.jock.http.listener.SessionListener</listener-class>
</listener>

有了这个就可以方便的做很多事了,统计在线人数、在线列表、用户单一登陆等等,自己扩展吧。


Tags: , ,

作者:堕落天使

Leave a Reply

You must be logged in to post a comment.

Switch to our mobile site