JAVA三大器之过滤器——listener

<!-- 配置应用监听器  -->     
<listener>     
    <listener-class>com.ycq.ListenerTest</listener-class>     
</listener>  

 Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。

ServletContextListener接口的源代码:

public abstract interface ServletContextListener extends EventListener{
    public abstract void contextInitialized(ServletContextEvent paramServletContextEvent);
    public abstract void contextDestroyed(ServletContextEvent paramServletContextEvent);
}

Listener示例:

import javax.servlet.ServletContext;   
import javax.servlet.ServletContextEvent;   
import javax.servlet.ServletContextListener;   
import org.apache.commons.dbcp.BasicDataSource;       
/**
 * 现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的
 * 服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化
 * 的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。
 * 
 * 示例代码:使用监听器对数据库连接池DataSource进行初始化
 */ 
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);//最大管理数   
        //bds.setMaxWait(maxWait); 最大等待时间   
        // 把 DataSource 放入ServletContext空间中,   
        // 供整个web应用的使用(获取数据库连接)
        servletContext.setAttribute("dataSource", basicDataSource);   
        System.out.println("应用监听器初始化工作完成...");   
        System.out.println("已经创建DataSource...");  
    }   
}

 web.xml中配置如下:

<!-- 配置应用监听器  -->     
<listener>     
    <listener-class>com.ycq.ListenerTest</listener-class>     
</listener>  

 

猜你喜欢

转载自guwq2014.iteye.com/blog/2420199