session的使用
整体思路
重写HttpSessionListener方法;
在Listener中设置全局的计数器。
当网页有新的访问就更新计数器。
然后在服务端设置一个超时时间,
超过一定时间且用户没有活动时,
Session才会过期然后触发事件。
所以这个统计不会是实时准确的。
实验效果
Listener.java
package com.fakeweb.session; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; @WebListener public class SessionListener implements HttpSessionListener{ private Integer TotalOnline=0; SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); @Override public void sessionCreated(HttpSessionEvent arg0) { // TODO Auto-generated method stub TotalOnline++; System.out.println("已创建"+sdf.format(new Date())+"目前在线人数:"+TotalOnline); arg0.getSession().getServletContext().setAttribute("online", TotalOnline); /* * 参考链接 * https://www.pocketdigi.com/20120405/753.html */ } @Override public void sessionDestroyed(HttpSessionEvent arg0) { // TODO Auto-generated method stub TotalOnline--; System.out.println("已销毁"+sdf.format(new Date())+"目前在线人数:"+TotalOnline); arg0.getSession().getServletContext().setAttribute("online", TotalOnline); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app ...> ... <listener> <listener-class>com.fakeweb.session.SessionListener</listener-class> </listener> <session-config> <session-timeout>2</session-timeout> </session-config> ... </web-app>
<input type="text" value="当前在线人数<%=(Integer)application.getAttribute("online")%>" ......>
百度云
链接: https://pan.baidu.com/s/1687WynllFZ0DN95TnsdGDQ 提取码: z5us 复制这段内容后打开百度网盘手机App,操作更方便哦
参考连接
https://www.pocketdigi.com/20120405/753.html