當Web應用在Web容器中運行時,Web應用內部會不斷地發(fā)生各種事件:如Web應用被啟動,Web應用被停止,用戶session開始,用戶session結束,用戶請求到達等,通常來說,這些Web事件對開發(fā)者是透明的。 實際上,Servlet API提供了大量監(jiān)聽器來監(jiān)聽Web應用的內部事件,從而允許當Web內部事件發(fā)生時回調事件監(jiān)聽器內的方法。 一,Listener是什么? 監(jiān)聽器 二,如何使用Listener? (1).定義Listener實現類 (2).通過注解或在web.xml文件中配置Listener
1.實現Listener類 與AWT事件編程完全相似,監(jiān)聽不同Web事件的監(jiān)聽器也不相同。常用的Web事件監(jiān)聽器接口有如下幾個。
下面以ServletContextListener為例介紹Listener的開發(fā)和使用,ServletContextListener用于監(jiān)聽Web應用的啟動和關閉。該Listener類必須實現ServletContextListener接口,該接口包含如下兩個方法: (1)contextInitialized(ServletContextEvent sce):啟動Web應用時,系統(tǒng)調用Listener的該方法。 (2)contextDestroyed(ServletContextEvent sce):關閉Web應用時,系統(tǒng)調用Listener的該方法。
下面將創(chuàng)建一個獲取數據庫連接的Listener,該Listener會在應用啟動時獲取數據庫連接,并將獲取到的連接設置成application范圍內的屬性。代碼如下:
上面的程序中重寫了ServletContextListener的contextInitialized(),contextDestroyed()方法,這兩個方法分別在應用啟動,應用關閉時被觸發(fā)。上面ServletContextListener的兩個方法分別實現獲取數據庫連接,數據庫關閉的功能,這些功能都是為整個 Web應用提供服務的。 程序中,contextInitialized()方法中獲取了4個參數分別是driver,url,user,pass。
2.配置Listener
上面的配置片段向Web應用注冊了一個Listener,其實現類為lee.GetConnListener。當Web應用被啟動時,該Listener的contextInitialized方法被觸發(fā),該方法會獲取一個JDBC Connection,并放入application范圍內,這樣所有jsp頁面都可通過application獲取數據庫連接,從而可以非常方便地進行數據庫訪問。
新聞熱點
疑難解答