监听器:作用域事件发生的时间往往是不确定的,当事件发生的时候需要进行一些处理时,就可以使用监听器,例如监听一个事件的创建,销毁。
- 监听器的API事件类和接口
- 6种事件
1.上下文事件:
ServletContextEvent:当上下文对象发生改变,入创建,销毁时触发
ServletContextAttributeEvent:当上下文属性发生改变,入增加,删除,覆盖时触发
2.请求相关的事件:
ServletRecuestEvent:该类表示请求事件,当请求对象发生改变,如创建或销毁请求对象时,触发请求事件。
SenvletReocuestAttriuteEvent :该类表示请求属性事件,当请求中的属性改变,如增加、删除、覆盖请求中的属性时,触发请求属性事件。
3.会话相关的事件
HtpsessionEvent :该类表示会话事件,当会话对象发生改变,如创建或销毁会话对象,活化或钝化会话对象时,将触发会话事件。
HttpSessionAttributeEvent :该类表示会话绑定事件,当会话中的属性发生变化时,如增加、删除、覆盖会话中的属性时,将触发绑定的事件
- 监听器接口
1.上下文相关的监听器
ServletContextListener :上下文监听器,监听ServletContextEvent事件
ServletContextAttributeListener :上下文属性监听器,用来监听ServletContextAttribute事件
2.请求相关的监听器
ServletRequestListener:请求监听器,监听ServletRequestEvent事件
ServletRequestAttributeListener :请求属性监听器,用来监听
ServletRequestAttributeEvent事件
3.会话相关的监听器
HttpSessionListener :会话监听器,监听HttpSessionEvent
HttpSessionActivationListener:会话活化监听器,监听HttpSessionEvent事件
HttpSessionAttributeListener :会话属性监听器,监听 HttpSessionAttributeEvvent 事件。
HttpSessionBindingListener :会话绑定监听器,监听HttpSessionAttributeEvent事件。
- 监听器实现步骤:
- 编写一个类,实现对应的接口
- 重写接口中的方法,实现监听功能
- 在web.xml中进行配置
HttpSessionListener ∶会话监听器,当会话对象被创建后或销毁前需要一些自定义处理时,可以用此监听器监听;
HttpSessionActivationListener :会话活化监听器,会话对象存在于服务器端,只要没有失效,服务器就得分配空间给其使用;为了能够提高使用效率,服务器有内在的活化钝化机制,可以将暂时不使用的会话对象钝化到外存,需要使用时再活化到内存。当活化后或钝化前需要一些自定义处理时,可以使用该监听器;
HttpSessionAttributeListener :会话属性监听器,当会话中的属性被添加、删除替换时,要进行一些自定义处理时,可以使用该监听器,使用时可以用事件对象获取属性的名字等信息
HttpSessionBindingListener:会话绑定监听器,当类实现了HttpSessionBindingListener 接口后,该类对象绑定或解除绑定到会话时,就会被该监听器监听。绑定指的是调用setAttribute方法,解除绑定指的是调用removeAttribute方法,或者会话超时、会话失效等。
- HttpSessionAttributeListener和HttpSessionBindinaListener的区别
HttpSessionAttributeListener是只要会话对象中使用setAttriubte,removeAttribute,都会被通知,不管属性是什么类型。
HttpSessionBindinaListener是只有实现了这个接口的类的对象作为属性时,才能被通知,另外,当会话超时,失效时,也会被通知