1. 程式人生 > >Servlet生命週期與配置

Servlet生命週期與配置

博前“廢話”

前面總結到jQuery相關知識,掌握瞭如何在前端使用Ajax技術與Web伺服器通訊,在前端我們使用JavaScript進行資料處理、html進行內容展示、css進行頁面樣式設計。那麼我們後臺使用什麼? 對於java來說,毫無疑問是Servlet。雖說現在有什麼SSH、SSM等框架,其實都是封裝了Servlet的框架。由此可見,Servlet的地位不一般。

Servlet是什麼?

Servlet是java編寫的Web服務端程式。它有什麼作用呢?
serlvet作用圖
根據上圖可以知道它的作用如下:
1. 讀取使用者通過瀏覽器傳送的所有資料
2. 查詢HTttp請求所包含的引數資訊
3. 根據請求處理資料並生成相應的結果
4. 設定要返回給瀏覽器的Http響應引數
5. 將處理的結果和設定的Http響應引數一併傳送給瀏覽器

Servlet生命週期

前面講到servlet既然是一個程式,那麼就應該有他的生命週期。從初始化階段——>響應客戶請求階段——>銷燬階段。如下圖所示:
servlet生命週期圖

從圖中可以看出,servlet的生命週期具體是怎樣的。每個階段都有相對應的方法,下面將對其中每個方法一一總結

方法名 何時呼叫 描述 能否重寫
init() 當Servlet被例項化之後,第一次呼叫Servlet時,容器會呼叫該方法 在Servlet處理使用者請求之前,可以呼叫init() 可以重寫該方法,得到資料庫連線或載入一些系統引數
service(…) 每收到一個使用者發來的請求時,servlet就開啟一個新的執行緒,並呼叫service(…)方法處理使用者的請求 service(…)會根據Http請求,判斷請求型別(Get/Post)並呼叫相應的方法進行處理 可以重寫,使用這樣的方式可以自己封裝處理使用者不同方式的請求
doGet(…)/doPost(…) 這是service(…)方法根據Http請求的請求型別呼叫doGet(…)或doPost(…) Get請求呼叫doGet(…)進行處理;Post請求呼叫doPost(…)進行處理 至少重寫其中一個
destroy() 當伺服器銷燬Servlet物件之前 servlet可以清理資源 可以重寫,做一些清理資源操作

Servlet的配置

掌握了Servlet的生命週期,接下來我在來看看Servlet有哪些配置,Web專案的配置檔案路徑:MySite/WebRoot/web-INF/web.xml。那麼Servlet的配置也在該檔案中,其中分為<servlet>、<servlet-mapping>

兩大元素。

< servlet >元素

該元素下存在四個子元素:

元素名 說明
< servlet-name> 定義servlet的名字
< servlet-class> 指定Servlet的類,全限定名
< init-param> 定義servlet的初始化引數,可以定義多個參宿
< load-on-startup> Web應用啟動時,裝載Servlet的順序,數值小的最先被載入,依次類推

< servlet-mapping >元素

該元素有兩個子元素:

元素名 說明
< servlet-name> 定義servlet的名字,根據此名字查詢對應的< servlet>元素
< url-pattern> 訪問Servlet的相對路徑,相對於上下文路徑

總結

瞭解了什麼是servlet之後,對javaWeb開發就有了更清晰的認識了。