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

HttpSessionAttributeListener

    博客分类:
  • java
 
阅读更多

HttpSessionAttributeListener

监听已登录用户

当进行session操作时,如下:就会调用本监听

session.setAttribute("username","tom");

session.removeAttribute("username");

 

 

 

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

import com.stephen.utility.DateTool;

@WebListener
public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener {

	@Override
	public void attributeAdded(HttpSessionBindingEvent event) {
		System.out.println(DateTool.date2String()+"->[MyHttpSessionAttributeListener]"+event.getName()+"="+event.getValue()+" attributeAdded");
	}

	@Override
	public void attributeRemoved(HttpSessionBindingEvent event) {
		System.out.println(DateTool.date2String()+"->[MyHttpSessionAttributeListener]"+event.getName()+"="+event.getValue()+" attributeRemoved");
	}

	@Override
	public void attributeReplaced(HttpSessionBindingEvent event) {
		System.out.println(DateTool.date2String()+"->[MyHttpSessionAttributeListener]"+event.getName()+"="+event.getValue()+" attributeReplaced");
	}

}

 

 

 

    package com.nbrc.lddw.util;  
      
    import javax.servlet.http.HttpSession;  
    import javax.servlet.http.HttpSessionAttributeListener;  
    import javax.servlet.http.HttpSessionBindingEvent;  
    import javax.servlet.http.HttpSessionBindingListener;  
      
    import org.apache.commons.logging.Log;  
    import org.apache.commons.logging.LogFactory;  
    import org.springframework.context.ApplicationContext;  
    import org.springframework.web.context.support.WebApplicationContextUtils;  
      
    import com.nbrc.lddw.interceptor.AuthorizeInterceptor;  
    import com.nbrc.lddw.model.OnlineInfo;  
    import com.nbrc.lddw.model.User;  
    import com.nbrc.lddw.service.OnlineUserService;  
    /** 
     *  
     * @author fox 
     * @date 2009-02-09 
     * @description 已登录用户的监听 
     */  
    public class OnlineUserListener implements HttpSessionAttributeListener {  
        private static Log log = LogFactory.getLog(OnlineUserListener.class);  
      
        public void attributeAdded(HttpSessionBindingEvent hse) {  
            log.info("value bound! make session info ...");  
            HttpSession session = hse.getSession();       
            ApplicationContext context =   
                WebApplicationContextUtils.getRequiredWebApplicationContext(session.getServletContext());  
            OnlineUserService svr = (OnlineUserService)context.getBean("onlineService");  
            User u = null;  
            if(session.getAttribute(AuthorizeInterceptor.USR_KEY)!=null)  
                u = (User) session.getAttribute(AuthorizeInterceptor.USR_KEY);  
            if(u!=null && svr.findByUserId(u.getId())==null){             
                    OnlineInfo info = new OnlineInfo();  
                    info.setSessionId(session.getId());  
                    info.setUserId(u.getId());  
                    svr.save(info);  
            }else{  
                    log.error("can't get user in session");  
            }         
        }  
      
        public void attributeRemoved(HttpSessionBindingEvent hse) {  
            HttpSession session = hse.getSession();  
            ApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(session.getServletContext());  
            OnlineUserService svr = (OnlineUserService)context.getBean("onlineService");  
            if(svr.findById(session.getId())!=null){  
                svr.removeById(session.getId());                  
            }  
        }  
      
        public void attributeReplaced(HttpSessionBindingEvent se) {  
            // TODO Auto-generated method stub  
              
        }  
          
      
    }  

 

 

 

分享到:
评论

相关推荐

    servlet2.4doc

    attributeAdded(HttpSessionBindingEvent) - Method in interface javax.servlet.http.HttpSessionAttributeListener Notification that an attribute has been added to a session. attributeAdded...

    Servlet监听器例子

    在这个“Servlet监听器例子”中,我们将深入探讨如何使用`ServletContextListener`, `HttpSessionListener`, 和 `HttpSessionAttributeListener`来实现不同的功能。 首先,`ServletContextListener`接口用于监听...

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

    在Java Web开发中,`HttpSessionBindingListener`接口是一个非常重要的工具,用于监听session中的对象绑定和解绑事件。这个接口提供了对用户会话状态变化的观察能力,从而可以实现一些高级功能,如在线人员查看、...

    监听器显示登陆用户列表,并实现踢人功能

    在本主题中,我们将深入探讨如何利用`HttpSessionAttributeListener`来实现显示登录用户列表以及踢人功能。 `HttpSessionAttributeListener`是Servlet规范定义的一种监听器接口,它允许我们监听HTTP会话中的属性...

    监听session的创建到销毁

    `HttpSessionListener`可以监听Session的创建和销毁,而`HttpSessionAttributeListener`则可以监听Session属性的添加、移除和替换。 1. **创建Session监听器** 创建一个实现了`HttpSessionListener`接口的类,例如...

    servlet监听器

    HttpSessionAttributeListener接口的方法: voidattributeAdded(HttpSessionBindingEventhsbe) 若有对象加入Session的范围,通知正在收听的对象 voidattributeRemoved(HttpSessionBindingEventhsbe) 若有对象自...

    网络应用开发 之 监听对象的属性变更

    实现监听器通常需要创建一个类,该类实现特定的监听器接口,比如要监听域对象属性变更,我们可以实现`HttpSessionAttributeListener`。在类中定义对应事件的方法,例如`attributeAdded()`, `attributeRemoved()` 和 ...

    用户重复登录问题

    - **`HttpSessionAttributeListener`**:这个接口提供了三个方法,用于监听`HttpSession`属性的变化。 - `attributeAdded(HttpSessionBindingEvent se)`:当向会话中添加了一个新的属性时调用。 - `...

    Servlet监听器在基于移动Web在线考试系统中的应用.pdf

    在实现逻辑和流程设计中,Servlet监听器可以与HttpSessionAttributeListener结合使用,来实现在线考生的登录验证、断点续答和实时保存等功能。具体来说,可以在Servlet监听器中维护一个在线考生的列表容器,存放在线...

    JAVA SESSION监听器

    HttpSessionListener提供了对Session创建、销毁事件的监听,而HttpSessionAttributeListener则可以监听Session属性的变化,比如添加、移除和替换事件。 以下是创建一个简单的HttpSessionListener的例子: ```java ...

    使用监听器跟踪session的生命周期和session的属性

    - `HttpSessionAttributeListener` 是另一个Servlet API接口,专门用于监听Session属性的添加、移除和替换操作。 - `attributeAdded(HttpSessionBindingEvent event)` 在向Session添加新属性时被调用,可以用来...

    java监听器学习 统计在线人数

    本教程将深入讲解如何利用Java的监听器机制来统计在线人数,具体涉及到ServletContextListener、HttpSessionListener以及HttpSessionAttributeListener。 首先,`ServletContextListener`是Java Servlet API中的一...

    Java可以监听客户端的请求、服务端的操作等。

    这里主要涉及到了Java Web应用中的监听器,尤其是`HttpSessionListener`和`HttpSessionAttributeListener`。 ### 标题解析:Java可以监听客户端的请求、服务端的操作等 这个标题明确指出了Java可以通过特定的机制...

    JavaWeb程序设计习题参考答案(第7章).doc

    - 当调用`removeAttribute()`方法时,会触发`HttpSessionAttributeListener`的`attributeRemoved()`方法,该方法会在属性从会话中移除时被调用。 #### 3. 调用`HttpServletRequest`的`setAttribute()`方法时,会...

    session监听小例子

    2. `HttpSessionAttributeListener`: 提供了四个方法,`attributeAdded(HttpSessionBindingEvent se)`、`attributeRemoved(HttpSessionBindingEvent se)`、`attributeReplaced(HttpSessionBindingEvent se)`分别用于...

    学习servlet的实例和参考api

    学习servlet的实例 说明文件 blog ...类 HttpSession Cookie HttpSessionAttributeListener HttpServlet HttpServletRequest HttpServeltResponse <br>

    企业drp系统经典源码

    企业drp系统经典实现。 包括: v1.0 ... * HttpSessionAttributeListener * ServletContextListener v3.1 * JfreeChart的应用 v3.2 * 采用Ajax实现下拉列表的联动 v3.3 * 验证码的使用

    servlet-api-2.4.jar.zip

    javax.servlet.Filter javax.servlet.Servlet javax.servlet.FilterChain ...javax.servlet.FilterConfig ...javax.servlet.http.HttpSessionAttributeListener javax.servlet.http.HttpSessionActivationListener

    servlet监听器实现踢人小案例

    `HttpSessionListener`用于监听会话的创建和销毁事件,而`HttpSessionAttributeListener`则可以监听到会话属性的变化。 在本案例中,我们可能会实现`HttpSessionListener`,以便在会话开始和结束时执行相应的操作。...

    JSP监听器用法分析.docx

    4. **HttpSessionAttributeListener**:此接口允许开发者监听HttpSession中的属性变化,包括添加`attributeAdded(HttpSessionBindingEvent se)`、移除`attributeRemoved(HttpSessionBindingEvent se)`和更新`...

Global site tag (gtag.js) - Google Analytics