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