分享

HttpSessionAttributeListener用法

 WindySky 2007-09-21

HttpSessionAttributeListener用法- -

                                      

监听session中的对象,通过HttpSessionAttributeListener的接口,一个更巧妙的方法。

假设现在有这样需求,需要获得当前登陆用户的数量。

我们可以编写下列这样一个类来实现HttpSessionAttributeListener接口。

package demo.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class UserCounter implements HttpSessionAttributeListener {

    public void attributeAdded(HttpSessionBindingEvent event) {
        if (attributeIsUser(event))
            adjustUserCounter(event.getSession( ).getServletContext( ),
            true);
    }

    public void attributeRemoved(HttpSessionBindingEvent event) {
        if (attributeIsUser(event))
            adjustUserCounter(event.getSession( ).getServletContext( ),
            false);
    }

    public void attributeReplaced(HttpSessionBindingEvent event) {
    }

    private boolean attributeIsUser(HttpSessionBindingEvent event) {
        String name = event.getName( );
        Object value = event.getValue( );
        return "user".equals(name) &&
               value instanceof demo.app.domain.user;
    }

    private void adjustUserCounter(ServletContext ctx, boolean userAdded) {
        Integer counterObj = (Integer) ctx.getAttribute("numUsers");
        int counter = (counterObj == null ? 0 : counterObj.intValue( ));
        if (userAdded) {
          counter++;
        }
        else {
            if (counter > 0) counter--;
        }
        ctx.setAttribute("numUsers", new Integer(counter));
    }
}

完成以上代码后,就配置一下web.xml文件


    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java./dtd/web-app_2_3.dtd">
   

  Struts Cookbook - Chapter 7 Examples
 
 
      demo.listener.UserCounter
     

 

  ... rest of web.xml

同样还有其他的监听接口,例如

ServletContextAttributeListener
ServletRequestAttributeListener

http://spaces./members/Jauan/PersonalSpace.aspx?_c01_blogpart=blogmgmt&_c=blogpart

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多