您当前的位置: 首页 >  Java

Java三大器之监听器(Listener)的工作原理和代码演示

发布时间:2018-05-10 10:23:46 ,浏览量:0

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

固定的对象等等。首先来看一下ServletContextListener接口的源代码:

[java]  view plain  copy
  1. public abstract interface ServletContextListener extends EventListener{  
  2.     public abstract void contextInitialized(ServletContextEvent paramServletContextEvent);  
  3.     public abstract void contextDestroyed(ServletContextEvent paramServletContextEvent);  
  4. }  
下面利用监听器对数据库连接池DataSource的初始化演示它的使用:ListenerTest.java 
[java]  view plain  copy
  1. import javax.servlet.ServletContext;     
  2. import javax.servlet.ServletContextEvent;     
  3. import javax.servlet.ServletContextListener;     
  4. import org.apache.commons.dbcp.BasicDataSource;         
  5. /** 
  6.  * 现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的 
  7.  * 服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化 
  8.  * 的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。 
  9.  *  
  10.  * 示例代码:使用监听器对数据库连接池DataSource进行初始化 
  11.  */   
  12. public class ListenerTest implements ServletContextListener{       
  13.    // 应用监听器的销毁方法     
  14.    public void contextDestroyed(ServletContextEvent servletContextEvent) {     
  15.         ServletContext servletContext = servletContextEvent.getServletContext();  
  16.         // 在整个web应用销毁之前调用,将所有应用空间所设置的内容清空  
  17.         servletContext.removeAttribute("dataSource");  
  18.         System.out.println("销毁工作完成...");    
  19.    }     
  20.     // 应用监听器的初始化方法     
  21.     public void contextInitialized(ServletContextEvent servletContextEvent) {     
  22.         // 通过这个事件可以获取整个应用的空间     
  23.         // 在整个web应用下面启动的时候做一些初始化的内容添加工作     
  24.         ServletContext servletContext = servletContextEvent.getServletContext();    
  25.         // 设置一些基本的内容;比如一些参数或者是一些固定的对象     
  26.         // 创建DataSource对象,连接池技术 dbcp     
  27.         BasicDataSource basicDataSource = new BasicDataSource();   
  28.         basicDataSource.setDriverClassName("com.jdbc.Driver");   
  29.         basicDataSource.setUrl("jdbc:mysqlocalhost:3306/");   
  30.         basicDataSource.setUsername("root");     
  31.         basicDataSource.setPassword("root");     
  32.         basicDataSource.setMaxActive(10);//最大连接数     
  33.         basicDataSource.setMaxIdle(5);//最大管理数     
  34.         //bds.setMaxWait(maxWait); 最大等待时间     
  35.         // 把 DataSource 放入ServletContext空间中,     
  36.         // 供整个web应用的使用(获取数据库连接)  
  37.         servletContext.setAttribute("dataSource", basicDataSource);     
  38.         System.out.println("应用监听器初始化工作完成...");     
  39.         System.out.println("已经创建DataSource...");    
  40.     }     
  41. }  
web.xml中配置如下,很简单:
[html]  view plain  copy
  1.      
  2. <listener>     
  3.     <listener-class>com.ycq.ListenerTest
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.1572s