Http協(xié)議分析

Http協(xié)議分析

HTTP是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議释移,由于其簡(jiǎn)捷非剃、快速的方式,適用于分布式超媒體信息系統(tǒng)宙暇。它于1990年提出输枯,經(jīng)過(guò)幾年的使用與發(fā)展,得到不斷地完善和擴(kuò)展占贫。目前在WWW中使用的是HTTP/1.0的第六版桃熄,HTTP/1.1的規(guī)范化工作正在進(jìn)行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經(jīng)提出型奥。
HTTP協(xié)議的主要特點(diǎn)可概括如下:

  1. 支持客戶(hù)/服務(wù)器模式瞳收。
  2. 簡(jiǎn)單快速:客戶(hù)向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑桩引。請(qǐng)求方法常用的有GET缎讼、HEAD、POST坑匠。每種方法規(guī)定了客戶(hù)與服務(wù)器聯(lián)系的類(lèi)型不同血崭。由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小厘灼,因而通信速度很快夹纫。
  3. 靈活:HTTP允許傳輸任意類(lèi)型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念?lèi)型由Content-Type加以標(biāo)記设凹。
  4. 無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求舰讹。服務(wù)器處理完客戶(hù)的請(qǐng)求,并收到客戶(hù)的應(yīng)答后闪朱,即斷開(kāi)連接月匣。采用這種方式可以節(jié)省傳輸時(shí)間钻洒。
  5. 無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力锄开。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息素标,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大萍悴。另一方面头遭,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。

HTTP協(xié)議(URL)

http(超文本傳輸協(xié)議)是一個(gè)基于請(qǐng)求與響應(yīng)模式的癣诱、無(wú)狀態(tài)的计维、應(yīng)用層的協(xié)議,乘河瑁基于TCP的連接方式鲫惶,HTTP1.1版本中給出一種持續(xù)連接的機(jī)制,絕大多數(shù)的Web開(kāi)發(fā)实抡,都是構(gòu)建在HTTP協(xié)議之上的Web應(yīng)用剑按。
HTTP URL (URL是一種特殊類(lèi)型的URI,包含了用于查找某個(gè)資源的足夠的信息)的格式如下: http://host[":"port][abs_path]
http表示要通過(guò)HTTP協(xié)議來(lái)定位網(wǎng)絡(luò)資源澜术;host表示合法的Internet主機(jī)域名或者IP地址;port指定一個(gè)端口號(hào)猬腰,為空則使用缺省端口80鸟废;abs_path指定請(qǐng)求資源的URI;如果URL中沒(méi)有給出abs_path姑荷,那么當(dāng)它作為請(qǐng)求URI時(shí)盒延,必須以“/”的形式給出,通常這個(gè)工作瀏覽器自動(dòng)幫我們完成鼠冕。

HTTP協(xié)議的請(qǐng)求

http請(qǐng)求由三部分組成添寺,分別是:請(qǐng)求行、消息報(bào)頭懈费、請(qǐng)求正文
1计露、請(qǐng)求行以一個(gè)方法符號(hào)開(kāi)頭,以空格分開(kāi)憎乙,后面跟著請(qǐng)求的URI和協(xié)議的版本票罐,格式如下:Method Request-URI HTTP-Version CRLF
其中 Method表示請(qǐng)求方法;Request-URI是一個(gè)統(tǒng)一資源標(biāo)識(shí)符泞边;HTTP-Version表示請(qǐng)求的HTTP協(xié)議版本该押;CRLF表示回車(chē)和換行(除了作為結(jié)尾的CRLF外,不允許出現(xiàn)單獨(dú)的CR或LF字符)阵谚。
請(qǐng)求方法(所有方法全為大寫(xiě))有多種蚕礼,各個(gè)方法的解釋如下:

GET     請(qǐng)求獲取Request-URI所標(biāo)識(shí)的資源 
POST    在Request-URI所標(biāo)識(shí)的資源后附加新的數(shù)據(jù) 
HEAD    請(qǐng)求獲取由Request-URI所標(biāo)識(shí)的資源的響應(yīng)消息報(bào)頭 
PUT     請(qǐng)求服務(wù)器存儲(chǔ)一個(gè)資源烟具,并用Request-URI作為其標(biāo)識(shí) 
DELETE  請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源 
TRACE   請(qǐng)求服務(wù)器回送收到的請(qǐng)求信息,主要用于測(cè)試或診斷 
CONNECT 保留將來(lái)使用 
OPTIONS 請(qǐng)求查詢(xún)服務(wù)器的性能奠蹬,或者查詢(xún)與資源相關(guān)的選項(xiàng)和需求 

應(yīng)用舉例:

GET方法:在瀏覽器的地址欄中輸入網(wǎng)址的方式訪(fǎng)問(wèn)網(wǎng)頁(yè)時(shí)朝聋,瀏覽器采用GET方法向服務(wù)器獲取資源,eg:GET /form.html HTTP/1.1 (CRLF) 
POST方法要求被請(qǐng)求服務(wù)器接受附在請(qǐng)求后面的數(shù)據(jù)罩润,常用于提交表單玖翅。
eg:POST /reg.jsp HTTP/ (CRLF) 
Accept:image/gif,image/x-xbit,... (CRLF) 
... 
HOST:www.guet.edu.cn (CRLF) 
Content-Length:22 (CRLF) 
Connection:Keep-Alive (CRLF) 
Cache-Control:no-cache (CRLF) 
(CRLF)         //該CRLF表示消息報(bào)頭已經(jīng)結(jié)束,在此之前為消息報(bào)頭 
user=jeffrey&pwd=1234  //此行以下為提交的數(shù)據(jù) 

HEAD方法與GET方法幾乎是一樣的割以,對(duì)于HEAD請(qǐng)求的回應(yīng)部分來(lái)說(shuō)金度,它的HTTP頭部中包含的信息與通過(guò)GET請(qǐng)求所得到的信息是相同的。利用這個(gè)方法严沥,不必傳輸整個(gè)資源內(nèi)容猜极,就可以得到Request-URI所標(biāo)識(shí)的資源的信息。該方法常用于測(cè)試超鏈接的有效性消玄,是否可以訪(fǎng)問(wèn)跟伏,以及最近是否更新。

HTTP協(xié)議的響應(yīng)

在接收和解釋請(qǐng)求消息后翩瓜,服務(wù)器返回一個(gè)HTTP響應(yīng)消息受扳。
HTTP響應(yīng)也是由三個(gè)部分組成,分別是:狀態(tài)行兔跌、消息報(bào)頭勘高、響應(yīng)正文
1、狀態(tài)行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF 

其中坟桅,HTTP-Version表示服務(wù)器HTTP協(xié)議的版本华望;Status-Code表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼;Reason-Phrase表示狀態(tài)代碼的文本描述仅乓。
狀態(tài)代碼有三位數(shù)字組成赖舟,第一個(gè)數(shù)字定義了響應(yīng)的類(lèi)別,且有五種可能取值:

1xx:指示信息--表示請(qǐng)求已接收夸楣,繼續(xù)處理 
2xx:成功--表示請(qǐng)求已被成功接收宾抓、理解、接受 
3xx:重定向--要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作 
4xx:客戶(hù)端錯(cuò)誤--請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無(wú)法實(shí)現(xiàn) 
5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求 
常見(jiàn)狀態(tài)代碼豫喧、狀態(tài)描述洞慎、說(shuō)明: 
200 OK      //客戶(hù)端請(qǐng)求成功 
400 Bad Request  //客戶(hù)端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解 
401 Unauthorized //請(qǐng)求未經(jīng)授權(quán)嘿棘,這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用 
403 Forbidden  //服務(wù)器收到請(qǐng)求劲腿,但是拒絕提供服務(wù) 
404 Not Found  //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的URL 
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤 
503 Server Unavailable  //服務(wù)器當(dāng)前不能處理客戶(hù)端的請(qǐng)求鸟妙,一段時(shí)間后可能恢復(fù)正常 
eg:HTTP/1.1 200 OK (CRLF) 

2焦人、響應(yīng)報(bào)頭
Location:Location響應(yīng)報(bào)頭域用于重定向接受者到一個(gè)新的位置挥吵。例如:客戶(hù)端所請(qǐng)求的頁(yè)面已不存在原先的位置,為了讓客戶(hù)端重定向到這個(gè)頁(yè)面新的位置花椭,服務(wù)器端可以發(fā)回Location響應(yīng)報(bào)頭后使用重定向語(yǔ)句忽匈,讓客戶(hù)端去訪(fǎng)問(wèn)新的域名所對(duì)應(yīng)的服務(wù)器上的資源;
  Server:Server 響應(yīng)報(bào)頭域包含了服務(wù)器用來(lái)處理請(qǐng)求的軟件信息及其版本。它和 User-Agent 請(qǐng)求報(bào)頭域是相對(duì)應(yīng)的矿辽,前者發(fā)送服務(wù)器端軟件的信息丹允,后者發(fā)送客戶(hù)端軟件(瀏覽器)和操作系統(tǒng)的信息。
  Vary:指示不可緩存的請(qǐng)求頭列表;
  Connection:連接方式;
  對(duì)于請(qǐng)求來(lái)說(shuō):close(告訴 WEB 服務(wù)器或者代理服務(wù)器袋倔,在完成本次請(qǐng)求的響應(yīng)后雕蔽,斷開(kāi)連接,不等待本次連接的后續(xù)請(qǐng)求了)宾娜。keepalive(告訴WEB服務(wù)器或者代理服務(wù)器批狐,在完成本次請(qǐng)求的響應(yīng)后,保持連接前塔,等待本次連接的后續(xù)請(qǐng)求);
  對(duì)于響應(yīng)來(lái)說(shuō):close(連接已經(jīng)關(guān)閉); keepalive(連接保持著嚣艇,在等待本次連接的后續(xù)請(qǐng)求); Keep-Alive:如果瀏覽器請(qǐng)求保持連接,則該頭部表明希望WEB 服務(wù)器保持連接多長(zhǎng)時(shí)間(秒);例如:Keep-Alive:300;
  WWW-Authenticate:WWW-Authenticate響應(yīng)報(bào)頭域必須被包含在401 (未授權(quán)的)響應(yīng)消息中华弓,這個(gè)報(bào)頭域和前面講到的Authorization 請(qǐng)求報(bào)頭域是相關(guān)的食零,當(dāng)客戶(hù)端收到 401 響應(yīng)消息,就要決定是否請(qǐng)求服務(wù)器對(duì)其進(jìn)行驗(yàn)證寂屏。如果要求服務(wù)器對(duì)其進(jìn)行驗(yàn)證慌洪,就可以發(fā)送一個(gè)包含了Authorization 報(bào)頭域的請(qǐng)求;
  空行:最后一個(gè)響應(yīng)頭部之后是一個(gè)空行,發(fā)送回車(chē)符和換行符凑保,通知服務(wù)器以下不再有響應(yīng)頭部。
3涌攻、響應(yīng)正文就是服務(wù)器返回的資源的內(nèi)容

4.4 HTTP協(xié)議的消息報(bào)頭
HTTP消息由客戶(hù)端到服務(wù)器的請(qǐng)求和服務(wù)器到客戶(hù)端的響應(yīng)組成欧引。請(qǐng)求消息和響應(yīng)消息都是由開(kāi)始行(對(duì)于請(qǐng)求消息,開(kāi)始行就是請(qǐng)求行恳谎,對(duì)于響應(yīng)消息芝此,開(kāi)始行就是狀態(tài)行),消息報(bào)頭(可選)因痛,空行(只有CRLF的行)婚苹,消息正文(可選)組成。
HTTP消息報(bào)頭包括普通報(bào)頭鸵膏、請(qǐng)求報(bào)頭膊升、響應(yīng)報(bào)頭、實(shí)體報(bào)頭谭企。
每一個(gè)報(bào)頭域都是由名字+“:”+空格+值 組成廓译,消息報(bào)頭域的名字是大小寫(xiě)無(wú)關(guān)的评肆。
1、普通報(bào)頭
在普通報(bào)頭中非区,有少數(shù)報(bào)頭域用于所有的請(qǐng)求和響應(yīng)消息瓜挽,但并不用于被傳輸?shù)膶?shí)體,只用于傳輸?shù)南ⅰ?br> 2征绸、請(qǐng)求報(bào)頭
請(qǐng)求報(bào)頭允許客戶(hù)端向服務(wù)器端傳遞請(qǐng)求的附加信息以及客戶(hù)端自身的信息久橙。
請(qǐng)求報(bào)頭舉例:

GET /form.html HTTP/1.1 (CRLF) 
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF) 
Accept-Language:zh-cn (CRLF) 
Accept-Encoding:gzip,deflate (CRLF) 
If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF) 
If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF) 
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF) 
Host:www.guet.edu.cn (CRLF) 
Connection:Keep-Alive (CRLF) 
(CRLF) 

3、響應(yīng)報(bào)頭
響應(yīng)報(bào)頭允許服務(wù)器傳遞不能放在狀態(tài)行中的附加響應(yīng)信息管怠,以及關(guān)于服務(wù)器的信息和對(duì)Request-URI所標(biāo)識(shí)的資源進(jìn)行下一步訪(fǎng)問(wèn)的信息淆衷。
4、實(shí)體報(bào)頭
請(qǐng)求和響應(yīng)消息都可以傳送一個(gè)實(shí)體排惨。一個(gè)實(shí)體由實(shí)體報(bào)頭域和實(shí)體正文組成吭敢,但并不是說(shuō)實(shí)體報(bào)頭域和實(shí)體正文要在一起發(fā)送,可以只發(fā)送實(shí)體報(bào)頭域暮芭。實(shí)體報(bào)頭定義了關(guān)于實(shí)體正文(eg:有無(wú)實(shí)體正文)和請(qǐng)求所標(biāo)識(shí)的資源的元信息鹿驼。

Servlet程序

Java Servlet介紹

Java Servlet 是運(yùn)行在 Web 服務(wù)器或應(yīng)用服務(wù)器上的程序,它是作為來(lái)自 Web 瀏覽器或其他 HTTP 客戶(hù)端的請(qǐng)求和 HTTP 服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序之間的中間層辕宏。

使用 Servlet畜晰,您可以收集來(lái)自網(wǎng)頁(yè)表單的用戶(hù)輸入,呈現(xiàn)來(lái)自數(shù)據(jù)庫(kù)或者其他源的記錄瑞筐,還可以動(dòng)態(tài)創(chuàng)建網(wǎng)頁(yè)凄鼻。
Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公共網(wǎng)關(guān)接口)實(shí)現(xiàn)的程序可以達(dá)到異曲同工的效果聚假。但是相比于 CGI块蚌,Servlet 有以下幾點(diǎn)優(yōu)勢(shì):
性能明顯更好。

Servlet 在 Web 服務(wù)器的地址空間內(nèi)執(zhí)行膘格。這樣它就沒(méi)有必要再創(chuàng)建一個(gè)單獨(dú)的進(jìn)程來(lái)處理每個(gè)客戶(hù)端請(qǐng)求峭范。
Servlet 是獨(dú)立于平臺(tái)的,因?yàn)樗鼈兪怯?Java 編寫(xiě)的瘪贱。
服務(wù)器上的 Java 安全管理器執(zhí)行了一系列限制纱控,以保護(hù)服務(wù)器計(jì)算機(jī)上的資源。因此菜秦,Servlet 是可信的甜害。
Java 類(lèi)庫(kù)的全部功能對(duì) Servlet 來(lái)說(shuō)都是可用的。它可以通過(guò) sockets 和 RMI 機(jī)制與 applets球昨、數(shù)據(jù)庫(kù)或其他軟件進(jìn)行交互尔店。
Java Servlet 是運(yùn)行在帶有支持 Java Servlet 規(guī)范的解釋器的 web 服務(wù)器上的 Java 類(lèi)。

Servlet 可以使用 javax.servlet 和 javax.servlet.http 包創(chuàng)建,它是 Java 企業(yè)版的標(biāo)準(zhǔn)組成部分闹获,Java 企業(yè)版是支持大型開(kāi)發(fā)項(xiàng)目的 Java 類(lèi)庫(kù)的擴(kuò)展版本期犬。
這些類(lèi)實(shí)現(xiàn) Java Servlet 和 JSP 規(guī)范。在寫(xiě)本教程的時(shí)候避诽,二者相應(yīng)的版本分別是 Java Servlet 2.5 和 JSP 2.1龟虎。
Java Servlet 就像任何其他的 Java 類(lèi)一樣已經(jīng)被創(chuàng)建和編譯。在您安裝 Servlet 包并把它們添加到您的計(jì)算機(jī)上的 Classpath 類(lèi)路徑中之后沙庐,您就可以通過(guò) JDK 的 Java 編譯器或任何其他編譯器來(lái)編譯 Servlet鲤妥。

Servlet 架構(gòu)

下圖顯示了 Servlet 在 Web 應(yīng)用程序中的位置。


image.png

Servlet 任務(wù)

Servlet 執(zhí)行以下主要任務(wù):
讀取客戶(hù)端(瀏覽器)發(fā)送的顯式的數(shù)據(jù)拱雏。這包括網(wǎng)頁(yè)上的 HTML 表單棉安,或者也可以是來(lái)自 applet 或自定義的 HTTP 客戶(hù)端程序的表單。
讀取客戶(hù)端(瀏覽器)發(fā)送的隱式的 HTTP 請(qǐng)求數(shù)據(jù)铸抑。這包括 cookies贡耽、媒體類(lèi)型和瀏覽器能理解的壓縮格式等等。
處理數(shù)據(jù)并生成結(jié)果鹊汛。這個(gè)過(guò)程可能需要訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)蒲赂,執(zhí)行 RMI 或 CORBA 調(diào)用,調(diào)用 Web 服務(wù)刁憋,或者直接計(jì)算得出對(duì)應(yīng)的響應(yīng)滥嘴。
發(fā)送顯式的數(shù)據(jù)(即文檔)到客戶(hù)端(瀏覽器)。該文檔的格式可以是多種多樣的至耻,包括文本文件(HTML 或 XML)若皱、二進(jìn)制文件(GIF 圖像)、Excel 等尘颓。
發(fā)送隱式的 HTTP 響應(yīng)到客戶(hù)端(瀏覽器)走触。這包括告訴瀏覽器或其他客戶(hù)端被返回的文檔類(lèi)型(例如 HTML),設(shè)置 cookies 和緩存參數(shù)疤苹,以及其他類(lèi)似的任務(wù)互广。

Servlet 生命周期

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

Servlet 通過(guò)調(diào)用 init () 方法進(jìn)行初始化痰催。
Servlet 調(diào)用 service() 方法來(lái)處理客戶(hù)端的請(qǐng)求。
Servlet 通過(guò)調(diào)用 destroy() 方法終止(結(jié)束)迎瞧。
最后夸溶,Servlet 是由 JVM 的垃圾回收器進(jìn)行垃圾回收的。

現(xiàn)在讓我們?cè)敿?xì)討論生命周期的方法凶硅。
init() 方法
init 方法被設(shè)計(jì)成只調(diào)用一次缝裁。它在第一次創(chuàng)建 Servlet 時(shí)被調(diào)用,在后續(xù)每次用戶(hù)請(qǐng)求時(shí)不再調(diào)用。因此捷绑,它是用于一次性初始化韩脑,就像 Applet 的 init 方法一樣。
Servlet 創(chuàng)建于用戶(hù)第一次調(diào)用對(duì)應(yīng)于該 Servlet 的 URL 時(shí)粹污,但是您也可以指定 Servlet 在服務(wù)器第一次啟動(dòng)時(shí)被加載段多。
當(dāng)用戶(hù)調(diào)用一個(gè) Servlet 時(shí),就會(huì)創(chuàng)建一個(gè) Servlet 實(shí)例壮吩,每一個(gè)用戶(hù)請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的線(xiàn)程进苍,適當(dāng)?shù)臅r(shí)候移交給 doGet 或 doPost 方法。init() 方法簡(jiǎn)單地創(chuàng)建或加載一些數(shù)據(jù)鸭叙,這些數(shù)據(jù)將被用于 Servlet 的整個(gè)生命周期觉啊。
init 方法的定義如下:

public void init() throws ServletException {
  // 初始化代碼...}

service() 方法
service() 方法是執(zhí)行實(shí)際任務(wù)的主要方法。Servlet 容器(即 Web 服務(wù)器)調(diào)用 service() 方法來(lái)處理來(lái)自客戶(hù)端(瀏覽器)的請(qǐng)求沈贝,并把格式化的響應(yīng)寫(xiě)回給客戶(hù)端杠人。
每次服務(wù)器接收到一個(gè) Servlet 請(qǐng)求時(shí),服務(wù)器會(huì)產(chǎn)生一個(gè)新的線(xiàn)程并調(diào)用服務(wù)宋下。service() 方法檢查 HTTP 請(qǐng)求類(lèi)型(GET嗡善、POST、PUT杨凑、DELETE 等)滤奈,并在適當(dāng)?shù)臅r(shí)候調(diào)用 doGet、doPost撩满、doPut蜒程,doDelete 等方法。
下面是該方法的特征:

public void service(ServletRequest request, 
                    ServletResponse response) 
      throws ServletException, IOException{}

service() 方法由容器調(diào)用伺帘,service 方法在適當(dāng)?shù)臅r(shí)候調(diào)用 doGet昭躺、doPost、doPut伪嫁、doDelete 等方法领炫。所以,您不用對(duì) service() 方法做任何動(dòng)作张咳,您只需要根據(jù)來(lái)自客戶(hù)端的請(qǐng)求類(lèi)型來(lái)重載 doGet() 或 doPost() 即可帝洪。
doGet() 和 doPost() 方法是每次服務(wù)請(qǐng)求中最常用的方法。下面是這兩種方法的特征脚猾。
doGet() 方法
GET 請(qǐng)求來(lái)自于一個(gè) URL 的正常請(qǐng)求葱峡,或者來(lái)自于一個(gè)未指定 METHOD 的 HTML 表單,它由 doGet() 方法處理龙助。

public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代碼}

doPost() 方法
POST 請(qǐng)求來(lái)自于一個(gè)特別指定了 METHOD 為 POST 的 HTML 表單砰奕,它由 doPost() 方法處理。

public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代碼}

destroy() 方法
destroy() 方法只會(huì)被調(diào)用一次,在 Servlet 生命周期結(jié)束時(shí)被調(diào)用军援。destroy() 方法可以讓您的 Servlet 關(guān)閉數(shù)據(jù)庫(kù)連接仅淑、停止后臺(tái)線(xiàn)程、把 Cookie 列表或點(diǎn)擊計(jì)數(shù)器寫(xiě)入到磁盤(pán)胸哥,并執(zhí)行其他類(lèi)似的清理活動(dòng)涯竟。
在調(diào)用 destroy() 方法之后,servlet 對(duì)象被標(biāo)記為垃圾回收烘嘱。destroy 方法定義如下所示:

  public void destroy() {
    // 終止化代碼...
  }

下圖顯示了一個(gè)典型的 Servlet 生命周期方案昆禽。
第一個(gè)到達(dá)服務(wù)器的 HTTP 請(qǐng)求被委派到 Servlet 容器。
Servlet 容器在調(diào)用 service() 方法之前加載 Servlet蝇庭。
然后 Servlet 容器處理由多個(gè)線(xiàn)程產(chǎn)生的多個(gè)請(qǐng)求醉鳖,每個(gè)線(xiàn)程執(zhí)行一個(gè)單一的 Servlet 實(shí)例的 service() 方法。


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哮内,一起剝皮案震驚了整個(gè)濱河市盗棵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌北发,老刑警劉巖纹因,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異琳拨,居然都是意外死亡瞭恰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)狱庇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惊畏,“玉大人,你說(shuō)我怎么就攤上這事密任⊙掌簦” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵浪讳,是天一觀(guān)的道長(zhǎng)缰盏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)淹遵,這世上最難降的妖魔是什么口猜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮透揣,結(jié)果婚禮上济炎,老公的妹妹穿的比我還像新娘。我一直安慰自己淌实,他們只是感情好冻辩,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拆祈,像睡著了一般恨闪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上放坏,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天咙咽,我揣著相機(jī)與錄音,去河邊找鬼淤年。 笑死钧敞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的麸粮。 我是一名探鬼主播溉苛,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼弄诲!你這毒婦竟也來(lái)了愚战?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤齐遵,失蹤者是張志新(化名)和其女友劉穎寂玲,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體梗摇,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拓哟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伶授。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片断序。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谎砾,靈堂內(nèi)的尸體忽然破棺而出逢倍,到底是詐尸還是另有隱情,我是刑警寧澤景图,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布较雕,位于F島的核電站,受9級(jí)特大地震影響挚币,放射性物質(zhì)發(fā)生泄漏亮蒋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一妆毕、第九天 我趴在偏房一處隱蔽的房頂上張望慎玖。 院中可真熱鬧,春花似錦笛粘、人聲如沸趁怔。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)润努。三九已至关斜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铺浇,已是汗流浹背痢畜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鳍侣,地道東北人丁稀。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像倚聚,于是被迫代替她去往敵國(guó)和親线衫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理惑折,服務(wù)發(fā)現(xiàn)桶雀,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 一唬复、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,330評(píng)論 6 152
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng)矗积,內(nèi)容來(lái)源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,203評(píng)論 3 82
  • 本文整理自MIN飛翔博客 [1] 1. 概念 協(xié)議是指計(jì)算機(jī)通信網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或...
    HoyaWhite閱讀 2,637評(píng)論 2 20
  • 作為志愿者,我被安排做自閉癥小朋友行為觀(guān)察記錄的工作敞咧。我見(jiàn)到了然然棘捣。然然是一個(gè)很可愛(ài)很漂亮的小女生,上天卻選擇讓她...
    小鯨魚(yú)Lee閱讀 257評(píng)論 0 0