工具:Myeclipse或lomboz-eclipse
环境:xp,
服务器:tomcat6.0. 本机
使用技术: 监听器(对servlet上下文的监听和对session的监听)
-----------------------------------------------------------------------
首先介绍下监听器。
(-)监听器主要对三个事件的动作监听:
1 对servletContext的监听
2 对session的监听
3 对request的监听
注:今天只讨论第一和第二种监听,利用这两种监听来完成我们的在线人数统计的程序。
(二) 要想实现监听, 必须实现了一个或多个servlet事件监听器接口的类型。
(三)需要注意的是必须在部署描述符中配置实现类。
今天所使用的类和接口主要有:
import java.util.ArrayList;
import java.util.List;
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;
统计当前在线人员:
(1)思路:1.首先就是我们要实现几个类,哪几个类。首先在线人员,那就必须打开多个浏览器。那就要监听servlet上下文,把所以数据必须保存在application中,必须有一个servletContext对象。
2.针对session变化进行操作。如果登录成功,则将user保存到session中,session.setAttribute(“”);
如果用户注销,则从application中删除此记录。
(2)下面给出登录页面:
--------------------------------------------------login.jsp-----------------------------------
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<form action="" method="post">
用户名: <input type="text" name="name" />
<input type="submit" value="登录" />
<a href="logout.jsp">注销</a>
</form>
<%
request.setCharacterEncoding("gb2312");
if (request.getParameter("name") != null) {
session.setAttribute("uname",request.getParameter("name"));
}
%>
<h2>在线人员</h2>
<hr>
<%
List l = (List)application.getAttribute("alluser");
Iterator iter = l.iterator();
while (iter.hasNext()) {
%>
<li><%=iter.next()%></li>
<%
}
%>
2注销页面:这个就好简单了,直接调用session中的invalidate ()
------------------------------------------logout.jsp-----------------------------------
<%
session.invalidate();
%>
3监听类:
------------------------OnLineDemo.java----------------
package com.zhangkai.servlet;
import java.util.ArrayList;
import java.util.List;
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;
public class OnLineDemo implements ServletContextListener, HttpSessionListener,
HttpSessionAttributeListener {
// 声明一个ServletContext对象.
private ServletContext application = null;
public void contextInitialized(ServletContextEvent sce) {
// 容器初始化时,向application中存放一个空的容器
this.application = sce.getServletContext();
this.application.setAttribute("alluser", new ArrayList());
}
public void contextDestroyed(ServletContextEvent sce) {
}
public void sessionCreated(HttpSessionEvent se) {
}
public void sessionDestroyed(HttpSessionEvent se) {
// 将用户名称从列表中删除,首先拿到所以的在线人员,然后找到当前的用户,remove移除掉。
然后再把当前的所以人员保存到session中。
List l = (List) this.application.getAttribute("alluser");
String value = (String) se.getSession().getAttribute("uname");
l.remove(value);
this.application.setAttribute("alluser", l);
}
public void attributeAdded(HttpSessionBindingEvent se) {
// 如果登陆成功,则将用户名保存在列表之中
List l = (List) this.application.getAttribute("alluser");
l.add(se.getValue());
this.application.setAttribute("alluser", l);
}
public void attributeRemoved(HttpSessionBindingEvent se) {
}
public void attributeReplaced(HttpSessionBindingEvent se) {
}
Ok了,大体的通过监听session和servlet上下文实现了简单了在线人员的统计。
如果您有好的建议和写的有不对的地方,给我提出来。谢谢。。
分享到:
相关推荐
【网站计数器与在线人数统计】 在互联网领域,网站计数器和在线人数统计是衡量网站流量和活跃度的重要工具。本文将深入探讨这两种统计方法的原理、数据库设计以及具体的实现过程。 1. **计数器统计原理** 网站...
在线人数统计程序是一种常见的Web应用程序功能,用于估算和记录网站同时活跃用户数量。这个"在线人数统计程序.rar"是一个特别设计的解决方案,它无需依赖Global.asa文件,这对于那些不支持或限制使用此文件的免费Web...
标题中的“Excel模板公司人数统计.zip”表明这是一个包含Excel模板的压缩文件,专门用于统计公司的员工人数。在企业中,员工人数的统计是一项基础且重要的管理工作,它涉及到人力资源规划、成本计算、福利分配等多个...
"简单测试,session统计上线人数demo" 描述了这个压缩包内的内容是一份简单的示例代码,用于进行测试,目的是向开发者展示如何在Java应用中实现一个基础的在线人数计数功能。它可能包含一个基本的计数器,每次新的...
网页在线人数统计是网站...总之,网页在线人数统计是一个涉及多方面技术的问题,可以通过多种方式实现,上述方法仅是一种基础且直观的解决方案。在实际应用中,还需要根据网站的具体需求和环境进行相应的优化和调整。
这个名为“(课堂实践)MATLAB教室人数统计.7z”的压缩包文件显然包含了使用MATLAB编写的一个程序,该程序专门用于统计教室的人数。这样的应用在现实生活中非常实用,比如用于监控校园安全或者优化教室资源分配。 ...
本文将深入探讨如何使用SpringBoot 2.0与Netty-socket来实现一个实时在线人数统计的功能,并涉及到WebSocket协议的相关知识。 **SpringBoot 2.0** SpringBoot是Spring框架的一个轻量级容器,它简化了Spring应用...
"行业数据-2017-2019年泡泡玛特企业机注册会员人数统计.xls"表明数据是以Excel表格(.XLS)的形式存在,这是一种广泛使用的电子表格软件格式,用于组织和分析数据。这个表格可能包含了年份、月份、注册会员数量等...
在网站开发中,实时在线人数统计是一个常见的需求,它可以帮助网站管理员了解当前网站的活跃用户数量,对于优化服务器资源分配、调整运营策略具有重要意义。 【描述解析】 描述部分与标题相同,再次强调了这是个PHP...
【保姆式】基于MATLAB的教室人数统计是一个实用的项目,它利用计算机视觉技术来解决教育场所中的实际问题。MATLAB是一种强大的编程环境,尤其在数值计算、图像处理和信号处理方面表现出色,使得它成为这类应用的理想...
**JSP 在线人数统计的实现** 在Web开发中,实时在线人数统计是一项常见的需求,它可以帮助网站管理员了解当前有多少用户正在访问网站,以便优化资源分配和服务质量。JSP(JavaServer Pages)作为Java Web开发的重要...
在线人数统计程序能够实时追踪并显示网站当前的在线访问者数量,对于网站管理员而言,这是一个非常实用的功能,可以帮助他们了解网站的活跃度和用户流量。 【描述】: "基于PHP的在线人数统计程序源码.zip" 描述中...
【PHP+TXT在线人数统计】是一种常见的网站访问统计方法,主要通过PHP脚本与文本文件(TXT)交互来实现对当前在线用户数量的实时记录。这种方法适用于小型网站或个人项目,因为它简单易行且资源消耗较低。下面我们将...
在线人数统计是网络应用中常见的功能,用于实时展示当前网站或平台上有多少用户正在活动。在本场景中,我们将探讨如何使用JavaScript实现这样的统计模块,同时结合Java后端技术进行数据处理和存储。以下是关于这个...
在线和实时统计在线人数是网络应用中常见的需求,特别是在社交平台、在线教育或者游戏服务器等场景下,了解当前有多少用户在线对于系统优化、资源分配以及用户体验都有重要意义。在这个话题中,我们将深入探讨如何...
【PHP统计在线人数】 在网站开发中,统计在线人数是一项常见的...通过以上方法,我们可以实现一个基本的PHP在线人数统计功能。然而,这只是一个基础方案,实际应用中可能需要结合具体的业务场景和性能需求进行调整。
这个源码是专门用于统计易语言程序的使用次数和在线人数,这对于开发者来说非常有价值,因为它可以帮助他们了解其软件的受欢迎程度和活跃用户数量。 易语言是一款中国本土开发的编程语言,它以“易”为设计理念,...
在IT行业中,实时在线人数统计是一项重要的功能,尤其对于Web应用程序和网站来说,它能够帮助运营者了解网站的活跃...在线人数统计是Web开发中的基础功能,理解其原理和实现方式有助于提升网站的用户体验和运营效率。