`
junli0411
  • 浏览: 139223 次
  • 来自: ...
社区版块
存档分类
最新评论

利用servlet监听器实现jsp中在线人数统计的方法

阅读更多

在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加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中测试通过。
  首先,编写一个简单的计数器,代码如下:<o:p></o:p>

1.    package accp.onlinecounter; <o:p></o:p>

2.    public class OnlineCounter { <o:p></o:p>

3.        private static long online = 0;     <o:p></o:p>

4.        public static long getOnline() { <o:p></o:p>

5.            return online; <o:p></o:p>

6.        }     <o:p></o:p>

7.        public static void raise(){ <o:p></o:p>

8.            online++; <o:p></o:p>

9.        }  <o:p></o:p>

10.       public static void reduce(){ <o:p></o:p>

11.           online--; <o:p></o:p>

12.      } <o:p></o:p>

13.   } <o:p></o:p>


  然后,编写HttpSessionListener实现类,在这个实现类的sessionCreated方法中调用OnlineCounterraise方法,在sessionDestroyed方法中调用OnlineCounterreduce方法,代码如下:<o:p></o:p>

1.    package accp.onlinecounter; <o:p></o:p>

2.    import javax.servlet.http.HttpSessionEvent; <o:p></o:p>

3.    import javax.servlet.http.HttpSessionListener; <o:p></o:p>

4.    public class OnlineCounterListener implements HttpSessionListener { <o:p></o:p>

5.        public void sessionCreated(HttpSessionEvent hse) { <o:p></o:p>

6.            OnlineCounter.raise(); <o:p></o:p>

7.        } <o:p></o:p>

8.        public void sessionDestroyed(HttpSessionEvent hse) { <o:p></o:p>

9.            OnlineCounter.reduce(); <o:p></o:p>

10.       } <o:p></o:p>

11.   } <o:p></o:p>


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

1.    <web-app> <o:p></o:p>

2.        …… <o:p></o:p>

3.        <listener> <o:p></o:p>

4.            <listener-class> <o:p></o:p>

5.                accp.OnlineCounterListener <o:p></o:p>

6.            </listener-class> <o:p></o:p>

7.        </listener> <o:p></o:p>

8.        …… <o:p></o:p>

9.    </web-app> <o:p></o:p>


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

1.    <%@ page language="java" pageEncoding="GB2312" %> <o:p></o:p>

2.    <%@ page import="accp.OnlineCounter" %> <o:p></o:p>

3.    <html> <o:p></o:p>

4.        <head><title>On Line Counert</title></head> <o:p></o:p>

5.        <body bgcolor="#FFFFFF"> <o:p></o:p>

6.            On line:<%=OnlineCounter.getOnline()%> <o:p></o:p>

7.        </body> <o:p></o:p>

8.    </html> <o:p></o:p>

(转载文章请保留出处:北天JAVA技术网(www.java114.com))

分享到:
评论

相关推荐

    jsp中监听器实现在线用户统计

    Servlet监听器是实现了Java Servlet API中特定接口的Java类,这些接口定义了对不同类型的Servlet事件的监听方法。例如,`ServletContextListener`用于监听ServletContext的生命周期事件,而`HttpSessionListener`则...

    j2ee20:servlet04监听器(监听四大web域)(用于访问人数的统计)、mvc模式的引入

    在本文中,我们将深入探讨Java EE(J2EE)中的Servlet监听器以及它们在Web应用程序中的作用,特别是在访问人数统计和引入MVC模式方面。首先,让我们了解什么是Servlet监听器。 Servlet监听器是Java Servlet规范的一...

    JSP 在线人数统计的实现

    以上就是使用JSP实现在线人数统计的基本方法和关键点,具体实现可能需要根据项目需求和环境进行调整。在实际开发中,还要考虑到性能、可扩展性和用户体验等因素,确保统计的准确性和系统的稳定性。

    ex.zip_JSP在线人数统计_ex

    总的来说,"ex.zip_JSP在线人数统计_ex"项目提供了从监听器到JSP页面的完整解决方案,展示了如何利用Java Web技术来实时统计并展示网站的在线用户数。这对于开发者来说是一个实用的示例,有助于理解Web应用中的用户...

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

    总结来说,通过使用Java监听器实现在线人数统计,开发者可以利用servlet规范提供的接口来实时追踪和显示当前网站的活跃用户数量。这种方法不仅特别,而且对于理解Java Web开发中的事件驱动模型也非常有帮助。希望...

    Servlet监听器

    Servlet监听器是Java Web开发中的一个重要概念,它属于Java Servlet规范的一部分,主要应用于JSP/Servlet环境。在Java Web应用程序中,监听器(Listeners)扮演着观察者(Observer)的角色,能够监听特定事件的发生...

    JSP中的在线人数统计

    为了实现在线人数统计,我们首先需要创建一个监听器类`OnLineDemo.java`,该类实现了`ServletContextListener`、`HttpSessionListener`和`HttpSessionAttributeListener`接口。 1. **监听器类`OnLineDemo.java`**:...

    HttpSessionBindingListener实现在线人员查看即人数统计

    本文将深入探讨`HttpSessionBindingListener`的原理及其在实现在线人员统计中的应用。 `HttpSessionBindingListener`是Java Servlet API的一部分,位于`javax.servlet.http`包中。它定义了两个方法: 1. `...

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

    2. Servlet监听器的编写:创建实现特定监听器接口的类,重写对应的方法。 3. Servlet监听器的注册:在`web.xml`中配置监听器,使得服务器启动时能自动加载。 4. 使用静态变量进行全局状态管理:`OnlineCounter`类的`...

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

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

    java web在线人数统计/监听

    - **实时显示:** 为了让用户看到实时的在线人数,可以创建一个Servlet或JSP页面,从监听器中获取并显示当前的在线人数。 4. **优化与注意事项** - **并发问题:** 当大量用户同时进行登录或登出操作时,需要注意...

    JAVA jsp统计在线人数

    在Java JSP(JavaServer Pages)环境中,统计在线人数是一项常见的需求,这通常涉及到服务器端的会话管理、数据持久化以及实时性处理。这里我们将深入探讨如何利用JSP技术来实现这一功能。 首先,我们需要理解JSP的...

    jsp完成对在线人数的统计!

    ### JSP实现在线人数统计的知识点解析 #### 一、项目背景与目标 在Web应用开发中,了解网站的实时在线用户数量对于优化资源分配、提高用户体验等方面具有重要意义。本项目的目标是通过JSP(JavaServer Pages)技术...

    记录同时在线人数 jsp

    在开发Java Web应用程序时...总之,通过JSP、Servlet和session监听器,我们可以有效地统计和展示Java Web应用的实时在线人数。然而,实际应用中还需要考虑更多因素,如性能优化、用户体验以及更准确的在线状态判断等。

    servlet过滤器1

    监听器使得开发者能够自动化处理某些任务,如在线人数统计、资源初始化等,而无需在每个处理请求的Servlet或JSP中重复编写相同的代码。 综上所述,Servlet过滤器和监听器是Java Web开发中两个关键的工具,它们扩展...

    JSP监听器用法分析

    本文实例讲述了JSP监听器用法。分享给大家供大家参考,具体如下: 监听器也叫Listener,是servlet服务的监听器。它可以监听客户端的请求,服务端的操作等。比如统计在线用户数量。每当增加一个HttpSession时,就会...

    三歪教你学习过滤器和监听器1

    - Servlet监听器:如`ServletContextListener`、`ServletRequestListener`和`HttpSessionListener`,分别监听Servlet上下文的创建和销毁、请求的创建和结束以及Session的创建、销毁和活动状态变化。 8. **监听器...

    在线人数统计

    在线人数统计是网站运营中常见的需求,用于了解网站的...总之,这个案例提供了一个简单的在线人数统计方法,使用了Servlet API中的监听器来跟踪session的状态。在实际应用中,还需要根据项目需求进行相应的优化和扩展。

    JAVAWEB网站在线人数计数器

    2. 实现Servlet监听器(Listener),监控会话生命周期以更新计数器。 3. 配置Servlet来处理请求,获取并返回在线人数信息。 4. 在Servlet容器启动和关闭时管理计数器的生命周期。 通过这样的设计,开发者可以实时...

    Java EE 实验二Servlet程序设计.doc

    9. 通过监听器实现实现网站所有网页的访问次数累计,在线用户数统计、在线用户列表更新。 三、实验步骤 实验步骤包括: 1. 创建 Web 项目 myWebsite,並将所有文件放在一个包里面。 2. 在配置文件 web.xml 中分别...

Global site tag (gtag.js) - Google Analytics