- Java EE程序設(shè)計與開發(fā)實(shí)踐教程
- 馮志林編著
- 686字
- 2021-10-27 17:05:30
5.2 Servlet工作過程

第5章任務(wù)2
1.Servlet工作過程步驟
Servlet工作過程包括6個步驟:
1)讀取客戶端(如瀏覽器、移動端)發(fā)送的顯式的數(shù)據(jù),如HTML表單。
2)讀取客戶端發(fā)送的隱式的HTTP請求數(shù)據(jù),如Cookies。
3)處理數(shù)據(jù)并生成結(jié)果。
這個過程需要訪問數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)獲取。
4)發(fā)送顯式的數(shù)據(jù)到客戶端。數(shù)據(jù)包括文本文件(HTML、JSP、XML、JSON等)、二進(jìn)制文件(GIF圖像)、Excel表格等。
5)發(fā)送隱式的HTTP響應(yīng)到客戶端,如設(shè)置Cookies和緩存參數(shù)等。
6)服務(wù)器關(guān)閉或者Servlet空閑時間超過一定限度時,調(diào)用destroy方法退出。
2.Servlet的生命周期
Servlet生命周期可被定義為從創(chuàng)建直到銷毀的整個過程,如圖5-1所示。

圖5-1 Servlet生命周期
當(dāng)來自客戶端的請求映射到Servlet時,Web容器(如Tomcat服務(wù)器)執(zhí)行以下步驟:
1)加載Servlet類,創(chuàng)建該類的實(shí)例。
每一個用戶請求都會產(chǎn)生一個新的線程。
2)Servlet通過調(diào)用init ()方法進(jìn)行初始化。
3)Servlet調(diào)用service()方法來處理客戶端的請求。
4)Servlet通過調(diào)用destroy()方法終止。
5)Servlet由JVM的垃圾回收器進(jìn)行垃圾回收。
3.Servlet的三個方法
1)init方法:可選,用于初始化。
init()方法加載默認(rèn)數(shù)據(jù)或者連接數(shù)據(jù)庫,以用于Servlet的整個生命周期。init()方法只在第一次創(chuàng)建Servlet時被調(diào)用,在后續(xù)用戶請求時不再調(diào)用。
2)service方法:用于處理請求。
service()方法是執(zhí)行實(shí)際任務(wù)的主要方法。容器調(diào)用service()方法來處理來自客戶端的請求,并把格式化的響應(yīng)寫回給客戶端。service()方法將檢查HTTP請求類型(GET、POST、PUT、DELETE等),并分別調(diào)用doGet、doPost、doPut,doDelete等方法進(jìn)行處理。
3)destroy方法:可選,用于清除并釋放在init方法中所分配的資源。
destroy()方法只在Servlet生命周期結(jié)束時被調(diào)用一次。當(dāng)服務(wù)器被關(guān)閉,或者Servlet空閑超過一定時間后,調(diào)用destroy()方法退出。可以在destroy()方法中關(guān)閉數(shù)據(jù)庫連接、停止后臺線程。
- Mastering Adobe Captivate 2017(Fourth Edition)
- SQL Server 2016從入門到精通(視頻教學(xué)超值版)
- 跟老齊學(xué)Python:輕松入門
- PhoneGap Mobile Application Development Cookbook
- Serverless架構(gòu)
- RSpec Essentials
- C語言程序設(shè)計
- Protocol-Oriented Programming with Swift
- RealSenseTM互動開發(fā)實(shí)戰(zhàn)
- Mastering Git
- 現(xiàn)代C++編程實(shí)戰(zhàn):132個核心技巧示例(原書第2版)
- 鴻蒙OS應(yīng)用編程實(shí)戰(zhàn)
- 黑莓(BlackBerry)開發(fā)從入門到精通
- 交互設(shè)計師成長手冊:從零開始學(xué)交互
- Keil Cx51 V7.0單片機(jī)高級語言編程與μVision2應(yīng)用實(shí)踐