怎樣使用ServletContextListener接口

ServletContext : 每一個web應用都有一個 ServletContext與之相關聯。 ServletContext對象在應用啓動的被創建,在應用關閉的時候被銷燬。 ServletContext在全局範圍內有效,類似於應用中的一個全局變量。

 

ServletContextListener: 使用listener接口,開發者能夠在爲客戶端請求提供服務之前向ServletContext中添加任意的對象。這個對象在ServletContext啓動的時候被初始化,然後在ServletContext整個運行期間都是可見的。該接口擁有兩個方法如下所示:

Servletcontextlistener代碼  收藏代碼
  1. void contextDestoryd(ServletContextEvent sce);  
  2.   
  3. void contextInitialized(ServletContextEvent sce);  

 用戶需要創建一個java類實現 javax.servlet.ServletContextListener接口並提供上面兩個方法的實現。

 

 

示例: 當你需要在處理任何客戶端請求之前創建一個數據庫連接,並且希望在整個應用過程中該連接都是可用的,這個時候ServletContextListener接口就會十分有用了。

Java代碼  收藏代碼
  1. package com.database;  
  2. import javax.servlet.ServletContext;  
  3. import javax.servlet.ServletContextAttributeEvent;  
  4. import javax.servlet.ServletContextAttributesListener;  
  5. import javax.servlet.ServletContextEvent;  
  6. import javax.servlet.ServletContextListener;  
  7. import com.database.DbConnection;  
  8.   
  9. public class DatabaseContextListener implements ServletContextListener {  
  10.   
  11.   private ServletContext context = null;  
  12.   private Connection conn = null;  
  13.   
  14.   public DatabaseContextListener() {  
  15.   
  16.   }  
  17.   
  18.   
  19.   //該方法在ServletContext啓動之後被調用,並準備好處理客戶端請求  
  20.   public void contextInitialized(ServletContextEvent event)  {  
  21.     this.context = event.getServletContext();  
  22.     conn = DbConnection.getConnection;  
  23.     // 這裏DbConnection是一個定製好的類用以創建一個數據庫連接  
  24.     context = setAttribute(”dbConn”,conn);  
  25.   }  
  26.   
  27.   //這個方法在ServletContext 將要關閉的時候調用  
  28.   public void contextDestroyed(ServletContextEvent event){  
  29.     this.context = null;  
  30.     this.conn = null;   
  31.   }  
  32. }  

 

然後部署該類,並在web.xml文件中添加

Xml代碼  收藏代碼
  1. <listener>  
  2. com.database.DatabaseContextListener  
  3. </listener>  

 一旦web應用啓動的時候,我們就能在任意的servlet或者jsp中通過下面的方式獲取數據庫連接:

Java代碼  收藏代碼
  1. Connection conn = (Connection) getServletContext().getAttribute(”dbConn”);  

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章