關於servlet是在什么時候初始化的個人總結


今天無意中看到一個博主的總結,總結的是servlet是在什么時候初始化的,並且附上了實例。但是由於那位博主的實例有問題,所以總結的也有誤。這里我把我的體會寫下來,分享給大家。

java代碼:

 1   @Override
 2     public void init(ServletConfig request) throws ServletException {
 3         System.out.println("TestServlet init ...");
 4         
 5     }
 6 
 7     @Override
 8     public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
 9         HttpServletRequest hsr = (HttpServletRequest) request;
10         String servletPath = hsr.getServletPath();
11         System.out.println("TestServlet service ...|| servletPath:" + servletPath);
12         
13     }

web.xml配置:

 

1     <servlet>
2         <servlet-name>dispatcher</servlet-name>
3         <servlet-class>com.leq.test.servlet.TestServlet</servlet-class>
4     </servlet>
5     <servlet-mapping>
6         <servlet-name>dispatcher</servlet-name>
7         <url-pattern>*.action</url-pattern>
8     </servlet-mapping>

 

 

場景1: 在啟動Tomcat的時候,沒有執行init方法;

    關閉Tomcat的時候,沒有執行destroy方法。

場景2: 在啟動Tomcat的時候,沒有執行init方法;

    在發送請求的時候,先執行init方法,后執行service方法。

    關閉Tomcat的時候,沒有執行destroy方法。

 

 

------------------------------------------------------------華麗的分割線-------------------------------------------------------------------

現在改變web.xml配置:

 

 

1     <servlet>
2         <servlet-name>dispatcher</servlet-name>
3         <servlet-class>com.leq.test.servlet.TestServlet</servlet-class>
4         <load-on-startup>0</load-on-startup>
5     </servlet>
6     <servlet-mapping>
7         <servlet-name>dispatcher</servlet-name>
8         <url-pattern>*.action</url-pattern>
9     </servlet-mapping>

 

java類代碼不變。

 

場景1: 在啟動Tomcat的時候,執行了init方法;

    關閉Tomcat的時候,執行了destroy方法。

 

 

 

 

 

 

總結:

當web.xml中不配置load-on-startup屬性,或者配置該屬性且值為負數時,servlet在有請求的時候才會初始化。

當load-on-startup屬性值大於等於0的時候,servlet會在啟動的時候就初始化。

 

備注:1. load-on-startup屬性值只能為整數。

     2. load-on-startup屬性值大於等於0時,數值越小,優先級越高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM