首页 > 代码库 > Listener--监听器学习笔记

Listener--监听器学习笔记

一.简介

  监听器:专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象

Servlet 监听器:用于监听 web 应用程序中的 ServletContext, HttpSession 和 ServletRequest 等域对象的创建

                      与销毁事件,以及监听这些域对象中的属性发生修改的事件

servlet监听器分类:

   1.监听域对象自身的创建和销毁的事件监听器

   2.监听域对象中的属性的增加和删除的事件监听器

   3.监听绑定到 HttpSession 域中的某个对象的状态的事件监听器

Servlet 规范为每种事件监听器都定义了相应的接口,开发人员编写的事件监听器程序只需实现这些接口,

web 服务器根据用户编写的事件监听器所实现的接口把它注册到相应的被监听对象上

 

一些Servlet监听器需要在web.xml中注册,web 服务器按照它们在 web.xml 文件中的注册顺序来加载和注册这些 Serlvet 事件监听器。

一个 web 应用程序只会为每个事件监听器创建一个对象

 

二.监听器接口

1.监听域对象自身的创建和销毁的事件监听器

    用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象的创建和销毁事件的监听器

  (1)ServletContextListener 接口

       在servlet-api.jar中查看源码如下:

package javax.servlet;import java.util.EventListener;public abstract interface ServletContextListener extends EventListener{  //当 ServletContext 对象被创建时调用  public abstract void contextInitialized(ServletContextEvent paramServletContextEvent); //当 ServletContext 对象被销毁时调用  public abstract void contextDestroyed(ServletContextEvent paramServletContextEvent);}

   (2)HttpSessionListener 接口

package javax.servlet.http;import java.util.EventListener;public abstract interface HttpSessionListener extends EventListener{  public abstract void sessionCreated(HttpSessionEvent paramHttpSessionEvent);//创建  public abstract void sessionDestroyed(HttpSessionEvent paramHttpSessionEvent);//销毁}

  

  2.域对象中属性的变更的事件监听器

      监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。

   (1)ServletContextAttributeListener接口

package javax.servlet;import java.util.EventListener;public abstract interface ServletContextAttributeListener extends EventListener{  public abstract void attributeAdded(ServletContextAttributeEvent paramServletContextAttributeEvent);//添加  public abstract void attributeRemoved(ServletContextAttributeEvent paramServletContextAttributeEvent);//删除  public abstract void attributeReplaced(ServletContextAttributeEvent paramServletContextAttributeEvent);//修改}

 

    (2)HttpSessionAttributeListener接口

       类似ServletContextAttributeListener接口的三个方法,只是参数类型不同

package javax.servlet.http;import java.util.EventListener;public abstract interface HttpSessionAttributeListener extends EventListener{  public abstract void attributeAdded(HttpSessionBindingEvent paramHttpSessionBindingEvent);  public abstract void attributeRemoved(HttpSessionBindingEvent paramHttpSessionBindingEvent);  public abstract void attributeReplaced(HttpSessionBindingEvent paramHttpSessionBindingEvent);}

 

    (3)ServletRequestAttributeListener接口

       类似ServletContextAttributeListener接口的三个方法,只是参数类型不同

package javax.servlet;import java.util.EventListener;public abstract interface ServletRequestAttributeListener extends EventListener{  public abstract void attributeAdded(ServletRequestAttributeEvent paramServletRequestAttributeEvent);  public abstract void attributeRemoved(ServletRequestAttributeEvent paramServletRequestAttributeEvent);  public abstract void attributeReplaced(ServletRequestAttributeEvent paramServletRequestAttributeEvent);}

 

Listener--监听器学习笔记