javaweb监听器记录应用的在线人数[从学习到工作(四)]
来源:互联网 发布:知乎 桃花灼灼宜室宜家 编辑:程序博客网 时间:2024/06/07 00:55
1.web.xml的配置
<listener> <listener-class>com.test.listener.MySessionListener</listener-class></listener><session-config> <session-timeout>1</session-timeout> </session-config>2.java代码
package com.test.listener;import java.util.HashMap;import java.util.Map;import java.util.Set;import javax.servlet.ServletContext;import javax.servlet.ServletRequest;import javax.servlet.ServletRequestEvent;import javax.servlet.ServletRequestListener;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;/** * 记录访问应用的在线人数 * @author zenglx * */public class MySessionListener implements HttpSessionListener,ServletRequestListener{ private static String ip = null; private static Map<String,Integer> hm = new HashMap<String,Integer>(); private static int activeNumber = 1;public void sessionCreated(HttpSessionEvent event) {HttpSession session = event.getSession();ServletContext context = session.getServletContext();activeNumber = (Integer) (context.getAttribute(ip)==null?1:context.getAttribute(ip));if(hm.isEmpty()) {hm.put(ip, activeNumber);} else { Set<String> keys = hm.keySet(); //判断ip是否在map中 boolean isContans = keys.contains(ip); if(isContans) { activeNumber++; //将ip和session连接数放入map中,在key相同的情况下,Map中只有一个键值对 hm.put(ip, activeNumber); } else { hm.put(ip, activeNumber); }}context.setAttribute(ip, activeNumber);context.setAttribute(session.getId(),ip);System.out.println("sessionCreated:"+"在线人数:"+hm.size()+"---"+ip+"的session连接数:"+activeNumber+":"+session.getId());//将在线人数放入context中context.setAttribute("onLineNumber", hm.size());}public void sessionDestroyed(HttpSessionEvent event) {HttpSession session = event.getSession();ServletContext context = session.getServletContext();int active = (Integer) context.getAttribute((String) context.getAttribute(session.getId()));if(active == 1) {context.setAttribute((String) context.getAttribute(session.getId()), active);//map中移除session失效的iphm.remove((String) context.getAttribute(session.getId()));System.out.println("sessionDestroy:"+"在线人数:"+hm.size()+"---"+(String) context.getAttribute(session.getId())+"的session连接数:0:"+session.getId());//context中移除放入其中的ip地址和 sessionidcontext.removeAttribute((String) context.getAttribute(session.getId()));context.removeAttribute(session.getId());} else {context.setAttribute((String) context.getAttribute(session.getId()), active-1);System.out.println("sessionDestroy:"+"在线人数:"+hm.size()+"---"+(String) context.getAttribute(session.getId())+"的session连接数:"+(active-1)+":"+session.getId());//context中移除放入其中的 sessionidcontext.removeAttribute(session.getId());}//将在线人数放入context中context.setAttribute("onLineNumber", hm.size());}public void requestDestroyed(ServletRequestEvent arg0) {}public void requestInitialized(ServletRequestEvent event) {ServletRequest request = event.getServletRequest();HttpServletRequest req = (HttpServletRequest) request;ip = req.getRemoteAddr();}}
总结:记录在某一时间应用访问的在线人数,可以看到同一IP下有多少session连接
0 0
- javaweb监听器记录应用的在线人数[从学习到工作(四)]
- javaweb Filter在工作中的简单应用[从学习到工作(三)]
- Java监听器学习 统计当前在线人数
- Java监听器学习 统计当前在线人数
- SpringMVC的在线人数统计监听器
- Servlet的监听器监听在线人数功能
- 监听器监听在线人数
- 在线人数监听器
- 监听器统计在线人数
- 算法--从记录中统计在线人数
- javaWeb 在线人数统计
- 监听器案例----统计在线人数
- 基础的在线人数的统计. (监听器)
- 利用servlet的监听器实现在线人数监控的功能
- 利用servlet的监听器实现在线人数监控的功能
- 使用监听器实现一个统计网站在线人数的示例
- 用Servlet监听器实现对在线人数的统计
- 使用监听器实现一个统计网站在线人数的示例
- JavaScript 闭包环境很奇特 - 相当于类与实例的关系?!
- Web压力测试常用的工具有哪些
- hadoop 多目录输入,map到reduce如何排序
- Linux命令 之 cut
- c#类 学习笔记
- javaweb监听器记录应用的在线人数[从学习到工作(四)]
- VC编辑框内显示不同的字体
- hdu 1088 Write a simple HTML Browser(水题)
- Latex 如何书写算法流程
- Altera中TCL脚本管脚锁定的编写
- 需求引导设计 切莫教条主义
- 形态学-膨胀-C代码
- 求两个整数集合的交集(Java代码,索引法)
- javascript中的querySelector()和querySelectorAll()