`
micheal19840929
  • 浏览: 163153 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

HttpSessionListener统计在线人数

    博客分类:
  • J2EE
阅读更多

      在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加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,就轻松实现了网站在线人数的统计功能。

package org.servlet;   
  
import java.util.HashSet;   
import javax.servlet.ServletContext;   
import javax.servlet.http.HttpSession;   
import javax.servlet.http.HttpSessionEvent;   
import javax.servlet.http.HttpSessionListener;   
  
/**  
 * 该HttpSessionListener统计该用用同时在线人数  
 *   
 * @author Administrator  
 *   
 */  
public class MySessionListener implements HttpSessionListener {   
  
    /**  
     *  当用户访问该应用时,自动被监听,创建会话  
     */  
    @SuppressWarnings("unchecked")   
    public void sessionCreated(HttpSessionEvent event) {   
           
        System.out.println("sessionCreated......................");   
           
        HttpSession session = event.getSession();   
        ServletContext context = session.getServletContext();   
  
        HashSet sessions = (HashSet) context.getAttribute("sessions");   
        if (sessions == null) {   
            sessions = new HashSet();   
            context.setAttribute("sessions", sessions);   
        }   
  
        // 新建的session添加到sessions中   
        sessions.add(session);   
        // 可以在别处从context范围中取出sessions集合   
        // 然后使用sessions.size()获取当前活动的session数量,即为"在线人数"   
  
    }   
  
    /**  
     * 当用户调用session.invalidate()方法,或会话超时时会执行该方法  
     */  
    public void sessionDestroyed(HttpSessionEvent event) {    
           
        System.out.println("sessionDestroyed......................");   
           
        HttpSession session = event.getSession();   
        ServletContext context = session.getServletContext();   
        HashSet sessions = (HashSet) context.getAttribute("sessions");   
           
        //销毁session, 从sessions中移除   
        sessions.remove(session);   
    }   
  
}  

 

<!-- 设置会话超时时间(分钟) -->  
<session-config>  
         <session-timeout>1</session-timeout>  
</session-config>  
<listener>  
         <listener-class>org.servlet.MySessionListener</listener-class>  
</listener>  

 

本文来自: (www.91linux.com) 详细出处参考:http://www.91linux.com/html/article/program/java/20070704/3752.html

分享到:
评论

相关推荐

    Spring boot通过HttpSessionListener监听器统计在线人数的实现代码

    主要介绍了Spring boot通过HttpSessionListener监听器统计在线人数的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    HttpSessionListener在线人数和历史访问量

    总结,`HttpSessionListener`可以有效地帮助我们跟踪Web应用的在线用户数,而历史访问量的统计则需要结合其他手段,如`Filter`或`Servlet`,以及适当的日志存储和分析机制。在实际项目中,你还需要考虑性能优化、...

    java统计在线人数

    以上就是通过`HttpSessionListener`统计在线人数的基本原理和实现步骤。在实际应用中,你可能还需要根据项目需求进行相应的调整和优化,比如增加日志记录、异常处理等。项目中的`SessionListener`类应该包含了实现...

    jsp 统计在线人数利用HttpSessionListener、HttpSessionBindingListener

    jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。

    java web在线人数统计/监听

    Java Web在线人数统计是Web应用程序中常见的需求,用于获取当前网站活跃用户数量。这个功能的实现通常基于HTTP协议的工作机制,特别是对Session的管理和监听。本文将深入探讨如何使用Java Web技术来监听并统计在线...

    JavaWeb 用session统计在线人数

    在JavaWeb开发中,"用session统计在线人数"是一个常见的需求,主要应用于网站或应用的实时用户活动监控。本文将详细解析如何利用session这一核心技术来实现这个功能。 首先,理解session的基本概念。在Web开发中,...

    监听器实现在线人数统计

    在这个场景下,我们关注的是如何利用监听器来实现在线人数的统计。在线人数统计是一项重要的功能,特别是在构建实时交互的Web应用或者聊天室时,能够提供实时的用户活跃度信息。 首先,我们需要理解业务需求。当...

    判断用户是否在线和实时统计在线人数

    在IT行业中,尤其是在Web开发领域,判断用户是否在线和实时统计在线人数是常见的需求,这有助于提供更好的用户体验和服务。这两个概念通常与Java Web和JSP技术密切相关,涉及到HTTP会话管理和数据结构的运用。 首先...

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

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

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

    本教程将深入讲解如何利用Java的监听器机制来统计在线人数,具体涉及到ServletContextListener、HttpSessionListener以及HttpSessionAttributeListener。 首先,`ServletContextListener`是Java Servlet API中的一...

    JSP 在线人数统计的实现

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

    一个统计在线人数的java类

    此类通过监听器实现了在线人数统计,其原理很简单,就是每当增加一个HttpSession时就触发了实现HttpSessionListener接口的类的SessionCreated()方法,使在线人数加1....

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

    `HttpSessionListener`是Java Servlet API的一部分,它允许开发者监听HTTP会话的创建和销毁事件,从而统计在线人数。 首先,我们需要创建一个简单的Java程序来存储和管理在线人数。这个程序叫做`OnlineCounter.java...

    Javaweb实现在线人数统计代码实例

    3. SessionCounter类:在本示例代码中,定义了一个SessionCounter类,该类实现了HttpSessionListener接口,用于统计在线人数。该类有三个方法:sessionCreated、sessionDestroyed和getActiveSessions,分别用于统计...

    记录同时在线人数 jsp

    在开发Java Web应用程序时,有时我们需要统计同时在线的用户人数,以便分析网站的活跃度或者进行资源优化。本文将深入探讨如何使用JSP(JavaServer Pages)和Servlet结合Java的session技术来实现这一功能。 首先,...

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

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

    利用HttpSessionListerner实现在线人数统计

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

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

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

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

    在这个场景中,我们将探讨如何使用`ServletContextListener`来实现在线人数的统计和显示人员列表的功能。 首先,让我们了解一下`ServletContextListener`的基本用法。要创建一个`ServletContextListener`,你需要...

Global site tag (gtag.js) - Google Analytics