Servlet介面五種方法介紹
Servlet介面定義了5種方法:
- init()
- service()
- destroy()
- getServletConfig()
- getServletInfo()
init()
在Servlet例項化後,Servlet容器會呼叫init()方法來初始化該物件,主要是為了讓Servlet物件在處理客戶請求前可以完成一些初始化工作,例如:建立資料庫的連線,獲取配置資訊等。對於每一個Servlet例項,init()方法只能被呼叫一次。init()方法有一個型別為ServletConfig的引數,Servlet容器通過這個引數向Servlet傳遞配置資訊。Servlet使用ServletConfig物件從Web應用程式的配置資訊中獲取以名-值對形式提供的初始化引數。另外,在Servlet中,還可以通過ServletConfig物件獲取描述Servlet執行環境的ServletContext物件,使用該物件,Servlet可以和它的Servlet容器進行通訊。
Service()
容器呼叫service()方法來處理客戶端的請求。要注意的是,在service()方法被容器呼叫之前,必須確保init()方法正確完成。容器會構造一個表示客戶端請求資訊的請求物件(型別為ServletRequest)和一個用於對客戶端進行響應的響應物件(型別為ServletResponse)作為引數傳遞給service()。在service()方法中,Servlet物件通過ServletRequest物件得到客戶端的相關資訊和請求資訊,在對請求進行處理後,呼叫ServletResponse物件的方法設定響應資訊。
destroy()
當容器檢測到一個Servlet物件應該從服務中被移除的時候,容器會呼叫該物件的destroy()方法,以便讓Servlet物件可以釋放它所使用的資源,儲存資料到持久儲存裝置中,例如將記憶體中的資料儲存到資料庫中,關閉資料庫的連線等。當需要釋放記憶體或者容器關閉時,容器就會呼叫Servlet物件的destroy()方法,在Servlet容器呼叫destroy()方法前,如果還有其他的執行緒正在service()方法中執行容器會等待這些執行緒執行完畢或者等待伺服器設定的超時值到達。一旦Servlet物件的destroy()方法被呼叫,容器不回再把請求傳送給該物件。如果需要改Servlet再次為客戶端服務,容器將會重新產生一個Servlet物件來處理客戶端的請求。在destroy()方法呼叫之後,容器會釋放這個Servlet物件,在隨後的時間內,該物件會被java的垃圾收集器所回收。
getServletConfig()
該方法返回容器呼叫init()方法時傳遞給Servlet物件的ServletConfig物件,ServletConfig物件包含了Servlet的初始化引數。