標籤:
生命週期是一個程式的存在周期,受容器管理,所以容器決定生命週期。
生命週期包括 載入,初始化,服務,銷毀,卸載 5個部分
載入:第一次使用的時候載入
初始化:init方法, 失敗的話,直接卸載,如果成功的話,進行服務的操作,如果服務不再使用,進行銷毀再卸載
服務:service方法
銷毀:destroy方法
代碼:
package org.lxh.servletdemo ;import java.io.* ;import javax.servlet.* ;import javax.servlet.http.* ;public class LifeCycleServlet extends HttpServlet{ public void init() throws ServletException{ System.out.println("** 1、Servlet初始化 --> init()") ; } public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ System.out.println("** 2、Servlet服務 --> doGet()、doPost()") ; } public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ this.doGet(req,resp) ; } public void destroy(){ System.out.println("** 3、Servlet銷毀 --> destory()") ; try{ Thread.sleep(3000) ; }catch(Exception e){} }/* public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException{ System.out.println("************ 服務 **************") ; } */}
web.xml配置:
<servlet> <servlet-name>life</servlet-name> <servlet-class>org.lxh.servletdemo.LifeCycleServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>life</servlet-name> <url-pattern>/LifeServlet</url-pattern> </servlet-mapping>
init:在第一次啟動並執行時候才會初始化
銷毀destroy:
1. 容器關閉
2. 一個servlet長時間不使用
3. 還有一種開發中的可能性,執行了reload操作
如果調用service方法的話,主要功能是區分是get請求還是post請求,如果是get請求,則調用doGet方法,如post請求,則調用doPost請求,但是一旦在子類中被覆寫之後,則沒有了區分此種的能力,所以doGet和doPost都失效了。
實際上,這種方法更像是一種設計的模板操作,只需要按照要求將方法覆寫完成了,那麼就可以實現響應的功能。
當然還有一點需要注意,在正常情況下,初始化是在servlet第一次使用的時候調用,如果需要在容器啟動的時候,servlet可以直接進行初始化操作的話,可以設定web.xml檔案,增加一個相應的配置參數,表示在容器啟動的時候載入參數:
<load-on-startup>1</load-on-startup>
總結:
1. 最重要的就是service方法,doGet,doPost是專門負責處理請求的。
2. 通過配置web.xml檔案可以在伺服器啟動時自動初始化servlet
Servlet程式開發-- Servlet生命週期