教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Java培訓之Servlet實例化時機

更新時間:2016年04月26日11時20分 來源:傳智播客Java培訓學院 瀏覽次數(shù):

1.Servlet實例化時機

通過Servlet的學習,我們知道當瀏覽器第一次訪問Servlet的時候,服務器為該Servlet創(chuàng)建實例,該實例會永駐內存,當服務器關閉或當前應用被移出服務器時,Servlet實例才會被銷毀。現(xiàn)在我們可以通過配置來設置Servlet在服務器啟動的時候就被創(chuàng)建,即在web.xml文件中添加<load-on-startup>元素。具體配置如下所示:
在web.xml中有如下配置,如例1-1所示:
例1-1 web.xml
<servlet>
    <servlet-name>hello1</servlet-name>
    <servlet-class>cn.itcast.servlet.Hello1Servlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>hello1</servlet-name>
    <url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>hello2</servlet-name>
    <servlet-class>cn.itcast.servlet.Hello2Servlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
<servlet-mapping>
    <servlet-name>hello2</servlet-name>
    <url-pattern>/hello2</url-pattern>
</servlet-mapping>
在例1-4中,有兩個Servlet,它們的<load-on-startup>元素內容分別是0和1。<load-on-startup>元素是<servlet>元素的子元素,用于指定Servlet被加載的時機和順序。它的值必須是一個整數(shù),如果這個值是一個負數(shù)即表示在第一次訪問的時候被創(chuàng)建實例。<load-on-startup>的值越小越先被加載。
為了讓大家更加理解,我們現(xiàn)在來看一個案例,案例詳細步驟請參考Servlet初始化時機案例詳解,下載案例源代碼。具體如下:
(1)在Example13中新建一個Servlet類LoadServlet,如例1-2所示:
例1-2 LoadServlet.java
public class LoadServlet extends HttpServlet {
    /*
     * 重寫GenericServlet類的init()方法
     * */
    @Override
    public void init() throws ServletException {
       System.out.println("LoadServlet was created.............");
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
    doPost(request,response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
    }
}
(2)在web.xml中配置LoadServlet隨著服務器的啟動而創(chuàng)建,具體代碼如1-3所示:
例1-3 web.xml
<servlet>
    <servlet-name>LoadServlet</servlet-name>
    <servlet-class>cn.itcast.servlet.LoadServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
 </servlet>
<servlet-mapping>
    <servlet-name>LoadServlet</servlet-name>
    <url-pattern>/LoadServlet</url-pattern>
  </servlet-mapping>
(3)將Example13發(fā)布到Tomcat服務器中,啟動服務器,控制臺打印結果如圖1-1所示:
init()方法執(zhí)行,即Servlet實例被創(chuàng)建。

圖1-1 運行結果
由圖1-1可知,服務器啟動后,LoadServlet的初始化信息被打印出來,即init()方法被調用了,由此說明,LoadServlet在Tomcat啟動時就被自動加載并初始化了


本文版權歸傳智播客Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:傳智播客Java培訓學院
首發(fā):http://fskzgqt.cn/javaee 
0 分享到:
和我們在線交談!