Servlet事件監聽器(二)

     張老師對Servlet事件監聽器的三個接口做了詳細的說明,並舉例用

ServletContextListener事件監聽器對象的contextInitialized()方法和contextDestoryed方法來控制數據庫的連接和關閉來形象的說明了Servlet事件處理器的用處,有助於理解其原理。


ServletContextListener接口
    它用於監聽代表Web應用程序的ServletContext對象的創建和銷燬的事
件,當在Web應用程序中註冊一個或多個實現了ServletContextListener接口的事件監聽器後,Web容器在創建和銷燬ServletContext對象時就會產生一個ServletContextEvent事件對象,接着依次調用每個ServletContext事件監聽器中相應的處理方法,並將ServletContextEvent事件對象傳遞給這些方法。在

ServletContextListener接口中定義了兩個事件處理方法,contextInitialized()和contextDestroyed()方法,他們分別用於處理ServletContext對象的創建事件和銷燬事件。
    contextInitialized()方法
    public void contextInitialized(ServletContextEvent sce)
    當ServletContext對象創建時,web容器會調用ServletContextListener的

contextInitialized方法,contextInitialized方法接受到一個ServletContextEvent對象的參數,通過這個參數可以獲得當前被創建的

ServletContext對象。
     contextDestroyed方法
     public void contextDestroyed(ServletContextEvent sce)
     當ServletContext對象銷燬時,web容器會調用ServletContextListener的

contextDestoryed方法,並將ServletContextEvent對象傳遞給contextDestoryed方法。

    可以利用ServletContextListener事件監聽器的編寫一些實現特殊功能的程序,例如創建全局共享的數據庫鏈接。
    1.當Web應用程序被加載時,其對應的ServletContext對象被創建,
Web服務器將調用ServletContextListener事件監聽器對象的contextInitialized()方法,在此方法中編寫獲得數據庫鏈接的代碼,並把這個獲得連接的對象保存到ServletContext對象中,所有的Servlet程序和JSP頁面中就可以直接從ServletContext對象中取出被保存的鏈接對象來訪問數據庫,避免每個Servlet程序和JSP頁面都去創建新的數據庫鏈接,提高了程序運行效率。
   2.當Web應用程序被卸載時,其對應的ServletContext對象被銷燬,
Web服務器將調用web容器會調用ServletContextListener監聽器對象的contextDestoryed方法,在此方法中編寫關閉數據庫連接的代碼,這樣就可以確保數據庫鏈接對象在Web應用程序卸載時被銷燬,從而避免浪費數據庫鏈接資源的現象。

HttpSessionListener接口
    它用於監聽Web應用程序中的用戶會話對象HttpSession的創建和銷燬
事件,當在Web應用程序中註冊一個或多個實現了HttpSessionListener接口的事件監聽器後,Web容器在創建或銷燬每個HttpSession對象時就會產生一個HttpSessionEvent對象,然後依次調用每個HttpSession事件監聽器中的相應處理方法,並將HttpSessionEvent對象傳遞給這些方法,在HttpSessionListener接口中定義了兩個事件處理方法:sessionCreated()和sessionDestroy(),他們分別在HttpSession對象被創建和銷燬時被調用

HttpRequestListener接口
它用於監聽Web應用程序中的ServletRequest對象的創建和銷燬事件,
其原理類似月前兩個接口。HttpRequestListener接口中定義了兩個方法,requestInitialized()和requestDestroy()方法,他們分別用於處理ServletRequest對象的創建事件和銷燬事件。

發佈了24 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章