Servlet的生命周期
分為三個階段:初始化階段、響應客戶請求階段和終止階段。
javax.servlet.Servlet接口定義了3個方法:
init()、service()、destroy().
初始化階段:
在下列情況下Servlet容器裝載Servlet:
Servlet容器啟動時自動裝在某些Servlet.
Servlet容器啟動后,客戶首次向Servlet發出請求。
Servlet的類文件被更新后,重新裝載Servlet.
//Servlet容器是否在啟動時自動裝載Servlet,這是由在web.xml中為Servlet設置的<load-on-startup>屬性決定的
Servlet被裝載后,Servlet容器創建一個Servlet實例并且調用Servlet的init()方法進行初始化。在Servlet的整個生命周期中,init方法只會被調用一次。
重載方式:
public void init(ServletConfig config) throws ServletException;
public void init()throws ServletException;
用第一個方法應該先調用super.init(config)方法確保參數config應用ServletConfig對象;
用第二個方法可以不用調用super.init()方法,如果要在init方法中訪問ServletConfig對象,可以調用Servlet類的getServletConfig()方法。
響應客戶請求階段
Servlet容器創建特定于這個請求的ServletRequest對象和ServletResponse對象,然后調用Servlet的service方法從ServletRequest對象獲得客戶請求信息并處理該請求,通過
ServletResponse對象向客戶返回響應結果。
終止階段
當Web應用被終止,或Servlet容器終止運行,或Servlet容器重新裝載Servlet的新實例時,Servlet容器會先調用Servlet的destroy()方法。在destroy方法中,可以釋放Servlet所
占用的資源。