Tomcat啟動時載入某個servlet
當我們做一個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