web.xml中Listener的作用


Servlet的監聽器Listener,它是實現了javax.servlet.ServletContextListener 接口的服務器端程序,它也是隨web應用的啟動而啟動,只初始化一次,隨web應用的停止而銷毀。主要作用是: 做一些初始化的內容添加工作、設置一些基本的內容、比如一些參數或者是一些固定的對象等等。下面利用監聽器對數據庫連接池DataSource的初始化演示它的使用:

MyServletContextListener.java  
package dc.gz.listeners;  
import javax.servlet.ServletContext;  
import javax.servlet.ServletContextEvent;  
import javax.servlet.ServletContextListener;  
import org.apache.commons.dbcp.BasicDataSource;  
   
/** 
 * Web應用監聽器 
 */  
public class MyServletContextListener implements ServletContextListener {  
   
    // 應用監聽器的銷毀方法  
    public void contextDestroyed(ServletContextEvent event) {  
        ServletContext sc = event.getServletContext();  
        // 在整個web應用銷毀之前調用,將所有應用空間所設置的內容清空  
        sc.removeAttribute("dataSource");  
        System.out.println("銷毀工作完成...");  
    }  
   
    // 應用監聽器的初始化方法  
    public void contextInitialized(ServletContextEvent event) {  
        // 通過這個事件可以獲取整個應用的空間  
        // 在整個web應用下面啟動的時候做一些初始化的內容添加工作  
        ServletContext sc = event.getServletContext();  
        // 設置一些基本的內容;比如一些參數或者是一些固定的對象  
        // 創建DataSource對象,連接池技術 dbcp  
        BasicDataSource bds = new BasicDataSource();  
        bds.setDriverClassName("com.mysql.jdbc.Driver");  
        bds.setUrl("jdbc:mysql://localhost:3306/hibernate");  
        bds.setUsername("root");  
        bds.setPassword("root");  
        bds.setMaxActive(10);//最大連接數  
        bds.setMaxIdle(5);//最大管理數  
        //bds.setMaxWait(maxWait); 最大等待時間  
        // 把 DataSource 放入ServletContext空間中,  
        // 供整個web應用的使用(獲取數據庫連接)  
        sc.setAttribute("dataSource", bds);  
        System.out.println("應用監聽器初始化工作完成...");  
        System.out.println("已經創建DataSource...");  
    }  
}  

web.xml中配置如下,很簡單:

<!-- 配置應用監聽器  -->  
<listener>  
    <listener-class>dc.gz.listeners.MyServletContextListener</listener-class>  
</listener>  

這樣配置好了之后,以后在web應用中就可以通過ServletContext取得BasicDataSource對象,從而獲取與數據庫的連接,提高性能,方便使用。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM