listener监听器介绍

来源:互联网 发布:台湾erp软件 编辑:程序博客网 时间:2024/05/23 01:16
 

         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 implementsHttpSessionAttributeListener {@Overridepublic 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);}}@Overridepublic void attributeRemoved(HttpSessionBindingEvent arg0) {System.out.println("TestHttpSessionAttributeListener-->>attributeRemoved()");;}@Overridepublic void attributeReplaced(HttpSessionBindingEvent arg0) {System.out.println("TestHttpSessionAttributeListener-->>attributeReplaced");}}


 

     web.xml配置

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