1. 程式人生 > >Web服務啟動時自動載入Servlet,並執行service處理

Web服務啟動時自動載入Servlet,並執行service處理

轉自:http://lives.iteye.com/blog/1141121

自動載入Servlet的方法介紹: 

在web.xml這樣定義一個servlet: 
<servlet> 
<servlet-name>t1</servlet-name> 
<servlet-class>com.base.test.T1</servlet-class> 
<!-- 如果需要自動載入,加下面一句 --> 
<load-on-startup>1</load-on-startup> 
</servlet> 

<load-on-startup>標記web容器是否在啟動的時候就載入這個servlet 


當值為0或者大於0時,表示web容器在應用啟動時就載入這個servlet; 

當是一個負數時或者沒有指定時,則指示容器在該servlet被選擇時才載入; 

正數的值越小,啟動該servlet的優先順序越高。 


在寫這個Servlet裡,需要重寫init()方法: 
package com.base.test; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 

public class T1 extends HttpServlet { 

public T1() { 
super(); 


public void init() throws ServletException { 

System.out.println("init t1 ... "); 



重啟web容器,在控制檯可以看到"init t1 ... "這麼一行資訊。 

然後修改我們的程式碼,讓這個Servlet可以讀取資料庫的內容,並進行相關的處理。 
如果操作資料庫用的是spring的HibernateTemplate和JdbcTemplate,訪問資料庫是以bean注入的方式,在action裡注入service的實現,讀取資料庫資料,其實現在的關鍵就是得到這個service的例項化物件。 

修改後的servlet: 
package com.base.test; 

import javax.servlet.ServletContext; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 

import org.springframework.web.context.WebApplicationContext; 
import org.springframework.web.context.support.WebApplicationContextUtils; 

import com.abc.test.Service1; 

public class T1 extends HttpServlet { 

public T1() { 
super(); 


public void init() throws ServletException { 
ServletContext sc = getServletContext(); 
WebApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(sc); 


Service1 service = (Service1) ac.getBean("yourServiceId"); 
List list = service.getList(); 
// list就是從資料庫取到的內容,你可以做相關的處理 




yourServiceId 就是在applicationContext.xml檔案裡面配置的<bean id="yourServiceId">。