Servlet是Web學習的一個基礎,而且是一個比較重要的知識點,因爲後期框架的封裝也是在這個基礎上進行封裝,下邊對其基本應用做些說明。
1、簡介
Servlet簡單的理解就是一個JAVA類,但是其工作特點有點特殊,它是工作在服務器端的,也是一個小的服務程序,在Web中,當一個請求過來時,Servlet可以對其進行相應的處理。
2、生命週期
下圖是在API中Servlet的相關方法說明。
其中init()、service()、destory()爲Servlet有關生命週期的方法;init()爲Servlet的初始化方法,destroy()方法爲Servlet的銷燬方法,service()方法爲Servlet的核心服務方法。
初始化:一般Servlet是在客戶端向服務器請求第一次調用該Servlet時會進行初始化操作,爲了提高效率也可以在web.xml文件的<servlet>標籤中配置<load-on-startup>標籤讓Servlet在服務器啓動時進行初始化操作,例如服務器中的DefaultServlet。
銷燬:在web應用程序從服務器移除,或服務器停止都會將服務器中的Servlet銷燬,這時候就會執行destory方法。
服務:在servlet創建之後就駐留與內存,每次客戶端對該Servlet的請求都會調用service方法,爲這次請求服務。
3、DefaultServlet
上邊說明過了,服務器端的DefaultServlet會在服務器啓動時第一個創建出來,這個Servlet在服務器端起着舉足輕重的功能。在此需要說明的是我們的每一個客戶端請求都會請求到一個Servlet上,如果我們訪問的是一個靜態的網頁資源,在服務器端找不到我們請求的Servlet,這是會由DefaultServlet處理,經過判斷,如果爲靜態頁面資源,DefaultSerrvlet就會將頁面資源處理,並有response對象將數據返回給客戶端。
所以我們不要輕易配置一個默認的Servlet,如果我們的默認Servlet將服務器的覆蓋後,我們請求的靜態頁面資源將無法訪問。
4、家族成員——ServletConfig
在配置Servlet的過程中我們可以通過<init-param>標籤爲Servlet配置初始化參數,這些初始化參數會在Servlet創建的過程中封裝到ServletConfig對象中,我們可以通過該特性,將在Servlet中用到的信息,但是又容易發生變化的信息配置起來,在Servlet中通過ServletConfig對象獲取出來。
5、家族對象——ServletContext
在服務器啓動時會爲每一個Web應用程序創建一個ServletContext對象,它代表整個WEB應用,通過該對象可以獲取該WEB應用的相應信息,例如獲取文件資源和相關路徑,以及Servlet的相關信息等。