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原创文章,未经本站允许不得转载。