`

(转)利用HttpSessionListener实现网站在线人数统计功能

阅读更多

在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加1,然后当用户点击退出按钮退出系统的时候计数器减1。这种处理方式存在一些缺点,例如:用户正常登录后,可能会忘记点击退出按钮,而直接关闭浏览器,导致计数器减1的操作没有及时执行;网站上还经常有一些内容是不需要登录就可以访问的,在这种情况下也无法使用上面的方法进行在线人数统计。
  我们可以利用Servlet规范中定义的事件监听器(Listener)来解决这个问题,实现更准确的在线人数统计功能。对每一个正在访问的用户,J2EE应用服务器会为其建立一个对应的HttpSession对象。当一个浏览器第一次访问网站的时候,J2EE应用服务器会新建一个HttpSession对象,并触发HttpSession创建事件,如果注册了HttpSessionListener事件监听器,则会调用HttpSessionListener事件监听器的sessionCreated方法。相反,当这个浏览器访问结束超时的时候,J2EE应用服务器会销毁相应的HttpSession对象,触发HttpSession销毁事件,同时调用所注册HttpSessionListener事件监听器的sessionDestroyed方法。
  可见,对应于一个用户访问的开始和结束,相应的有sessionCreated方法和sessionDestroyed方法执行。这样,我们只需要在HttpSessionListener实现类的sessionCreated方法中让计数器加1,在sessionDestroyed方法中让计数器减1,就轻松实现了网站在线人数的统计功能。
  下面就是利用HttpSessionListener实现在线人数统计的一个例子,这个例子已经在中创软件的J2EE应用服务器InforWeb中测试通过。
  首先,编写一个简单的计数器,代码如下:

  1. package gongfei.cmc.articles.onlinecounter;
  2. public class OnlineCounter {
  3.     private static long online = 0;    
  4.     public static long getOnline() {
  5.         return online;
  6.     }    
  7.     public static void raise(){
  8.         online++;
  9.     } 
  10.     public static void reduce(){
  11.         online--;
  12.    }
  13. }


  然后,编写HttpSessionListener实现类,在这个实现类的sessionCreated方法中调用OnlineCounter的raise方法,在sessionDestroyed方法中调用OnlineCounter的reduce方法,代码如下:

  1. package gongfei.cmc.articles.onlinecounter;
  2. import javax.servlet.http.HttpSessionEvent;
  3. import javax.servlet.http.HttpSessionListener;
  4. public class OnlineCounterListener implements HttpSessionListener {
  5.     public void sessionCreated(HttpSessionEvent hse) {
  6.         OnlineCounter.raise();
  7.     }
  8.     public void sessionDestroyed(HttpSessionEvent hse) {
  9.         OnlineCounter.reduce();
  10.     }
  11. }


  再然后,把这个HttpSessionListener实现类注册到网站应用中,也就是在网站应用的web.xml中加入如下内容:

  1. <web-app>
  2.     ……
  3.     <listener>
  4.         <listener-class>
  5.             gongfei.cmc.articles.example.OnlineCounterListener
  6.         </listener-class>
  7.     </listener>
  8.     ……
  9. </web-app>


  OK,在线人数统计功能已经实现,只要在JSP页面中加入下面这样的脚本就能显示但前在线人数了:

  1. <%@ page language="java" pageEncoding="GB2312" %>
  2. <%@ page import="gongfei.cmc.articles.onlinecounter.OnlineCounter" %>
  3. <html>
  4.     <head><title>On Line Counert</title></head>
  5.     <body bgcolor="#FFFFFF">
  6.         On line:<%=OnlineCounter.getOnline()%>
  7.     </body>
  8. </html>

分享到:
评论

相关推荐

    利用HttpSessionListerner实现在线人数统计

    以上就是利用`HttpSessionListener`实现在线人数统计的基本步骤和原理,通过结合Java后端和JavaScript前端,可以实现动态、实时的在线用户统计功能。这种方法简单实用,但在高并发场景下可能需要优化,以避免频繁的...

    监听器实现在线人数统计

    在线人数统计是一项重要的功能,特别是在构建实时交互的Web应用或者聊天室时,能够提供实时的用户活跃度信息。 首先,我们需要理解业务需求。当用户登录系统时,我们将其视为在线状态;当用户退出或长时间无操作时...

    JSP 在线人数统计的实现

    **JSP 在线人数统计的实现** 在Web开发中,实时在线人数统计是一项常见的需求,它可以帮助网站管理员了解当前有多少用户正在访问网站,以便优化资源分配和服务质量。JSP(JavaServer Pages)作为Java Web开发的重要...

    ex.zip_JSP在线人数统计_ex

    本项目"ex.zip_JSP在线人数统计_ex"显然关注的是如何在JSP环境中实现一个在线人数统计功能。这一功能对于网站管理员来说非常有用,能够实时了解当前访问网站的用户数量,从而对服务器性能进行优化或调整。 首先,...

    利用java监听器实现在线人数统计

    在线人数统计功能是网站或应用中常见的功能之一,它可以实时地帮助管理员了解当前有多少用户在线。在过去的ASP和***编程时代,实现这一功能相对简单。随着技术的发展,使用Java语言实现在线人数统计也变得可行,而...

    ServletContextListener完成在线人数统计和显示人员列表

    在Java Web开发中,`...通过以上步骤,你就可以利用`ServletContextListener`来实现在线人数统计和显示人员列表的功能了。这个技术对于理解和掌握Java Web应用的生命周期管理以及用户会话的处理非常有帮助。

    session初始化+网站流量统计+在线人数

    本主题将深入探讨如何进行session初始化、实现网站流量统计以及监控在线人数,这些都是Web应用开发中的重要环节。 首先,让我们了解什么是Session。在Servlet环境中,每当用户打开一个新的会话(比如首次访问网页)...

    JAVAWEB网站在线人数计数器

    这个Servlet负责处理请求,并可能更新服务器端的在线人数统计。 接下来是`OnlineCounterListener.java`,这是一个监听器类,实现了`ServletContextListener`和`HttpSessionListener`接口。这两个监听器在Servlet...

    JavaWeb 用session统计在线人数

    因此,更精确的在线人数统计可能需要结合其他技术,如Cookie、数据库记录或实时推送服务。 总结,JavaWeb通过session统计在线人数是基于session生命周期管理的一种常见实践。理解session的工作原理以及如何有效地...

    SessionManager:Java监听器实现在线人数统计Demo

    总结起来,"SessionManager:Java监听器实现在线人数统计Demo"是一个基于Java Servlet技术的实例,它利用HttpSessionListener监听器来跟踪用户会话的创建和销毁,进而统计在线用户数量。这个过程涉及了Servlet API、...

    java监听器学习 统计在线人数

    然而,对于简单的在线人数统计,我们通常只需要`HttpSessionListener`就足够了。 为了使这些监听器生效,我们需要在web.xml配置文件中注册它们: ```xml ... &lt;listener-class&gt;...

    java使用监听器实现一个统计网站在线人数的示例

    这篇文章介绍了通过使用Java的监听器(Listener)机制来实现网站在线人数统计的示例,重点在于如何利用ServletContextListener、HttpSessionAttributeListener和HttpSessionListener这三个监听器接口。 首先,我们...

    网站统计在线人数,当前年、月、日访问量JAVA代码

    在网站运营过程中,统计在线人数和访问量是至关重要的数据指标,它们可以帮助我们了解网站的活跃度、用户行为以及优化方向。本主题将详细介绍如何使用Java编程语言来实现这一功能,特别是关注当前年、月、日的访问量...

    在线人数统计

    在线人数统计是网站运营中常见的需求,用于了解网站的实时活跃用户数量。在这个小型案例中,我们使用了Java Servlet中的`HttpSessionListener`和`HttpSessionBindingListener`接口来实现这一功能。以下是对这两个...

    day18 监听器 统计在线人数,定时销毁超时session,钝化活化session,在线列表显示和踢人功能防止用户自动登录,在线支付

    在本主题“day18 监听器”中,我们将探讨如何利用监听器来统计在线人数、定时销毁超时session、实现session的钝化与活化,以及如何在系统中显示在线用户列表和实现踢人功能,从而防止用户自动登录。同时,还会涉及...

    Java Web应用开发 53 课堂案例-应用监听器统计在线人数.docx

    在这个课堂案例中,我们将学习如何利用`HttpSessionListener`接口来实现这一功能。`HttpSessionListener`是Java Servlet API的一部分,它允许开发者监听HTTP会话的创建和销毁事件,从而统计在线人数。 首先,我们...

    用户统计javaWeb

    在本案例中,“用户统计JavaWeb”涉及到了通过Java Web技术实现对用户登录状态的跟踪、在线人数统计等功能。 ### 2. Filter 和 Listener 的作用与实现 #### 2.1 Filter 概述 Filter 是 JavaWeb 中的一种用于处理...

    监听器访问计数过滤非法字符

    总之,监听器和过滤器是Java Web开发中的核心组件,它们可以帮助我们实现复杂的功能,如在线人数统计和数据安全过滤。通过合理地设计和使用这些组件,我们可以提升Web应用的性能和安全性,为用户提供更优质的体验。

    java web监听器统计在线用户及人数

    总结来说,通过结合使用`HttpSessionListener`和`ServletRequestListener`,并结合`web.xml`中的配置,可以有效地统计Java Web应用程序中的在线用户人数。需要注意的是,实际项目中可能还需要处理各种异常情况,如...

Global site tag (gtag.js) - Google Analytics