06.JavaWeb Listener
06.JavaWeb Listener
Listener 基础
Listener 示例
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.github.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* @author: subei
* @Description: 统计网站在线人数 : 统计session
*/
public class OnlineCountListener implements HttpSessionListener {
/**
* 创建session监听: 看你的一举一动
* 一旦创建Session就会触发一次这个事件!
* @param se
*/
public void sessionCreated(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
System.out.println(se.getSession().getId());
Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
if (onlineCount==null){
onlineCount = new Integer(1);
}else {
int count = onlineCount.intValue();
onlineCount = new Integer(count+1);
}
ctx.setAttribute("OnlineCount",onlineCount);
}
/**
* 销毁session监听
* 一旦销毁Session就会触发一次这个事件!
* @param se
*/
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
if (onlineCount==null){
onlineCount = new Integer(0);
}else {
int count = onlineCount.intValue();
onlineCount = new Integer(count-1);
}
ctx.setAttribute("OnlineCount",onlineCount);
}
/**
* Session销毁:
* 1. 手动销毁 getSession().invalidate();
* 2. 自动销毁
*/
}
web.xml 中注册监听器;
1
2
3
4
<!--注册监听器-->
<listener>
<listener-class>com.github.listener.OnlineCountListener</listener-class>
</listener>
本文由作者按照 CC BY 4.0 进行授权