ServletContextListener詳解

1、簡介:web

ServletContext的最大應用時web緩存,把不常常更改的內容讀入內存,因此服務器響應請求的時候就不須要進行慢速的磁盤I/O了。ServletContextListener是ServletContext的監聽者,他監聽關於ServletContext的兩個事件---初始化和銷燬。它可以監聽ServletContext聲明週期,實際上也是監聽Web應用的生命週期。數據庫

當Servlet容器啓動或終止web應用時,會觸發ServletContexEvent事件,該事件由ServletContextListener來處理,在ServletContextListner接口中定義了處理ServletContextEvent事件的兩個方法。緩存

2、使用緩存的大致思路:服務器

一、服務器啓動時,ServletContextListener的contextInitialized()方法被調用,因此在裏面建立好緩存。能夠從文件中或者從數據庫讀取緩存內容生成類,用servletContext.setAttribute()方法將緩存保存在servletContext實例中。app

二、程序使用ServletContext.getAttribute()讀取緩存,若是是jsp,使用application.getAttribute()。若是是servlet,使用getServletContext().getAttribute()。若是緩存發生變化(如訪問計數),你能夠同時更改緩存和文件/數據庫。或者等變化積累到必定程序在保存,也能夠在下一步保存。jsp

三、服務器將要關閉,ServletContextListener的contextDestroyed()方法被調用,因此在裏面保存緩存的更改,將更改後的緩存保存迴文件或數據庫,更新原來的內容。接口

相關文章
相關標籤/搜索