您的位置:首页 > 其它

listener监听器介绍

2012-03-15 16:21 351 查看
 
         listener可以监听服务器相关的状态变化,当服务器端状态发生改变,将调用相应的Listener,这种机制可以称为回调机制,

      监听器主要有三类:

1、  ServletContextListener对servlet上下文进行监听

       ServletContextAttributeListener对ServletContext属性的操作进行监听。比如增加、删除、修改属性。

2、  HttpSessionListener:对session对象的监听

       HttpSessionAttributeListener对HttpSession属性的操作进行监听

3、  HttpRequestListener:对Request对象的监听

      在web段实现监听实质:实现一系列的监听接口(实现相应的接口,复写各接口中相应的方法,在相应的事件触发的时候会执行自己的监听器中的复写方法,在各个方法中完成自己想要的操作,从而实现监听)

1、  ServletContextListener

       public void contextInitialized(ServletContextEvent event);  //这个方法在Web应用服务做好接受请求的时候被调用。如当应用开始的时候它会调用。我们可以在此做一些初始化信息 

public void contextDestoryed(ServletContextEvent event); //当程序关闭时调用

2、  HttpSessionListener会话监听,来监听Session创建和销毁的事件

       public void sessionCreated(HttpSessionEvent event);    //Session创建

       public void sessionDestoryed(HttpSessionEvent event);   //Session销毁

3、HttpRequestListener 请求监听

     public void requestinitialized(ServletRequestEvent event);   

     public void requestDestoryed(ServletRequestEvent event); 

    举例说明:统计在线人数

public class TestHttpSessionAttributeListener implements
HttpSessionAttributeListener {

@Override
public void attributeAdded(HttpSessionBindingEvent se) {
System.out.println("TestHttpSessionAttributeListener-->>attributeAdded()");;
System.out.println("name===="+se.getName());
System.out.println("value===="+se.getValue());
if("user_info".equals(se.getName()))//如果增加的session属性为user_info,则将用户人数加1{
Integer count=(Integer)se.getSession().getServletContext().getAttribute("count");
if(count==null){//如果之前没有人在线,则现在为第一人
count=1;
}else{
count++;
}
se.getSession().getServletContext().setAttribute("count", count);
}

}

@Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
System.out.println("TestHttpSessionAttributeListener-->>attributeRemoved()");;

}

@Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
System.out.println("TestHttpSessionAttributeListener-->>attributeReplaced");

}

}


 

     web.xml配置

<listener>
<listener-class>com.bjpowernode.drp.util.listener.TestHttpSessionAttributeListener</listener-class>
</listener>


 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息