1.首先來看一看源碼 該類的源碼html
- public interface ServletContextListener extends EventListener {
-
-
- public void contextInitialized(ServletContextEvent sce);
-
-
- public void contextDestroyed(ServletContextEvent sce);
- }
此接口中提供了兩個方法,用於監聽ServletContext 的建立和銷燬,也就是監聽ServletContext 的生命週期,能夠說成是監聽Web 應用的生命週期,當web應用啓動後,就會觸發ServletContextEvent 事件 當此事件執行時,就會被ServletContextListener 監聽器監聽到,會調用他的 contextInitialized(ServletContextEvent sce) 方法,經過sce 能夠獲取ServletContext 實例,初始化一些數據,例如緩存的應用,如,建立數據庫鏈接,讀取數據庫數據,經過setAttribute(「」,obj) 方法設置數據,而後就是可經過servlet 獲取servletContext 的實例,經過getAttribute("") 獲取設置的數據java
實現代碼:web
- public class MyContextListener implements ServletContextListener {
- private ServletContext context = null;
-
- public void contextInitialized(ServletContextEvent event) {
- context = event.getServletContext();
- User user = DatabaseManager.getUserById(1);
- context.setAttribute("user1", user);
- }
-
- public void contextDestroyed(ServletContextEvent event) {
- User user = (User)context.getAttribute("user1");
- DatabaseManager.updateUserData(user);
- this.context = null;
- }
- }
若是是web 項目 最後一步是使 ServletContext 生效,須要在web.xml 中配置監聽器,而且web.xml 把它放在正確的WEB-INF/classes目錄下,數據庫
- <listener>
- <listener-class>MyServletContextListener</listener-class>
- </listener>