1.简介:
监听器:专门用来地其他对象发生的事件后状态改变进行监听和相应处理的对象,当被监听的对象发生情况时,立即采取
行动。
Servlet监听器:Servlet规范中定义的一种特殊的类,它用于监听web应用程序的ServletContext,HttpSession和
ServletRequest等域对象的创建和销毁事件,以及监听这些域对象的属性发生修改的事件。
2.ServletContextListener:
2.1 监听ServletContext对象的创建和销毁的Servlet监听器
2.2 创建:2.2.1 实现ServletContextListener接口,并实现其中的两个方法。
public class HelloListener implements ServletContextListener
2.2.2 在web.xml文件中配置Listener
<listener>
<listener-class>com.lishenhuan.Listener.HelloListener</listener-class>
</listener>
2.3 作用:ServletContextListener是最常用的Listener,可以在当前应用被加载时,对当前应用的相关资料进行初始化。
创建数据库连接池。
创建spring的 IOC容器。
读取当前web应用的初始化参数。·
2.4 API:
//ServletContext对象被销毁(当前web应用被卸载时),Servlet容器调用该方法。
public void contextDestroyed(ServletContextEvent arg0)
//ServletContext对象被创建(当前web应用被加载时),Servlet容器调用该方法。
public void contextInitialized(ServletContextEvent arg0)
//参数ServletContextEvent
ServletContextEvent 中的 getServletContext()方法获取ServletContext对象。
3. ServletRequestListener && HttpSessionListener 用法同上。
4. XxxAttributeListener(ServletContextAttributeListener,ServletRequestAttributeListener,HttpSessionAttributeListener)
4.1 监听ServletContext,HttpSesssion,ServletRequest添加,替换,删除属性的事件监听器。
4.2 以 ServletRequestAttributeListener为例:
4.2.1 public void attributeAdded (ServletRequestAttributeEvent sra) //添加属性时被调用
4.2.2 public void attributeRemoved(ServletRequestAttributeEvent sra) //移除属性时被调用
4.2.3 public void attributeReplaced(ServletRequestAttributeEvent sra) //替换属性时被调用
4.3 API :
ServletContextAttributeEvent中有两个方法:
4.3.1 public String getName() //获取属性名
4.3.2 public Object getValue() //获取属性值
5.感知Session绑定的事件监听器。
5.1 Sesssion中对象的状态:
绑定到session中——>从session中解除绑定——>随session对象持久化到存储设备——>随session对象从存储设备恢复
5.2 HttpSessionBindingListener
5.2.1 监听实现了改接口的Java类对象被绑定到session或从session中解除绑定的事件。
public void valueBound(HttpSessionBindingEvent paramHttpSessionBindingEvent) //绑定时调用的方法
public void valueUnbound(HttpSessionBindingEvent paramHttpSessionBindingEvent) //解除绑定时调用的方法
5.2.2该监听器不需要再web.xml文件中注册。
5.2.3 API:
HttpSessionBindingEvent
>public HttpSession getSession()
>public String getName()
>public Object getValue()
5.3 HttpSessionActivationListener
5.3.1 监听实现了该接口和Serializable接口的java类的对象被session钝化和活化的事件。
>钝化:向磁盘中存储session
>活化:从磁盘中读取session
5.3.2该监听器不需要再web.xml文件中注册。
public void sessionDidActivate(HttpSessionEvent paramHttpSessionEvent) //在活化之后被调用
public void sessionWillPassivate(HttpSessionEvent paramHttpSessionEvent) //在钝化之前被调用
参数:HttpSessionEvent中 public HttpSession getSession()方法获取session