<!-- 在线用户监听器 --> <listener> <listener-class>com.yingjun.sharing.web.SessionListener</listener-class> </listener>
package com.yingjun.sharing.web; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import com.yingjun.sharing.dto.SessionInfo; import com.yingjun.sharing.model.Online; public class SessionListener implements ServletContextListener, HttpSessionListener,HttpSessionAttributeListener { private ServletContext application = null ; @Override public void contextInitialized(ServletContextEvent sce) { //初始化一个application对象 application=sce.getServletContext(); //设置一个列表属性,用于保存在线用户信息 this.application.setAttribute("onlineList", new ArrayList<Online>()) ; } @Override public void contextDestroyed(ServletContextEvent sce) { // TODO Auto-generated method stub } @Override public void sessionCreated(HttpSessionEvent se) { } @Override @SuppressWarnings("unchecked") public void sessionDestroyed(HttpSessionEvent se) { System.out.println("@@@@@sessionDestroyed@@@@@"); //获取当前在线用户列表 List<Online> ols=(ArrayList<Online>) application.getAttribute("onlineList"); SessionInfo sf =(SessionInfo) se.getSession().getAttribute("SessionInfo"); if(sf!=null){ Online ol=new Online(sf.getUsername(), sf.getIp()); ols.remove(ol); System.out.println("向ServletContext中移除用户:"+sf.getUsername()); //将删除后的列表重新设置到application属性中 this.application.setAttribute("online", ols) ; } } @Override @SuppressWarnings("unchecked") public void attributeAdded(HttpSessionBindingEvent se) { System.out.println("@@@@@attributeAdded@@@@@"); //获取当前在线用户列表 List<Online> ols=(ArrayList<Online>) application.getAttribute("onlineList"); if("SessionInfo".equals(se.getName())){ SessionInfo sf =(SessionInfo) se.getValue(); if (sf != null) { Online ol=new Online(sf.getUsername(), sf.getIp()); ols.add(ol); System.out.println("向ServletContext中存入用户:"+sf.getUsername()); //将添加后的列表重新设置到application属性中 application.setAttribute("onlineList", ols); } } } @Override public void attributeRemoved(HttpSessionBindingEvent se) { } @Override public void attributeReplaced(HttpSessionBindingEvent se) { } }
package com.yingjun.sharing.model; public class Online { private String name; private String ip; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public Online() { super(); } public Online(String name, String ip) { super(); this.name = name; this.ip = ip; } }
相关推荐
通过这个“servlet 监听器范例”,我们不仅学习了如何使用Servlet监听器来统计在线用户,还了解了如何跟踪用户登录状态。这个示例对于理解和实现在Java Web应用程序中进行用户管理、监控系统活动具有很大的价值。
总之,Servlet监听器是Java Web开发中的强大工具,它允许程序员对Web应用的生命周期和用户交互进行细粒度控制。通过配置"web.xml"和编写监听器类,我们可以实现更高效、更灵活的应用程序管理。对于初学者来说,理解...
在本文中,我们将深入探讨Java EE(J2EE)中的Servlet监听器以及它们在Web应用程序中的作用,特别是在访问人数统计和引入MVC模式方面。首先,让我们了解什么是Servlet监听器。 Servlet监听器是Java Servlet规范的一...
Servlet监听器是Java Web开发中不可或缺的一部分,它增强了Web应用的灵活性和可扩展性,使得开发者能够在特定时刻执行自定义逻辑,比如记录日志、初始化数据、统计在线用户数量等。通过熟练掌握监听器,开发者能够更...
在这个“servlet监听器实现踢人小案例”中,我们将探讨如何利用监听器来实现在用户会话过期或者特定条件下自动“踢出”用户的功能。 首先,我们要了解Servlet API中的监听器接口。在`javax.servlet`包下,有两个...
Java Servlet监听器(Listener)是Java Web开发中的一个重要组件,它们允许开发者在特定事件发生时执行自定义逻辑,而无需直接修改原有的业务代码。监听器是Servlet规范的一部分,通过实现特定的接口,开发者可以...
Servlet监听器是Java Web开发中的一个重要概念,它允许开发者在特定事件发生时执行代码,比如在Web应用程序启动、停止时,或者在用户会话创建、销毁时。这为程序员提供了更多的控制权,使得他们能够更好地管理和监控...
Servlet监听器是Java Web开发中的一个重要概念,它们是Servlet API的一部分,允许开发者在特定的Servlet容器事件发生时执行代码。这些事件可以是Web应用程序启动、关闭,或者与HTTP会话相关的事件,如创建、销毁或...
例如,`ServletContextListener`接口用于监听Web应用的初始化和销毁,`HttpSessionListener`接口用于监听用户会话的创建和结束。当这些事件发生时,监听器中的相应方法会被自动调用。 在"利用servlet监听器,系统...
### Servlet监听器总结 #### 一、Listener概念与作用 - **定义**:在Java Web开发中,Listener(监听器)是一种特殊的组件,主要用于监听容器内的特定事件,并根据这些事件的发生执行相应的处理逻辑。 - **功能**...
监听器在实际项目中的应用场景非常广泛,比如初始化数据缓存、记录日志、统计在线用户数量等。"监听器.pdf"可能包含了详细的理论解释和示例代码,而"代码"文件可能提供了一些实际的监听器实现供参考。 通过学习这个...
- 实现非请求级的持久化操作,如统计在线用户数量、记录用户行为等。 - 在Web应用启动时进行全局资源初始化,如加载配置文件、数据库连接池等。 总的来说,Servlet监听器是Java Web开发中不可或缺的一部分,它们...
3. **HttpSessionListener**:监听会话的创建和销毁事件,用于管理会话生命周期,例如计数在线用户或释放会话资源。 4. **HttpSessionAttributeListener**:监听会话属性的添加、移除和替换事件,有助于会话数据的...
总结起来,通过Servlet监听器,我们可以实时监控Web应用程序的状态,尤其是在线用户的活动。这不仅有助于我们统计在线用户数量,还可以用于其他数据分析和优化用户体验的场景,如用户行为分析、资源分配等。
Servlet监听器是Java Web开发中的一个重要组件,它允许开发者在特定事件发生时执行代码,比如在Web应用程序启动或停止时,或者当用户会话开始或结束时。在本DEMO中,我们将深入探讨如何创建和使用Servlet监听器,...
Servlet监听器是Java Web开发中的一个重要概念,它属于Java Servlet规范的一部分,主要应用于JSP/Servlet环境。在Java Web应用程序中,监听器(Listeners)扮演着观察者(Observer)的角色,能够监听特定事件的发生...
2. **会话监听器**: 可以监控用户的会话状态,如检测会话超时、会话创建和销毁等,常用于实现单点登录、在线用户统计等功能。 3. **请求监听器**: 虽然Java标准API中没有直接提供请求监听器,但可以通过过滤器...