监听器--Listener
它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听用户登陆,并为用户创建购物车。
当一个用户登陆时,,就激发HttpSessionListener的sessionCreated(HttpSessionEvent se)方法,直接为用户创建一个购物车,而不用到商品选择页面去通过判断来创建了。
常用的监听接口有以下几个:
ServletContextAttributeListener监听对ServletContext(jsp中的application)中属性的操作,比如增加、删除、修改等。
ServletContextListener监听ServletContext。
当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;
当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。
HttpSessionListener监听HttpSession的操作。
当创建一个Session时,激发sessionCreated(HttpSessionEvent hse)方法;
当销毁一个Session时,激发sessionDestroyed(HttpSessionEvent hse)方法。
HttpSessionAttributeListener监听HttpSession中的属性的操作。
当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent hsbe)方法;
当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent hsbe)方法;
当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent hsbe)方法。
ServletRequestListener监听request的操作。
两个方法:requestDestroyed和requestInitialized分别用户监听request的创建和销毁。
同时,还有一个不需要注册的监听器:HttpSessionBindingListener,
包含的主要方法:valueBound()和valueUnbound(),
当实现了它的类对象被绑定在session(使用session.setAttribute()方法)中时激发valueBound()
当实现了它的类对象在session中被删除((使用session.removeAttribute()或session.invalidate()方法))时,
激发valueUnbound()
注意:要在一个监听器中实现多个功能,那么就可以实现多个接口并重写相应的方法。
下面是一个简单的web.xml中配置,
<listener>
<listener-class>cn.yourcompany.listener.MyListener</listener-class>
</listener>
(缺少激活和钝化的监听,有时间补上)