八大监听器
Servlet监听器的作用是监听Web容器的有效期事件,可以监听由于Web应用中状态改变而引起的Servlet容器产生的相应事件,然后接受并处理这些事件。其中提供的LIstener接口有这些:
1. ServletContextListener;
Servlet的上下文监听,它主要实现监听ServletContext的创建和删除。该接口提供了两种方法
- contextInitialized(ServletContextEvent event); 通知正在收听的对象,应用程序已经被加载和初始化。
- contextDestroyed(ServletCotextEvent event); 通知正在收听的对象,应用程序已经被载出,即关闭。
2. ServletAttributeListener;
主要实现监听ServletContext属性的增加,删除和修改。该接口提供了一下3个方法
- attributeAdded(ServletContextAttributeEvent event);
当有对象加入Application的范围时,通知正在收听的对象 - attributeReplaced(ServletContextAttributeEvent event);
当在application的范围有对象取代另一个对象的时,通知正在收听的对象 - attributeRemoved(ServletContextAttributeEvent event);
当有对象从application的范围移除时,通知正在收听的对象
3. HttpSessionListener;
HTTP会话监听,该接口实现监听HTTP会话创建、销毁。该接口提供了一下两种方法
- sessionCreated(HttpSessionEvent event);
通知正在收听的对象,session已经被加载及初始化 - sessionDestoryed(HttpSessionEvent event)l
通知正在收听的对象,session已经被载出(HttpSessionEvent类的主要方法是getSession(),可以使用该方法回传一个session对象)
4. HttpSessionActivationListener;
该接口实现监听HTTP会话active和passivate。 该接口提供了一下3个方法
1.attributeAdded(HttpSessionBindingEvent event);
当有对象加入session的范围时,通知正在收听的对象
2. attributeReplaced(HttpSessionBindingEvent event);
当在session的范围有对象取代另一个对象时,通知正在收听的对象。
3. attributeRemoved(HttpSessionBindingEvent event);
当有对象从session的范围有对象取代另一个对象时,通知正在收听的对象 其中HttpSessionBindingEvent类主要有三个方法:getName()、getSession()和getValue()
5. HttpBindingListener;
接口实现监听HTTP会话中对象的绑定信息。它是唯一不需要在web.xml中设定Listener的。该接口提供了以下2个方法
- valueBound(HttpSessionBindingEvent event);
当有对象加入session的范围时会被自动调用 - valueUnBound(HttpSessionBindingEvent event);
当有对象从session的范围内移除时会被自动调用
6. HttpSessionAttributeListener;
该接口实现监听HTTP会话中属性的设置请求。该接口提供了以下两个方法。
- sessionDidActivate(HttpSessionEvent event);
通知正在收听的对象,它的session已经变为有效状态。 - sessionWillPassivate(HttpSessionEvent event);
通知正在收听的对象,它的session已经变为无效状态
7. ServletRequestListener;
该接口提供了以下两个方法。
- requestInitalized(ServletRequestEvent event)
通知正在收听的对象,ServletRequest已经被加载及初始化 - requestDestroyed(ServletRequestEvent event)
通知正在收听的对象,ServletRequest已经被载出,即关闭
8. ServletRequestAttributeListener
该接口提供了一下三种方法
- attributeAdded(ServletRequestAttributeEvent event);
当有对象加入request的范围时,通知正在收听的对象 - attributeReplaced(ServletRequestAttributeEvent event);
当在request的范围内有对象取代两一个对象时,通知正在收听的对象 - attributeRemoved(ServletRequestAttributeEvent event);
当有对象从request的范围移除时,通知正在收听的对象