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>