Servlet 是什么?
發(fā)表時(shí)間:2023-08-12 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]Servlet是使用Java Servlet 應(yīng)用程序設(shè)計(jì)接口(API)及相關(guān)類(lèi)和方法的 Java 程序。除了 Java Servlet API,Servlet 還可以使用用以擴(kuò)展和添加到 API ...
Servlet是使用Java Servlet 應(yīng)用程序設(shè)計(jì)接口(API)及相關(guān)類(lèi)和方法的 Java 程序。除了 Java Servlet API,Servlet 還可以使用用以擴(kuò)展和添加到 API 的 Java 類(lèi)軟件包。Servlet 在啟用 Java 的 Web 服務(wù)器上或應(yīng)用服務(wù)器上運(yùn)行并擴(kuò)展了該服務(wù)器的能力。Java servlet對(duì)于Web服務(wù)器就好象Java applet對(duì)于Web瀏覽器。Servlet裝入Web服務(wù)器并在Web服務(wù)器內(nèi)執(zhí)行,而applet裝入Web瀏覽器并在Web瀏覽器內(nèi)執(zhí)行。Java Servlet API 定義了一個(gè)servlet 和Java使能的服務(wù)器之間的一個(gè)標(biāo)準(zhǔn)接口,這使得Servlets具有跨服務(wù)器平臺(tái)的特性。
Servlet 通過(guò)創(chuàng)建一個(gè)框架來(lái)擴(kuò)展服務(wù)器的能力,以提供在 Web 上進(jìn)行請(qǐng)求和響應(yīng)服務(wù)。當(dāng)客戶(hù)機(jī)發(fā)送請(qǐng)求至服務(wù)器時(shí),服務(wù)器可以將請(qǐng)求信息發(fā)送給 Servlet,并讓 Servlet 建立起服務(wù)器返回給客戶(hù)機(jī)的響應(yīng)。 當(dāng)啟動(dòng) Web 服務(wù)器或客戶(hù)機(jī)第一次請(qǐng)求服務(wù)時(shí),可以自動(dòng)裝入 Servlet。裝入后, Servlet 繼續(xù)運(yùn)行直到其它客戶(hù)機(jī)發(fā)出請(qǐng)求。Servlet 的功能涉及范圍很廣。例如,Servlet 可完成如下功能:
(1) 創(chuàng)建并返回一個(gè)包含基于客戶(hù)請(qǐng)求性質(zhì)的動(dòng)態(tài)內(nèi)容的完整的 HTML頁(yè)面。
(2) 創(chuàng)建可嵌入到現(xiàn)有 HTML 頁(yè)面中的一部分 HTML 頁(yè)面(HTML 片段)。
(3) 與其它服務(wù)器資源(包括數(shù)據(jù)庫(kù)和基于 Java 的應(yīng)用程序)進(jìn)行通信。
(4) 用多個(gè)客戶(hù)機(jī)處理連接,接收多個(gè)客戶(hù)機(jī)的輸入,并將結(jié)果廣播到多個(gè)客戶(hù)機(jī)上。例如,Servlet 可
以是多參與者的游戲服務(wù)器。
(5) 當(dāng)允許在單連接方式下傳送數(shù)據(jù)的情況下,在瀏覽器上打開(kāi)服務(wù)器至applet的新連接,并將該連
接保持在打開(kāi)狀態(tài)。當(dāng)允許客戶(hù)機(jī)和服務(wù)器簡(jiǎn)單、高效地執(zhí)行會(huì)話的情況下,applet也可以啟動(dòng)客戶(hù)瀏覽器和服務(wù)器之間的連接?梢酝ㄟ^(guò)定制協(xié)議或標(biāo)準(zhǔn)(如 IIOP)進(jìn)行通信。
(6) 對(duì)特殊的處理采用 MIME 類(lèi)型過(guò)濾數(shù)據(jù),例如圖像轉(zhuǎn)換和服務(wù)器端包括(SSI)。
(7) 將定制的處理提供給所有服務(wù)器的標(biāo)準(zhǔn)例行程序。例如,Servlet 可以修改如何認(rèn)證用戶(hù)。
2.Servlet 的生命周期:
Servlet 的生命周期始于將它裝入 Web 服務(wù)器的內(nèi)存時(shí),并在終止或重新裝入 Servlet 時(shí)結(jié)束。
(1) 初始化
在下列時(shí)刻裝入 Servlet:
=如果已配置自動(dòng)裝入選項(xiàng),則在啟動(dòng)服務(wù)器時(shí)自動(dòng)裝入
=在服務(wù)器啟動(dòng)后,客戶(hù)機(jī)首次向 Servlet 發(fā)出請(qǐng)求時(shí)
=重新裝入 Servlet 時(shí)
裝入 Servlet 后,服務(wù)器創(chuàng)建一個(gè) Servlet 實(shí)例并且調(diào)用 Servlet 的 init() 方法。在初始化階段,Servlet 初始化參數(shù)被傳遞給 Servlet 配置對(duì)象。
(2) 請(qǐng)求處理
對(duì)于到達(dá)服務(wù)器的客戶(hù)機(jī)請(qǐng)求,服務(wù)器創(chuàng)建特定于請(qǐng)求的一個(gè)"請(qǐng)求"對(duì)象和一個(gè)"響應(yīng)"對(duì)象。服務(wù)器調(diào)用 Servlet 的 service() 方法,該方法用于傳遞"請(qǐng)求"和"響應(yīng)"對(duì)象。service() 方法從"請(qǐng)求"對(duì)象獲得請(qǐng)求信息、處理該請(qǐng)求并用"響應(yīng)"對(duì)象的方法以將響應(yīng)傳回客戶(hù)機(jī)。service() 方法可以調(diào)用其它方法來(lái)處理請(qǐng)求,例如 doGet()、doPost() 或其它的方法。
(3) 終止
當(dāng)服務(wù)器不再需要 Servlet, 或重新裝入 Servlet 的新實(shí)例時(shí),服務(wù)器會(huì)調(diào)用 Servlet 的 destroy() 方法。