这些内容只是本人在学习应用过程中的一些心得总结,放在这里希望和大家共同学习,有不到之处还请谅解...
在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加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实现在线人数统计的一个例子
首先,编写一个简单的计数器,代码如下:
- package gongfei.cmc.articles.onlinecounter;
- public class OnlineCounter {
- private static long online = 0;
- public static long getOnline() {
- return online;
- }
- public static void raise(){
- online++;
- }
- public static void reduce(){
- online--;
- }
- }
然后,编写HttpSessionListener实现类,在这个实现类的sessionCreated方法中调用OnlineCounter的raise方法,在sessionDestroyed方法中调用OnlineCounter的reduce方法,代码如下:
再然后,把这个HttpSessionListener实现类注册到网站应用中,也就是在网站应用的web.xml中加入如下内容:
- <web-app>
- ……
- <listener>
- <listener-class>
- gongfei.cmc.articles.example.OnlineCounterListener
- </listener-class>
- </listener>
- ……
- </web-app>
分享到:
相关推荐
总结,`HttpSessionListener`可以有效地帮助我们跟踪Web应用的在线用户数,而历史访问量的统计则需要结合其他手段,如`Filter`或`Servlet`,以及适当的日志存储和分析机制。在实际项目中,你还需要考虑性能优化、...
在Spring boot中通过HttpSessionListener监听器统计在线人数是一种常见的技术实现方式,适用于需要跟踪和管理用户会话状态的Web应用程序。以下是从给定文件中提炼的关键知识点。 首先,了解HttpSessionListener接口...
`HttpSessionListener`主要用于监听整个应用程序中的所有会话(`HttpSession`)的创建和销毁事件。这对于维护全局状态非常有用,例如在线用户列表。当一个新会话被创建或一个现有会话被销毁时,`HttpSessionListener...
用户登录时,调用LoginServlet,将用户名写入application的在线用户列表中,用户退出时,调用LogoutServlet,调用session.invalidate(),交给HttpSessionListener的sessionDestroyed()方法,将用户从在线列表中删除。...
这篇名为"javaee-Session持久化小结"的文章可能涵盖了如何在JavaEE应用中实现Session的创建、管理和持久化。 首先,Session的创建通常是通过HttpSession接口的`getSession()`方法完成的。当用户首次访问服务器时,...
jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。
1. 记录会话的创建和销毁时间,以分析应用程序的会话使用情况。 2. 在会话开始时执行初始化操作,如分配用户资源。 3. 在会话结束时清理资源,释放占用的内存或数据库连接。 4. 监控会话超时,实现自定义的会话过期...
Java 在 Jetty9 中使用 HttpSessionListener 和 Filter Java 在 Jetty9 中使用 HttpSessionListener 和 Filter 是一种常见的技术,用于监听和过滤 ...通过使用这两种技术,可以实现更加灵活和强大的 Web 应用程序。
【Java Web应用开发 53 课堂案例-应用监听器统计在线人数】 在Java Web开发中,统计在线用户数量是一项常见的需求,这通常涉及到监听器(Listeners)的使用。在这个课堂案例中,我们将学习如何利用`...
在Spring MVC框架中,Session是Web应用程序中一种重要的数据存储机制,它允许在多个相关请求之间保持用户状态。为了对Session的生命周期进行监控,开发者可以使用监听器(Listener)来捕获Session的创建、销毁以及...
它们可以通过实现Servlet接口或特定的监听器接口来创建,如`HttpSessionListener`、`ServletRequestListener`等。 5. **会话管理**: Servlet可以使用`HttpSession`对象管理用户的会话状态。会话跟踪是通过在...
监听器通过实现特定的接口(如HttpSessionListener、ServletRequestListener等)并注册在web.xml中来监听和响应事件。例如,一个监听器可能用于在用户会话超时时自动注销用户。 在这个"JavaWeb Servlet过滤监听应用...
以下是`SessionListener`的典型应用场景: 1. **统计在线用户**:当`sessionCreated()`被调用时,增加在线用户计数;当`sessionDestroyed()`被调用时,减少计数。这样可以实时知道网站有多少活跃用户。 2. **资源...
在Java Web开发中,过滤器(Filter)和监听器(Listener)是两个非常重要的概念,它们主要用于增强应用程序的功能和管理应用程序的状态。这篇文章将对这两者的应用进行深入的总结。 **过滤器Filter** 过滤器是在...
总结起来,Java Web的监听器机制是增强应用程序功能的强大工具,通过`ServletContextListener`、`HttpSessionListener`和`HttpSessionAttributeListener`,我们可以实现对Web应用程序上下文、HttpSession以及session...
- 各种监听器接口(如`ServletContextListener`、`HttpSessionListener`等):用于监听Web应用程序和会话的生命周期事件。 4. 生命周期方法: - `init(ServletConfig config)`: 初始化Servlet,只在Servlet实例化...
在Java Web开发中,监听器(Listener)是用于监听应用程序中特定对象状态变化的重要组件。它们遵循Java的事件处理模型,允许程序对某些特定事件做出响应。本篇将深入讲解`Listener`的概念、作用以及如何通过实例代码...
J2EE(Java 2 Platform, Enterprise Edition)是Sun Microsystems(现已被Oracle收购)为简化企业级应用开发而设计的一套标准,它包含了多种组件、API和服务,旨在支持大型分布式网络应用的开发。其中,对在线用户...
### 小结 在这个"关于监听器Listener和过滤器的小demo"中,作者可能创建了一个简单的Web应用程序,用以演示如何使用监听器监听应用程序的事件,以及如何使用过滤器处理请求和响应。文件`day10.html`和`day10.md`...
在Java Web开发中,统计在线人数是一项常见的需求,...在实际应用中,你可能还需要根据项目需求进行相应的调整和优化,比如增加日志记录、异常处理等。项目中的`SessionListener`类应该包含了实现这些功能的具体代码。