什么是 Servlet 容器?
目錄
1、什么是 Web 服務(wù)器?
2、什么是 Servlet 容器?
3、什么是 Servlet?
4、Servlet 容器和 Web 服務(wù)器如何處理一個(gè)請(qǐng)求的?
5、JVM 的作用
我們簡(jiǎn)單的談一談關(guān)于?Web?服務(wù)器,?Servlet 容器及其與?JVM 的關(guān)系。其實(shí)?Servlet 容器只不過(guò)是一個(gè) Java 程序。
1、什么是 Web 服務(wù)器?
想要了解什么是 Servlet 容器,首先需要知道什么是 Web 服務(wù)器。
Web 服務(wù)器使用 HTTP 協(xié)議傳輸數(shù)據(jù)。在一般情況下,用戶在瀏覽器(客戶端)中鍵入 URL(例如www.baidu.com/static.html),并獲取要讀取的網(wǎng)頁(yè)。所以服務(wù)器所做的就是向客戶機(jī)發(fā)送一個(gè)網(wǎng)頁(yè)。信息的交換采用指定請(qǐng)求和響應(yīng)消息的格式的 HTTP 協(xié)議。
2、什么是 Servlet 容器?
正如我們看到的,用戶/客戶端只能從服務(wù)器請(qǐng)求靜態(tài)網(wǎng)頁(yè)。如果用戶希望根據(jù)自己的輸入閱讀網(wǎng)頁(yè),那么這還不夠好。Servlet 容器的基本思想是使用 Java 動(dòng)態(tài)生成服務(wù)器端的網(wǎng)頁(yè)。所以 Servlet 容器本質(zhì)上是與 Servlet 交互的 Web 服務(wù)器的一部分。
“Servlet 容器”是一個(gè)裝載一堆 Servlet 對(duì)象的“器具”(容器),并且具備管理這些對(duì)象的功能。
3、什么是 Servlet?
Servlet?是 javax.servlet 包中定義的接口。它聲明了 Servlet 生命周期的三個(gè)基本方法:init()、service() 和 destroy()。它們由每個(gè) Servlet Class(在 SDK 中定義或自定義)實(shí)現(xiàn),并由服務(wù)器在特定時(shí)機(jī)調(diào)用。
- init() 方法在 Servlet 生命周期的初始化階段調(diào)用。它被傳遞一個(gè)實(shí)現(xiàn) javax.servlet.ServletConfig 接口的對(duì)象,該接口允許 Servlet 從 Web 應(yīng)用程序訪問(wèn)初始化參數(shù)。
- service() 方法在初始化后對(duì)每個(gè)請(qǐng)求進(jìn)行調(diào)用。每個(gè)請(qǐng)求都在自己的獨(dú)立線程中提供服務(wù)。Web容器為每個(gè)請(qǐng)求調(diào)用 Servlet 的 service() 方法。service() 方法確認(rèn)請(qǐng)求的類型,并將其分派給適當(dāng)?shù)姆椒▉?lái)處理該請(qǐng)求。
- destroy() 方法在銷毀 Servlet 對(duì)象時(shí)調(diào)用,用來(lái)釋放所持有的資源。
從 Servlet 對(duì)象的生命周期中,我們可以看到 Servlet 類是由類加載器動(dòng)態(tài)加載到容器中的。每個(gè)請(qǐng)求都在自己的線程中,Servlet 對(duì)象可以同時(shí)服務(wù)多個(gè)線程(線程不安全的)。當(dāng)它不再被使用時(shí),會(huì)被 JVM 垃圾收集。
像任何Java程序一樣,Servlet 在 JVM 中運(yùn)行。為了處理復(fù)雜的 HTTP 請(qǐng)求,Servlet 容器出現(xiàn)了。Servlet 容器負(fù)責(zé) Servlet 的創(chuàng)建、執(zhí)行和銷毀。
4、Servlet 容器和 Web 服務(wù)器如何處理一個(gè)請(qǐng)求的?
5、JVM 的作用
Servlet 允許 JVM 在處理每個(gè)請(qǐng)求時(shí)使用單獨(dú)的 Java 線程,這是 Servlet 容器的一個(gè)主要優(yōu)點(diǎn)。每個(gè) Servlet 是一個(gè) Java 類,具有響應(yīng) HTTP 請(qǐng)求的特殊元素。
Servlet 容器的主要功能是將請(qǐng)求轉(zhuǎn)發(fā)到正確的 Servlet 進(jìn)行處理,并在 JVM 處理完后將動(dòng)態(tài)生成的結(jié)果返回到正確的位置。
在大多數(shù)情況下, Servlet 容器在單個(gè) JVM 中運(yùn)行,但是當(dāng)容器需要多個(gè) JVM 時(shí),會(huì)有一些其它的解決方案。
?
英文原文:https://dzone.com/articles/what-servlet-container
總結(jié)
以上是生活随笔為你收集整理的什么是 Servlet 容器?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C#字符处理
- 下一篇: bzoj 3157 bzoj 3516