1. 程式人生 > >Tomcat啟動時載入某個servlet

Tomcat啟動時載入某個servlet

不為 load color col pos ems 項目 設置 應用

當我們做一個java項目時,有幾個功能都須要載入servlet或者實現某個共同的方法,盡管我們一味地在每個功能中依次載入也不是不能夠,可是當某個servlet 或者方法被頻繁地載入和應用。我們將面向對象的思想置於不顧卻也真的說只是去。

所以。對於這類的servlet我們須要在Tomcat啟動時直接載入,比方初始化信息、讀取配置文件等需求時,我們就能夠通過web.xml的配置文件對來實現這個需求:

首先,AbstractItemServlet 類中封裝了相應的Init方法:

<span style="font-family:FangSong_GB2312;font-size:18px;">package com.bjpowernode.drp.util.servlet;

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

import com.bjpowernode.drp.util.BeanFactory;

/**
 * 
 * 負責系統在server啟動時初始化
 * @author chao
 *
 */
public class InitServlet extends HttpServlet {

	@Override
	public void init() throws ServletException {		
		System.out.println("創建BeanFactory。。。

。。"); //將抽象工廠放到servletContext中 BeanFactory beanFactory = BeanFactory.getInstance(); this.getServletContext().setAttribute("beanFactory", beanFactory); } }</span>

其次。在項目的配置文件web.xml(路徑為:/WebRoot/WEB-INF/web.xml)中對抽象出來的servlet進行配置:

<span style="font-family:FangSong_GB2312;font-size:18px;">      <!-- 設置tomcat一啟動就運行InniServlet -->
	<servlet>
	   <servlet-name>InitServlet</servlet-name>
	   <servlet-class>com.bjpowernode.drp.util.servlet.InitServlet</servlet-class>
	   <load-on-startup>2</load-on-startup>
	</servlet></span>

這樣就能夠實如今Tomcat啟動時調用com.bjpowernode.drp.util.servlet.InitServlet的init()方法。

當中。<load-on-startup>N</load-on-startup> 的含義是:標記容器是否在啟動的時候就載入這個servlet。當值為0或者大於0時。表示容器在應用啟動時就載入這個servlet。當是一個負數時或者沒有指定時。則指示容器在該servlet被選擇時才載入。正數的值越小,啟動該servlet的優先級越高。

有了這種方法,我們既能夠省去每次調用該方法的運行時間和占用空間,又能夠完美地實現面向對象的思想。

那我們又何樂而不為呢?

技術分享

Tomcat啟動時載入某個servlet