Java中ServletContextListener监听器详解
ServletContextListener如果在web.xml中配置了这个监听器,那么启动容器时,就会默认执行它实现的方法,它用于对Servlet整个上下文进行监听(创建、销毁)。
源码
public abstract interface ServletContextListener extends EventListener{ public abstract void contextInitialized(ServletContextEvent paramServletContextEvent); public abstract void contextDestroyed(ServletContextEvent paramServletContextEvent); }
方法
public void contextInitialized(ServletContextEvent sce);//上下文初始化 public void contextDestroyed(ServletContextEvent sce);//上下文销毁 public ServletContext getServletContext();//ServletContextEvent事件:取得一个ServletContext(application)对象
例子
//使用监听器对数据库连接池DataSource进行初始化 import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.apache.commons.dbcp.BasicDataSource; public class ListenerTest implements ServletContextListener{ // 应用监听器的销毁方法 public void contextDestroyed(ServletContextEvent servletContextEvent) { ServletContext servletContext = servletContextEvent.getServletContext(); // 在整个web应用销毁之前调用,将所有应用空间所设置的内容清空 servletContext.removeAttribute("dataSource"); System.out.println("销毁工作完成..."); } // 应用监听器的初始化方法 public void contextInitialized(ServletContextEvent servletContextEvent) { // 通过这个事件可以在整个web应用下面启动的时候做一些初始化的内容添加工作 ServletContext servletContext = servletContextEvent.getServletContext(); // 设置一些基本的内容;比如一些参数或者是一些固定的对象 // 创建DataSource对象,连接池技术 dbcp BasicDataSource basicDataSource = new BasicDataSource(); basicDataSource.setDriverClassName("com.jdbc.Driver"); basicDataSource.setUrl("jdbc:mysqlocalhost:3306/"); basicDataSource.setUsername("root"); basicDataSource.setPassword("root"); basicDataSource.setMaxActive(10);//最大连接数 basicDataSource.setMaxIdle(5);//最大管理数 servletContext.setAttribute("dataSource", basicDataSource); System.out.println("应用监听器初始化工作完成..."); System.out.println("已经创建DataSource..."); } }
//web.xml中配置监听器 <listener> <listener-class>com.ycq.ListenerTest</listener-class> </listener>
总结
ServletContextListener是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。