1.监听器listener
监听某个对象的的状态变化的组件
事件源:被监听的对象(三个域对象servletContext、session、request)
监听器:监听事件的源对象,事件源创建、销毁、状态变化都会触发监听器,6+2个
注册监听器:将监听器和事件源所绑定,一般在web.xml中进行绑定(listener标签)
响应行为:触发监听器后要执行的事件或代码
2.监听器分类
第一维度:按照被监听的对象分类(ServletRequest域 HttpSession域 ServletContext域)
第二维度:监听的内容分类(监听域对象的创建与销毁 监听域对象的属性变化)
3.监听三大域对象的创建和销毁
1)ServletContext域对象的监听
编写监听器的步骤:
a.编写一个监听器类去实现监听器接口(ServletContextListener)
b.覆盖监听器的方法,监听的方法有两个(一个是创建时执行的方法,一个是销毁时执行的方法)
c.在web.xml中进行配置---注册
public class servletContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent arg0) {
// 创建时执行的方法,arh0可以获得监听的域对象信息
System.out.println("创建。。。");
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// 销毁时执行的方法
System.out.println("销毁。。。");
}
}
web.xml配置
<listener>
<listener-class>com.imwj.listener.servletContextListener</listener-class>
</listener>
servletContext监听器的作用:
a.初始化的工作:加载数据库驱动,数据库连接池,spring的配置文件等
b.定时器的作用:Timer/TimerTask
2)HttpSession域对象的监听,同上(接口:HttpSessionListener)
3)ServletRequest域对象的监听,同上(接口:ServletRequestListener)
4.监听三大对象属性的变化
域的通用方法:
setAttribute(name,value) --- 触发添加属性的监听器的方法,触发修改属性的监听器的方法
getAttribute(name)
removeAttribute(name) --- 触发删除属性的监听器的方法
1)ServletContextAttributeListener,接口:ServletContextAttributeListener)
public class servletContextListener implements ServletContextAttributeListener{
@Override
public void attributeAdded(ServletContextAttributeEvent arg0) {//arg0能够得到被监听的域属性信息
// 域中新增属性所执行的方法
}
@Override
public void attributeRemoved(ServletContextAttributeEvent arg0) {
// 域中删除属性所执行的方法
}
@Override
public void attributeReplaced(ServletContextAttributeEvent arg0) {
// 域中修改属性所执行的方法
}
}
2)HttpSessionAttributeListener,同上(接口:HttpSessionAttributeListener)
3)ServletRequestAttributeListener,同上(接口:ServletRequestAttributeListener)
5.与session中的绑定的对象相关的监听器(对象感知监听器)
某个JavaBean被设置到session中时执行
1)被绑定到session中时的几种状态
绑定状态:就一个对象被放到session域中
解绑状态:就是这个对象从session域中移除了
钝化状态:是将session内存中的对象持久化(序列化)到磁盘
活化状态:就是将磁盘上的对象再次恢复到session内存中