Servlet 监听 Session 实现用户计数

本文最后更新于:2024年3月18日 凌晨

Servlet 监听 Session 实现用户计数

pom.xml

1
2
3
4
5
6
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>

代码实现

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
//@WebListener
public class UserCount implements HttpSessionListener {
// 创建session监听。
// 一旦创建session就会触发一次。
@Override
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 = 1;
}else{
int count = onlineCount;

onlineCount = count + 1;
}
ctx.setAttribute("OnlineCount",onlineCount);
}

// 销毁session监听。
// 一旦销毁session就会触发一次。
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
se.getSession().invalidate();// 销毁session
Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
if (onlineCount == null) {
onlineCount = 0;
}else{
int count = onlineCount;

onlineCount = count - 1;
}
ctx.setAttribute("OnlineCount",onlineCount);
}

}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!