在java web应用中,当你想在建立会话或移除会话时,让系统做某些事情,比如说,统计在线用户,每当有用户登录时,或退出时,那么可以用下面这个监听器来监听。
import java.util.ArrayList; import java.util.List; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class OnlineCountListener implements HttpSessionAttributeListener ,HttpSessionListener,ServletContextListener{ /** * 定义监听的session属性名. */ public final static String LISTENER_NAME = "user_name"; /** * 定义存储客户登录session的集合. */ private static List sessions = new ArrayList(); private static int userSum=0; /** * session加入某值时此方法会被调用. * * @param HttpSessionBindingEvent * session事件 */ public void attributeAdded(HttpSessionBindingEvent sbe) { if (LISTENER_NAME.equals(sbe.getName())) { sessions.add(sbe.getValue()); } } /** * session失效时的监听方法. * * @param HttpSessionBindingEvent * session事件 */ public void attributeRemoved(HttpSessionBindingEvent sbe) { if (LISTENER_NAME.equals(sbe.getName())) { sessions.remove(sbe.getValue()); } } /** * session覆盖时的监听方法. * * @param HttpSessionBindingEvent * session事件 */ public void attributeReplaced(HttpSessionBindingEvent sbe) { if (LISTENER_NAME.equals(sbe.getName())) { sessions.remove(sbe.getValue()); sessions.add(sbe.getValue()); } } public void sessionCreated(HttpSessionEvent arg) { userSum++; } public void sessionDestroyed(HttpSessionEvent arg) { userSum--; } /** * 返回客户登录session的集合. * * @return */ public static List getSessions() { return sessions; } public static int getMemberSum() { return sessions.size(); } public static int getSum() { return userSum; } public static Boolean isExistInSessions(String username) { String user_name; for (Integer i = 0; i < sessions.size(); i++) { user_name = (String) sessions.get(i); if (user_name.equals(username)) { return true; } else { continue; } } return false; } //此方法在初始化监听器的时候会调用,用于spring注入 public void contextInitialized(ServletContextEvent sce) { WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); this.xxxService=(XxxService)applicationContext.getBean("xxxService"); } public void contextDestroyed(ServletContextEvent sce) { } private XxxService xxxService;//这里是你希望注入的服务类 public XxxService getXxxService(){ return this.xxxService; } public void setxxxService(XxxService xxxService){ this.xxxService=xxxService; } }
在web.xml中加入以下配置代码,注意必须在spring容器配置之后。
<listener> <listener-class> com.xxx.xxx.xxx.OnlineCountListener </listener-class> </listener>
然后在spring配置
<bean id="xxxService">xxx.xxx.xxx.xxxService</bean>
如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!以下是我的支付宝,意思一下我将非常感激!
相关推荐
10. **Spring框架**:Spring是Java Web开发中的主流框架,提供了依赖注入、AOP(面向切面编程)、数据访问、事务管理等功能。学习Spring Boot、Spring MVC和Spring Data,实现快速开发和微服务架构。 11. **Ajax与...
11. **Spring框架基础**:虽然未明确提及,但作为Java Web开发的主流框架,Spring可能在某些例子中出现,涉及依赖注入、AOP(面向切面编程)和Spring MVC的使用。 12. **Maven项目构建**:如果例子包含Maven工程,...
4. **Spring框架**: Spring是一个全面的企业级应用开发框架,它支持AOP(面向切面编程)、DI(依赖注入)、事务管理、数据访问和Web应用。Spring MVC是其Web开发部分,简化了构建RESTful服务和处理HTTP请求。 5. **...
通过阅读“Java Web项目的完整案例概述和Spring boot部分代码示例.pdf”,你可以了解这些知识点的实际应用,并通过实际编码加深理解。这个案例将帮助你掌握如何利用Spring Boot构建高效的Java Web应用程序。
3. 高级篇:此部分可能涉及MVC设计模式,讲解如何利用Java Web组件进行更复杂的业务逻辑处理,例如过滤器(Filter)和监听器(Listener)的使用,以及JSP自定义标签的开发。 4. Struts框架篇:Struts是经典的MVC...
Java Web项目开发案例精粹是针对使用Java语言进行Web应用程序开发的一个重要资源集合,它包含了丰富的源代码示例,旨在帮助开发者深入理解并实践Java Web技术。这些源代码实例覆盖了从基础到高级的各种应用场景,有...
7. **MVC(模型-视图-控制器)**:这是Web应用常见的设计模式,书中可能介绍了如何使用Struts、Spring MVC等框架实现MVC架构。 8. **会话管理**:包括Cookie、Session等技术,用于在Web请求之间保持用户状态。 9. ...
2. **Spring框架**:Spring是Java Web开发中最广泛使用的框架之一,它不仅提供了MVC框架,还包含依赖注入(DI)和面向切面编程(AOP)等功能,支持事务管理、数据访问、安全控制等。 3. **Struts框架**:Apache ...
6. **Java Web会话管理**:讲解如何使用session和cookie进行用户状态的维护,以及它们的区别和应用场景。 7. **过滤器和监听器**:讨论Servlet API中的Filter和Listener,它们用于拦截请求、响应,以及监听特定事件...
2. **Spring MVC**:Spring框架的MVC模块是目前广泛使用的Java Web开发框架,它提供了依赖注入、AOP(面向切面编程)等功能,使开发更加灵活和高效。 3. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,...
通过这些章节的学习和实践,初学者可以全面掌握JAVA WEB开发的基本技能,并逐步提升到进阶水平。源码提供了实战案例,有助于加深理解,同时解决实际问题,对于自学JAVA WEB开发的人来说是一份宝贵的资源。
6. **Spring框架**:Spring是Java Web开发的主流框架,提供依赖注入、AOP(面向切面编程)、MVC框架等功能。书中可能涵盖Spring的IoC容器、数据访问、事务管理等内容。 7. **Struts与Hibernate**:Struts是MVC框架...
《Java Web整合开发王者归来》源码下载是一个全面的资源集合,涵盖了多个核心Java Web技术,包括Spring、Struts2、数据库管理等多个方面。对于初学者或是从其他编程语言如C#转行到Java的开发者来说,这是一份非常...
14. **框架**:Spring Framework是Java Web开发中的热门选择,它提供了依赖注入、AOP(面向切面编程)以及Spring MVC和Spring Boot等模块,简化了开发流程。 15. **持续集成/持续部署(CI/CD)**:了解Jenkins等...
8. **Spring框架**:Spring框架是Java Web开发中的一个关键工具,提供了依赖注入、AOP(面向切面编程)和MVC框架等功能。14.0x的代码可能涉及Spring的配置、Bean的创建和管理,以及Spring MVC的控制器和视图解析。 ...
10. **Spring框架**:Spring是Java Web开发中最流行的框架之一,提供了依赖注入、AOP(面向切面编程)、MVC、数据访问、事务管理等多种功能。学习Spring MVC和Spring Boot对于现代Java Web开发至关重要。 在这个...
Spring MVC是Java Web中广泛使用的MVC框架,提供了强大的依赖注入和AOP(面向切面编程)支持。 4. **数据库连接**:Java Web应用通常需要与数据库进行交互,如MySQL、Oracle或SQL Server。Java Database ...
学习Servlet的生命周期、请求与响应处理、会话管理以及过滤器和监听器的使用,是构建动态Web应用的基础。 3. **JSP(JavaServer Pages)**:JSP是HTML与Java代码结合的页面,用于展示动态内容。理解JSP指令、脚本...
5. **Java EE框架**:Spring框架是Java Web开发中的明星,提供了依赖注入、AOP(面向切面编程)和完整的MVC框架。学习Spring Boot可以快速搭建应用,而Spring MVC则用于处理Web请求。 6. **数据库连接**:Java Web...