监听器总结续
二、Listenner的注册Javaweb的这些特别的监听器注册比较简单,因为ServletRequest、HttpSession、ServletContext对象都是容器创建的,所以需要它们的监听器的话,只需要在应用的web-info的web.xml里配置即可:
<listener>
<listenerclass>com.test.listener.MyHttpSessionAttributeListener</listener-class>
<listener-class>com.test.listener.MyServletContextAttributeListener</listener-class>
<!— 多个实现相同的Listenner接口,在执行时是按web.xml注册出现的来决定。 —></listener>
注意:感知型监听器HttpSessionBindingListener、HttpSessionActivationListener不需要注册。
三、应用场景:
由于ervletRequest、HttpSession、ServletContext对象都是容器创建的,什么时候创建,用户都不知道。通过实现这些对象的监听器后,就可以得知了。比如:
1>在ServletContextLintener监听器的contextInitialized方法中,进行应用级的资源初始化以便提高效率,在contextDestroyed方法中对应用级的资源进行释放。
2>又比如web应用中,会存在会话,通常的作法是将当前登录的用户存放在session会话中。那么如何统计在线人数话,如何显示出当前登录的用户呢。如何踢出某些已登录的用户呢。就可以通过HttpSessionAttributeListener监听器的attributeAdded方法,等等。
四、优先级顺序
监听器->过滤器->Servlet
监听器启动顺序
五、在Servlet3.0下的使用
通过在类前添加注解@WebListener即可,不用在web.xml中配置,在servlet3.0中监听器没有顺序