在 Servlet API 中有一個 ServletContextListener 接口,它能夠監聽 ServletContext 對象的生命週期,實際上就是監聽 Web 應用的生命週期。
當Servlet 容器啓動或終止Web 應用時,會觸發ServletContextEvent 事件,該事件由ServletContextListener 來處理。在 ServletContextListener 接口中定義了處理ServletContextEvent 事件的兩個方法。
/** * 當Servlet 容器啓動Web 應用時調用該方法。在調用完該方法之後,容器再對Filter 初始化, * 並且對那些在Web 應用啓動時就需要被初始化的Servlet 進行初始化。 */ contextInitialized(ServletContextEvent sce) /** * 當Servlet 容器終止Web 應用時調用該方法。在調用該方法之前,容器會先銷燬所有的Servlet 和Filter 過濾器。 */ contextDestroyed(ServletContextEvent sce)
一、自定義上下文監聽
public class CmsiListener implements ServletContextListener { private static Log log = LogFactory.getLog(CmsiListener.class); public void contextInitialized(ServletContextEvent servletContextEvent) { servletContextEvent.getServletContext().log("listener start"); } public void contextDestroyed(ServletContextEvent servletContextEvent) { servletContextEvent.getServletContext().log("listener destroyed"); } }
二、部署ServletContextListener
實現(implements)了 ServletContextListener 編譯後,把它放在正確的WEB-INF/classes目錄下,更改WEB-INF目錄下的 web.xml文件,在web-app節點裏添加
<listener> <listener-class>CmsiListener</listener-class> </listener>