7.listener:是Servlet的監聽器,它可以監聽客戶端的請求、服務端的操作等。通過監聽器,可以自動激發一些操作,
比如監聽在線的用戶的數量。當增加一個HttpSession時,就激發sessionCreated(HttpSessionEvent se)方法,這樣就可以給在線人數加1。
<listener>
listener元素用來定義Listener接口,它的主要子元素為<listener-class>
<listen-class>Listener的類名稱</listener-class>
定義Listener的類名稱.例如: com.foo.hello
<listener>
范例:
<listener>
<listener-class>coreservlet.javaworld.CH11.ContenxtListener</listener-class>
</listener>
在每一個java的web應用中都只能有一個單獨的servlet context。而這個context被放置在整個應用級別上,
當應用一旦啟動之後,servlet容器就會創建這樣一個servlet context來服務於web應用。
因此我們也可以創建一個類並實現了一個ServletContextListerner接口,用於通知這個context是否被創建了或者被銷毀了。
這樣當Context被創建時,就會收到一個相關的通知,並且在Context被銷毀前也會得到一個通知。
常用的監聽接口有以下幾個:
ServletContextAttributeListener監聽對ServletContext屬性的操作,比如增加、刪除、修改屬性。
ServletContextListener監聽ServletContext。
當創建ServletContext時,激發contextInitialized(ServletContextEvent sce)方法;
當銷毀ServletContext時,激發contextDestroyed(ServletContextEvent sce)方法。
HttpSessionListener監聽HttpSession的操作。
當創建一個Session時,激發session Created(HttpSessionEvent se)方法;
當銷毀一個Session時,激發sessionDestroyed (HttpSessionEvent se)方法。
HttpSessionAttributeListener監聽HttpSession中的屬性的操作。
當在Session增加一個屬性時,激發attributeAdded(HttpSessionBindingEvent se) 方法;
當在Session刪除一個屬性時,激發attributeRemoved(HttpSessionBindingEvent se)方法;
當在Session屬性被重新設置時,激發attributeReplaced(HttpSessionBindingEvent se) 方法。