实现思路

常见的流程是,标准的mvc 即 登录表单,用户提交数据到登录检查,若登录检查通过以后,触发session事件,保存进入在线人员列表中,页面跳转到在线用户列表,若用户注销,从在线列表中删除.

代码如下

使用set集合, 即 set集合去重 原因 内部存储为map,mqp的键值对为hashcode 由于哈希表的特征 即 set可去重

项目结构

创建迭代器

package com.ming.listener;import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import java.util.Set;
import java.util.TreeSet;// 对servlet 上下文监听
public class OnlineUserList implements HttpSessionAttributeListener, HttpSessionListener, ServletContextListener {private ServletContext servletContext = null;// 增加session属性的时候,触发事件// session 属性增加@Overridepublic void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {Set all = (Set)this.servletContext.getAttribute("online");all.add(httpSessionBindingEvent.getValue());this.servletContext.setAttribute("online", all);}// 用户注销登录// session 属性删除@Overridepublic void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {Set all = (Set)this.servletContext.getAttribute("online");all.remove(httpSessionBindingEvent.getValue());this.servletContext.setAttribute("online", all);}@Overridepublic void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {}// 上下文初始化// 初始化@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {// 获得上下文实栗this.servletContext = servletContextEvent.getServletContext();// 设置保存set集合this.servletContext.setAttribute("online", new TreeSet());}@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {}@Overridepublic void sessionCreated(HttpSessionEvent httpSessionEvent) {}// session 销毁@Overridepublic void sessionDestroyed(HttpSessionEvent httpSessionEvent) {Set all = (Set)this.servletContext.getAttribute("online");all.remove(httpSessionEvent.getSession().getAttribute("id"));this.servletContext.setAttribute("online", all);}
}

配置文件

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><listener><listener-class>com.ming.listener.OnlineUserList</listener-class></listener><filter><filter-name>LoginFile</filter-name><filter-class>com.ming.filter.LoginFile</filter-class></filter><filter-mapping><filter-name>LoginFile</filter-name><url-pattern>/index.jsp</url-pattern></filter-mapping><servlet><servlet-name>login</servlet-name><servlet-class>com.ming.servlrt.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>login</servlet-name><url-pattern>/loginServlet</url-pattern></servlet-mapping>
</web-app>

在线用户统计

<%@ page import="java.util.Set" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="javax.swing.text.html.HTMLDocument" %><%--Created by IntelliJ IDEA.User: mingDate: 19-3-17Time: 上午4:14To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
您已经登录
显示用户在线
<%Set all = (Set)super.getServletContext().getAttribute("online");Iterator iterator = all.iterator();while(iterator.hasNext()){%><%=iterator.next()%><%}
%>
</body>
</html>

运行效果

监听器实栗 在线人数统计相关推荐

  1. 使用监听器Listener实现在线人数统计功能

    使用监听器Listener实现在线人数统计功能 目录树及使用的文件 1.首先创建一个CountListener类实现HttpSessionListener接口,实现接口的两个方法:sessionCre ...

  2. Java监听器实现网站在线人数统计

    1.监听器定义 监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求.服务端的操作等.通过监听器,可以自动激发一些操作,比如监听在线的用户的数量. 2.常见的监听器 1)Ser ...

  3. 利用监听器实现网站在线人数统计

    ServletContextListenerImpl.java代码 public class ServletContextListenerImpl implements ServletContextL ...

  4. Servlet监听器实现网站在线人数统计

    只提供思路: index.jsp <%@page import="cn.wfc.counter.CountListener"%> <%@ page languag ...

  5. linux服务器在线人数,servlet监听器实现在线人数统计源码实例

    servlet监听器实现在线人数统计 一.准备知识 1.servlet:servlet是一种运行服务器端的Java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求 ...

  6. SpringMVC的在线人数统计监听器

    一.session简单介绍 在做在线统计人数监听器前,需要先简单了解一下session.         Session存储在服务器端,一般放置在服务器的内存中(为了高速存取),Sessinon在用户 ...

  7. java怎么快速创建监听类_java_利用java监听器实现在线人数统计,1.在工程中创建监听类SessionLi - phpStudy...

    利用java监听器实现在线人数统计 1.在工程中创建监听类SessionListener 并且实现HttpSessionListener接口,代码如下 import javax.servlet.htt ...

  8. 利用HttpSessionListener实现网站在线人数统计功能

    为什么80%的码农都做不了架构师?>>>    在网站中经常需要进行在线人数的统计.过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加1,然后当用户点击 ...

  9. html页面统计在线人数,统计在线人数couter

    如何运用内置对象session和application对象实现统计在线人数 首先创建一个全局应用程序类Global.asax   protected void Application_Start 这几 ...

最新文章

  1. Catterplots包,让你绘制不一样的图
  2. 帝国cms后台编辑时日期显示保存使用时间戳的方法
  3. mysql删除一条记录
  4. Flowable 数据库表结构 ACT_RU_TASK
  5. app每秒并发数_性能测试连载 (38) jmeter 线程数与性能测试的负载模式
  6. C# 代码生成器 amp; 网站架构设计
  7. Delphi MlSkin v3.9 (2019.4.15)发布啦! 它能让你的程序拥有像QQ一样多彩炫丽的外观...
  8. php file_get_contents 效率,php 浅析file_get_contents、curl 的效率和稳定性
  9. Linux环境下实现简易的DNS域名解析过程
  10. Linux下执行程序出现 Text file busy 提示时的处理方式
  11. HTML+CSS实现个人简历
  12. R语言绘图基础篇-线图
  13. 固态激光雷达:扫地机器人的旋转激光雷达的三角测距示意原理与分析
  14. 数据库数据模型理解 概念数据模型 逻辑数据模型 物理数据模型区别和联系
  15. python与环境统计学--两样本均值的差异显著性检验之z检验,t检验和对应例题代码展示(一)
  16. 【labelme格式json转为labelimg格式的xml(VOC)】
  17. T三茶说:客来敬茶,茶艺师教您如何奉茶!
  18. sobel算子 拉普拉斯算子以及散度与梯度的概念
  19. ArcGIS分级显示
  20. 推荐算法之Co-Clustering算法

热门文章

  1. Android Weekly Notes Issue #218
  2. 迭代器——STL关键所在
  3. Sublime Text 常用环境和插件配置
  4. Node.js压缩web项目中的js,css和图片
  5. 总结在开发中常用的Linux命令
  6. 测试centos x64 6.2安装oracle 11G
  7. 转载一个程序员的游戏之路
  8. 更灵活的定位内存地址的方法05 - 零基础入门学习汇编语言36
  9. 《Head.First设计模式读书笔记》之设计原则一、二和三
  10. Swift 中的Closures(闭包)详解