`
bewithme
  • 浏览: 430464 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java web会话监听并使用spring注入

 
阅读更多

 

      在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>

 

 

如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!以下是我的支付宝,意思一下我将非常感激!
分享到:
评论

相关推荐

    Java Web 整合开发 完全自学手册 源代码

    10. **Spring框架**:Spring是Java Web开发中的主流框架,提供了依赖注入、AOP(面向切面编程)、数据访问、事务管理等功能。学习Spring Boot、Spring MVC和Spring Data,实现快速开发和微服务架构。 11. **Ajax与...

    java web开发实战1200例第i卷

    11. **Spring框架基础**:虽然未明确提及,但作为Java Web开发的主流框架,Spring可能在某些例子中出现,涉及依赖注入、AOP(面向切面编程)和Spring MVC的使用。 12. **Maven项目构建**:如果例子包含Maven工程,...

    Java Web开发实践教程 课件

    4. **Spring框架**: Spring是一个全面的企业级应用开发框架,它支持AOP(面向切面编程)、DI(依赖注入)、事务管理、数据访问和Web应用。Spring MVC是其Web开发部分,简化了构建RESTful服务和处理HTTP请求。 5. **...

    Java Web项目的完整案例概述和Spring boot部分代码示例.zip

    通过阅读“Java Web项目的完整案例概述和Spring boot部分代码示例.pdf”,你可以了解这些知识点的实际应用,并通过实际编码加深理解。这个案例将帮助你掌握如何利用Spring Boot构建高效的Java Web应用程序。

    Java Web整合开发王者归来

    3. 高级篇:此部分可能涉及MVC设计模式,讲解如何利用Java Web组件进行更复杂的业务逻辑处理,例如过滤器(Filter)和监听器(Listener)的使用,以及JSP自定义标签的开发。 4. Struts框架篇:Struts是经典的MVC...

    JAVA WEB项目开发案例精粹(源代码)

    Java Web项目开发案例精粹是针对使用Java语言进行Web应用程序开发的一个重要资源集合,它包含了丰富的源代码示例,旨在帮助开发者深入理解并实践Java Web技术。这些源代码实例覆盖了从基础到高级的各种应用场景,有...

    深入分析java web

    7. **MVC(模型-视图-控制器)**:这是Web应用常见的设计模式,书中可能介绍了如何使用Struts、Spring MVC等框架实现MVC架构。 8. **会话管理**:包括Cookie、Session等技术,用于在Web请求之间保持用户状态。 9. ...

    开发者突击Java Web主流框架

    2. **Spring框架**:Spring是Java Web开发中最广泛使用的框架之一,它不仅提供了MVC框架,还包含依赖注入(DI)和面向切面编程(AOP)等功能,支持事务管理、数据访问、安全控制等。 3. **Struts框架**:Apache ...

    java web课件

    6. **Java Web会话管理**:讲解如何使用session和cookie进行用户状态的维护,以及它们的区别和应用场景。 7. **过滤器和监听器**:讨论Servlet API中的Filter和Listener,它们用于拦截请求、响应,以及监听特定事件...

    30天学会java web方立勋ppt(全)

    2. **Spring MVC**:Spring框架的MVC模块是目前广泛使用的Java Web开发框架,它提供了依赖注入、AOP(面向切面编程)等功能,使开发更加灵活和高效。 3. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,...

    JAVA WEB开发源码

    通过这些章节的学习和实践,初学者可以全面掌握JAVA WEB开发的基本技能,并逐步提升到进阶水平。源码提供了实战案例,有助于加深理解,同时解决实际问题,对于自学JAVA WEB开发的人来说是一份宝贵的资源。

    Java Web编程宝典源代码

    6. **Spring框架**:Spring是Java Web开发的主流框架,提供依赖注入、AOP(面向切面编程)、MVC框架等功能。书中可能涵盖Spring的IoC容器、数据访问、事务管理等内容。 7. **Struts与Hibernate**:Struts是MVC框架...

    Java Web整合开发王者归来_源码下载

    《Java Web整合开发王者归来》源码下载是一个全面的资源集合,涵盖了多个核心Java Web技术,包括Spring、Struts2、数据库管理等多个方面。对于初学者或是从其他编程语言如C#转行到Java的开发者来说,这是一份非常...

    21天学通Java Web开发.PDF

    14. **框架**:Spring Framework是Java Web开发中的热门选择,它提供了依赖注入、AOP(面向切面编程)以及Spring MVC和Spring Boot等模块,简化了开发流程。 15. **持续集成/持续部署(CI/CD)**:了解Jenkins等...

    Java Web开发实战宝典 14.1-14.8 代码

    8. **Spring框架**:Spring框架是Java Web开发中的一个关键工具,提供了依赖注入、AOP(面向切面编程)和MVC框架等功能。14.0x的代码可能涉及Spring的配置、Bean的创建和管理,以及Spring MVC的控制器和视图解析。 ...

    Java Web 教程

    10. **Spring框架**:Spring是Java Web开发中最流行的框架之一,提供了依赖注入、AOP(面向切面编程)、MVC、数据访问、事务管理等多种功能。学习Spring MVC和Spring Boot对于现代Java Web开发至关重要。 在这个...

    java web 基础 简单增删改查

    Spring MVC是Java Web中广泛使用的MVC框架,提供了强大的依赖注入和AOP(面向切面编程)支持。 4. **数据库连接**:Java Web应用通常需要与数据库进行交互,如MySQL、Oracle或SQL Server。Java Database ...

    Java Web应用开发项目教程(附电子教案,程序源代码,习题答案)

    学习Servlet的生命周期、请求与响应处理、会话管理以及过滤器和监听器的使用,是构建动态Web应用的基础。 3. **JSP(JavaServer Pages)**:JSP是HTML与Java代码结合的页面,用于展示动态内容。理解JSP指令、脚本...

    java web开发教程

    5. **Java EE框架**:Spring框架是Java Web开发中的明星,提供了依赖注入、AOP(面向切面编程)和完整的MVC框架。学习Spring Boot可以快速搭建应用,而Spring MVC则用于处理Web请求。 6. **数据库连接**:Java Web...

Global site tag (gtag.js) - Google Analytics