1. 程式人生 > >Servlet的學習:Servlet簡介以及生命週期

Servlet的學習:Servlet簡介以及生命週期

1.Servlet簡介

	Servlet執行在伺服器端,是由Web伺服器負責載入的,是獨立於平臺和協議的Java應用程式。Servlet並不限制所使用的協議,但是使用最多的協議是HTTP協議。

2.Servlet的生命週期

servlet 執行在servlet容器中,由容器來管理其生命週期。servlet生命週期包含四個過程:

  • 載入和例項化 載入和例項化servlet是由servlet容器來實現的。載入servlet之後,容器會通過Java的反射機制來建立servlet例項。

  • 初始化 在servlet例項建立完之後,容器會呼叫servlet的init()方法來初始化該servlet物件。初始化的目的是讓Servlet物件在處理客戶端請求前先完成一些初始化工作。對於每個servlet例項只會呼叫一次init()方法。

  • 執行 當客戶端請求到來後,Servlet 容器首先針對該請求建立ServletRequest和ServletResponse兩個物件,然後Servlet容器會自動呼叫Servlet的service()方法來響應客戶端請求,同時把ServletRequest和ServletResponse兩個物件傳給service()方法。通過ServletRequest物件,Servlet例項可以獲得客戶端的請求資訊,處理完請求後,則將響應資訊放置在ServletResponse物件中。最後銷燬ServletRequest和ServletResponse物件。

  • 清理 當Servlet例項需要從服務中移除時,容器會呼叫destroy()方法,讓該例項釋放掉它所使用的資源,並將例項中的資料儲存到持久的儲存裝置中。之後,Servet例項便會被Java的垃圾回收器所回收。在Servlet的整個生命週期中,初始化和銷燬都只發生一次,service()方法的執行次數取決於Servet 被客戶端所訪問的次數。

下面對servlet生命週期中的3個重要方法做個說明。 (1) init()方法 該方法在javax.servlet. Servlet介面中定義。建立Servlet例項時會呼叫init()方法,在init()方法中完成類似於構造方法的初始化功能,其引數為ServletConfig的例項。init()方法結束後,Servlet就可以接受客戶端請求。 在Servlet的整個生命週期中,只執行一次init()方法。 (2) service()方法 該方法用來響應客戶端發出的請求。service()方 法使用ServletRequest 介面和ServletResponse介面的物件作為引數,其中,ServletRequest物件用來處理請求,ServletResponse物件用來發送響應。 serivice()方法執行時會檢查HTTP請求的型別,並相應地呼叫doGet()、doPost()等方法請求。因此,通常的做法是,不使用sevice()方法,而直接使doGet()、 doPost()等方法來處理。 (3) destroy()方法 當不再需要Servet例項或重新裝入時,destroy()方法被呼叫。 使用destroy()方法可以釋放掉所有在init()方法中申請的資源。一個 Servlet 例項一旦終止, 就不允許再次被呼叫,只能等待被解除安裝。 destroy()方法通常用來執行 一些清理任務,在destroy()方法中一 般安排釋放資源的程式碼。