listener监听器介绍

 

         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>


 

 

 

posted @ 2012-03-15 16:21  转航  阅读(257)  评论(0编辑  收藏  举报