servlet 運行在servlet 容器中,其生命周期由容器來管理。servlet 的生命周期通過 javax.servlet.Servlet接口中的init(),servce(),和destory();方法表示。
1,加載和實例化
servlet 容器負責加載和實例化servlet 當容器啟動或在容器中檢測到需要這個servlet來響應一個請求 時。創(chuàng)建servlet實例。容器通過java 的反射API來創(chuàng)建servlet實例.所以servlet中不應該提供帶參數的構造函數。
2,初始化
在servlet實例化后,容器必須調用 init() 方法來初始化這個對象。初始化的目的是為了讓servlet對象在處理客戶請求之前完成一些初始工作。對于每一個servlet實例,init() 方法只會調用一次。
3,請求處理
servlet 容器調用service()方法對請求處理。servlet 實例通過ServletRequest對象獲得客戶端的相關信息和請求信息。在對請求處理后調用ServletResponse對象設置響應信息。
4,服務終止
當容器檢測到一個servlet實例應該從服務器中移除時,容器調用實例的destory方法。讓實例釋放它所占用的資源。如果在次發(fā)請求就會 創(chuàng)建一個新的servlet 實例。
在整個servlet 的生命周期中,創(chuàng)建servlet實例,調用實例的init()和destory()方法都只執(zhí)行一次,當初始話完成后,servlet容器將該實例保存在內存中,通過servlce() 方法為接受請求服務。