Servlet生命周期

Servlet 生命周期

Servlet 生命周期可被定義為從創(chuàng)建直到毀滅的整個過程。以下是 Servlet 遵循的過程:

Servlet 通過調用 init () 方法進行初始化。

Servlet 調用 service() 方法來處理客戶端的請求冬耿。

Servlet 通過調用 destroy() 方法終止(結束)坟岔。

最后召边,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的村视。

現(xiàn)在讓我們詳細討論生命周期的方法。

init() 方法

init 方法被設計成只調用一次蜀备。它在第一次創(chuàng)建 Servlet 時被調用,在后續(xù)每次用戶請求時不再調用荒叶。因此碾阁,它是用于一次性初始化,就像 Applet 的 init 方法一樣些楣。

Servlet 創(chuàng)建于用戶第一次調用對應于該 Servlet 的 URL 時脂凶,但是您也可以指定 Servlet 在服務器第一次啟動時被加載。

當用戶調用一個 Servlet 時愁茁,就會創(chuàng)建一個 Servlet 實例蚕钦,每一個用戶請求都會產生一個新的線程,適當?shù)臅r候移交給 doGet 或 doPost 方法鹅很。init() 方法簡單地創(chuàng)建或加載一些數(shù)據(jù)嘶居,這些數(shù)據(jù)將被用于 Servlet 的整個生命周期。

init 方法的定義如下:

public void init() throws ServletException {

? // 初始化代碼...

}

service() 方法

service() 方法是執(zhí)行實際任務的主要方法促煮。Servlet 容器(即 Web 服務器)調用 service() 方法來處理來自客戶端(瀏覽器)的請求邮屁,并把格式化的響應寫回給客戶端。

每次服務器接收到一個 Servlet 請求時菠齿,服務器會產生一個新的線程并調用服務佑吝。service() 方法檢查 HTTP 請求類型(GET、POST泞当、PUT迹蛤、DELETE 等),并在適當?shù)臅r候調用 doGet襟士、doPost盗飒、doPut,doDelete 等方法陋桂。

下面是該方法的特征:

public void service(ServletRequest request,

? ? ? ? ? ? ? ? ? ? ServletResponse response)

? ? ? throws ServletException, IOException{

}

service() 方法由容器調用逆趣,service 方法在適當?shù)臅r候調用 doGet、doPost嗜历、doPut宣渗、doDelete 等方法抖所。所以,您不用對 service() 方法做任何動作痕囱,您只需要根據(jù)來自客戶端的請求類型來重載 doGet() 或 doPost() 即可田轧。

doGet() 和 doPost() 方法是每次服務請求中最常用的方法。下面是這兩種方法的特征鞍恢。

doGet() 方法

GET 請求來自于一個 URL 的正常請求傻粘,或者來自于一個未指定 METHOD 的 HTML 表單,它由 doGet() 方法處理帮掉。

public void doGet(HttpServletRequest request,

? ? ? ? ? ? ? ? ? HttpServletResponse response)

? ? throws ServletException, IOException {

? ? // Servlet 代碼

}

doPost() 方法

POST 請求來自于一個特別指定了 METHOD 為 POST 的 HTML 表單弦悉,它由 doPost() 方法處理。

public void doPost(HttpServletRequest request,

? ? ? ? ? ? ? ? ? HttpServletResponse response)

? ? throws ServletException, IOException {

? ? // Servlet 代碼

}

destroy() 方法

destroy() 方法只會被調用一次蟆炊,在 Servlet 生命周期結束時被調用稽莉。destroy() 方法可以讓您的 Servlet 關閉數(shù)據(jù)庫連接、停止后臺線程涩搓、把 Cookie 列表或點擊計數(shù)器寫入到磁盤污秆,并執(zhí)行其他類似的清理活動。

在調用 destroy() 方法之后缩膝,servlet 對象被標記為垃圾回收混狠。destroy 方法定義如下所示:

? public void destroy() {

? ? // 終止化代碼...

? }

架構圖

下圖顯示了一個典型的 Servlet 生命周期方案。

圖片發(fā)自簡書App


第一個到達服務器的 HTTP 請求被委派到 Servlet 容器疾层。

Servlet 容器在調用 service() 方法之前加載 Servlet将饺。

然后 Servlet 容器處理由多個線程產生的多個請求,每個線程執(zhí)行一個單一的 Servlet 實例的 service() 方法痛黎。

Servlet 生命周期

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末予弧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子湖饱,更是在濱河造成了極大的恐慌掖蛤,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件井厌,死亡現(xiàn)場離奇詭異蚓庭,居然都是意外死亡,警方通過查閱死者的電腦和手機仅仆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門器赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人墓拜,你說我怎么就攤上這事港柜。” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵夏醉,是天一觀的道長爽锥。 經常有香客問我,道長畔柔,這世上最難降的妖魔是什么氯夷? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮靶擦,結果婚禮上肠槽,老公的妹妹穿的比我還像新娘。我一直安慰自己奢啥,他們只是感情好,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布嘴拢。 她就那樣靜靜地躺著桩盲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪席吴。 梳的紋絲不亂的頭發(fā)上赌结,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機與錄音孝冒,去河邊找鬼柬姚。 笑死,一個胖子當著我的面吹牛庄涡,可吹牛的內容都是我干的量承。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼穴店,長吁一口氣:“原來是場噩夢啊……” “哼撕捍!你這毒婦竟也來了?” 一聲冷哼從身側響起泣洞,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤忧风,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后球凰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狮腿,經...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年呕诉,在試婚紗的時候發(fā)現(xiàn)自己被綠了缘厢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡义钉,死狀恐怖昧绣,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情捶闸,我是刑警寧澤夜畴,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布拖刃,位于F島的核電站,受9級特大地震影響贪绘,放射性物質發(fā)生泄漏兑牡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一税灌、第九天 我趴在偏房一處隱蔽的房頂上張望均函。 院中可真熱鬧,春花似錦菱涤、人聲如沸苞也。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽如迟。三九已至,卻和暖如春攻走,著一層夾襖步出監(jiān)牢的瞬間殷勘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工昔搂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玲销,地道東北人。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓摘符,卻偏偏與公主長得像贤斜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子议慰,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內容