`

如何使用HttpSessionListener记录在线人数

阅读更多
在理解这个接口之前,先提出一个问题,就是假设我的web应用上想知道到底有多少用户在使用?

首先看一段代码。

package demo.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionCounter implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent event) {
        ServletContext ctx = event.getSession( ).getServletContext( );
        Integer numSessions = (Integer) ctx.getAttribute("numSessions");
        if (numSessions == null) {
            numSessions = new Integer(1);
        }
        else {
            int count = numSessions.intValue( );
            numSessions = new Integer(count + 1);
        }
        ctx.setAttribute("numSessions", numSessions);
    }
    public void sessionDestroyed(HttpSessionEvent event) {
        ServletContext ctx = event.getSession( ).getServletContext( );
        Integer numSessions = (Integer) ctx.getAttribute("numSessions");
        if (numSessions == null) {
            numSessions = new Integer(0);
        }
        else {
            int count = numSessions.intValue( );
            numSessions = new Integer(count - 1);
        }
        ctx.setAttribute("numSessions", numSessions);
    }
}

在这个解决方案中,任何一个Session被创建或者销毁时,都会通知SessionCounter 这个类,当然通知的原因是必须在web.xml文件中做相关的配置工作。如下面的配置代码:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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>Struts Examples</display-name>

<listener>
      <listener-class>demo.listener.SessionCounter</listener-class>
</listener>
... rest of web.xml

分享到:
评论

相关推荐

    HttpSessionListener在线人数和历史访问量

    我们可以在这个方法中记录在线人数的增加。例如,我们可以维护一个全局变量(如`AtomicInteger`)来存储当前在线人数,并在每次有新会话创建时加一。 ```java public class OnlineCountListener implements ...

    记录同时在线人数 jsp

    要记录在线人数,我们首先需要一个全局的地方来保存当前在线用户的session数量。这通常是在Servlet容器(如Tomcat)中,我们可以通过一个名为`HttpSessionListener`的接口来监听session的创建和销毁事件。当新的...

    java统计在线人数

    本项目通过实现`HttpSessionListener`接口,每隔一分钟动态更新在线人数,提供了高效且可靠的解决方案。以下是对这个话题的详细阐述: 1. **Java Servlet与HttpSessionListener** Java Servlet是Java EE平台中的...

    java web在线人数统计/监听

    我们可以维护一个全局变量,记录当前在线的Session数量,以此反映在线人数。 3. **实现细节** - **创建监听器类:** 创建一个实现了`HttpSessionListener`接口的类,重写`sessionCreated()`和`sessionDestroyed()`...

    JavaWeb 用session统计在线人数

    通常,我们可以定义一个全局变量(如`onlineCount`)来记录在线人数,并在用户登录时增加这个计数,在用户注销或session超时时减少计数。 以下是一个简单的步骤来实现这个功能: 1. **初始化session管理**:在...

    Javaweb监听器实例之统计在线人数

    - MyHttpSessionListener类的实现:实现HttpSessionListener接口,并定义一个全局变量num来记录当前在线人数。sessionCreated方法中每次会话创建时num自增,并更新***tContext中的在线人数。sessionDestroyed方法中...

    JSP 在线人数统计的实现

    在线人数统计的基本思路是利用Session来记录活跃用户。每当有用户访问网站时,如果该用户还没有Session,服务器就创建一个新的Session。统计在线人数时,遍历所有活跃的Session,计数器增加对应数量即可。 3. **...

    session统计在线人数.rar

    2. **SessionListener接口**:遵循Servlet API中的`HttpSessionListener`接口,以响应session的创建和销毁事件,确保准确更新在线人数。 3. **SessionTrackingFilter**:这是一个过滤器,可能被应用到所有请求上,它...

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

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

    springboot 用监听器统计在线人数案例分析

    总结来说,使用HttpSessionListener来统计在线人数是一种有效的方法,但在实现时需要注意细节,如确保session数量的准确更新以及处理session生命周期事件。这样,我们就可以通过访问ServletContext来获取当前在线...

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

    这个程序叫做`OnlineCounter.java`,它包含一个静态变量`online`来记录在线人数,并提供了`raise()`和`reduce()`方法来增加和减少在线人数。当一个新的会话被创建(即用户登录或新开浏览器窗口)时,`online`计数器...

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

    9. 接口实现:对于不使用JSP页面的应用程序,同样可以使用SessionCounter类来统计在线人数,并提供接口供其他模块调用。 10. 在线人数统计的优点:在线人数统计可以帮助我们更好地管理和优化系统资源,例如可以根据...

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

    可以维护一个全局变量或使用数据库来存储当前在线的session数量。每当有新的session创建,这个数值加一;当session过期或者用户主动结束会话时,数值减一。此外,为了防止因用户浏览器关闭或网络断开导致的session...

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

    7. **优化性能**:为了提高性能,可以使用缓存技术,如Redis,存储在线人数和访问量,减少数据库的读写操作。 通过以上步骤,我们可以构建一个基础的网站统计系统,有效地追踪和展示网站的在线人数和访问量。这将...

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

    通常,我们可以通过维护一个全局变量或者使用数据库记录在线用户数。每当用户session被创建时,增加计数;当session销毁时,减少计数。这可以实时反映网站的在线用户数量。 3. **定时销毁超时session**: 使用...

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

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

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

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

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

    随着技术的发展,使用Java语言实现在线人数统计也变得可行,而实现的方式之一就是通过Java的监听器。 监听器是Java Servlet规范中的一部分,它是一种特殊的对象,能够在某些特定的事件发生时得到通知。对于在线人数...

    显示在线人员

    我们可以在session创建时记录在线人数加一,session销毁(如超时或用户关闭浏览器)时减少在线人数。注意,这种方法只适用于用户保持活动状态的情况,如果用户离开但未关闭浏览器,session可能不会立即销毁,导致...

Global site tag (gtag.js) - Google Analytics