監聽器總結續
二、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中監聽器沒有順序