中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Servlet容器(Web容器)是什么

您可能已經(jīng)知道,部署動態(tài)網(wǎng)站一般需要Web服務(wù)器的支持,例如:

運行PHP網(wǎng)站一般選擇Apache或者Nginx;

運行ASP/ASP.NET網(wǎng)站一般選擇IIS;

運行Python網(wǎng)站一般選擇內(nèi)置的WSGI服務(wù)器模塊——wsgiref。

Web服務(wù)器是一種對外提供Web服務(wù)的軟件,它可以接收瀏覽器的HTTP請求,并將處理結(jié)果返回給瀏覽器。

在部署Servlet網(wǎng)站時,同樣需要一種類似的軟件,例如Tomcat、Jboss、Jetty、WebLogic等,但是它們通常被稱為“容器”,而不是“服務(wù)器”,這究竟是為什么呢?Servlet容器和傳統(tǒng)意義上的服務(wù)器有什么不同呢?

本節(jié)我們先講解傳統(tǒng)Web服務(wù)器的架構(gòu)模式,再講解Servlet容器的架構(gòu)模式,然后將它們進(jìn)行對比,加深讀者的理解。

Web服務(wù)器

初學(xué)者可能認(rèn)為,只要有Web服務(wù)器,我們編寫的網(wǎng)站代碼就可以運行了,就可以訪問數(shù)據(jù)庫了,就可以注冊登錄并發(fā)布文章了,這其實是一種誤解。

我們通常所說的Web服務(wù)器,比如Apache、Nginx、IIS等,它們的功能往往都比較單一,只能提供http(s)服務(wù),讓用戶訪問靜態(tài)資源(HTML文檔、圖片、CSS文件、JavaScript文件等),它們不能執(zhí)行任何編程語言,也不能訪問數(shù)據(jù)庫,更不能讓用戶注冊和登錄。

也就是說,如果只有Web服務(wù)器,那您只能部署靜態(tài)網(wǎng)站,不能部署動態(tài)網(wǎng)站。要想部署動態(tài)網(wǎng)站,必須要有編程語言運行環(huán)境(運行時,Runtime)的和數(shù)據(jù)庫管理系統(tǒng)的支持。

運行環(huán)境(運行時)

開發(fā)網(wǎng)站使用的編程語言一般都是腳本語言(比如PHP、ASP、Python),部署網(wǎng)站時都是將源代碼直接扔到服務(wù)器上,然而源代碼自己并不能運行,必須要有解釋器的支持;當(dāng)用戶訪問動態(tài)頁面時,解釋器負(fù)責(zé)分析、編譯和執(zhí)行源代碼,然后得到處理結(jié)果。

解釋器是執(zhí)行腳本語言的核心部件,除此以外還有一些輔助性的部件,例如:

垃圾回收器:負(fù)責(zé)及時釋放不需要的內(nèi)存,騰出資源供其它頁面使用;

標(biāo)準(zhǔn)庫:任何編程語言都會附帶標(biāo)準(zhǔn)庫,它們提供了很多通用性的功能,極大地提高了開發(fā)效率,避免重復(fù)造輪子。

我們習(xí)慣將以上各種支持腳本語言運行的部件統(tǒng)稱為運行環(huán)境,或者運行時(Runtime)。

數(shù)據(jù)庫

Web服務(wù)器不帶數(shù)據(jù)庫,編程語言也不帶數(shù)據(jù)庫,數(shù)據(jù)庫是一款獨立的軟件;要想實現(xiàn)用戶注冊、發(fā)布文章、提交評論等功能,就必須安裝一款數(shù)據(jù)庫,比如MySQL、Oracle、SQLServer等。

總結(jié)

部署動態(tài)網(wǎng)站一般至少需要三個組件,分別是Web服務(wù)器、腳本語言運行時和數(shù)據(jù)庫,例如,部署PHP網(wǎng)站一般選擇「Apache+PHP運行時+MySQL」的組合。

Web容器

我們知道,Servlet是基于Java語言的,運行Servlet必然少不了JRE的支持,它負(fù)責(zé)解析和執(zhí)行字節(jié)碼文件(.class文件)。然而JRE只包含了Java虛擬機(JVM)、Java核心類庫和一些輔助性性文件,它并不支持Servlet規(guī)范。要想運行Servlet代碼,還需要一種額外的部件,該部件必須支持Servlet規(guī)范,實現(xiàn)了Servlet接口和一些基礎(chǔ)類,這種部件就是Servlet容器。

Servlet容器就是Servlet代碼的運行環(huán)境(運行時),它除了實現(xiàn)Servlet規(guī)范定義的各種接口和類,為Servlet的運行提供底層支持,還需要管理由用戶編寫的Servlet類,比如實例化類(創(chuàng)建對象)、調(diào)用方法、銷毀類等。

Servlet中的容器和生活中的容器是類似的概念:生活中容器用來裝水、裝糧食,Servlet中的容器用來裝類,裝對象。

讀者可能會提出疑問,我們自己編寫的Servlet類為什么需要Servlet容器來管理呢?這是因為我們編寫的Servlet類沒有main()函數(shù),不能獨立運行,只能作為一個模塊被載入到Servlet容器,然后由Servlet容器來實例化,并調(diào)用其中的方法。

一個動態(tài)頁面對應(yīng)一個Servlet類,開發(fā)一個動態(tài)頁面就是編寫一個Servlet類,當(dāng)用戶請求到達(dá)時,Servlet容器會根據(jù)配置文件(web.xml)來決定調(diào)用哪個類。

下圖演示了Servlet容器在整個HTTP請求流程中的位置:

您看,Web服務(wù)器是整個動態(tài)網(wǎng)站的“大門”,用戶的HTTP請求首先到達(dá)Web服務(wù)器,Web服務(wù)器判斷該請求是靜態(tài)資源還是動態(tài)資源:如果是靜態(tài)資源就直接返回,此時相當(dāng)于用戶下載了一個服務(wù)器上的文件;如果是動態(tài)資源將無法處理,必須將該請求轉(zhuǎn)發(fā)給Servlet容器。

Servlet容器接收到請求以后,會根據(jù)配置文件(web.xml)找到對應(yīng)的Servlet類,將它加載并實例化,然后調(diào)用其中的方法來處理用戶請求;處理結(jié)束后,Servlet容器將處理結(jié)果再轉(zhuǎn)交給Web服務(wù)器,由Web服務(wù)器將處理結(jié)果進(jìn)行封裝,以HTTP響應(yīng)的形式發(fā)送給最終的用戶。

常用的Web容器有Tomcat、Jboss、Jetty、WebLogic等,其中Tomcat由Java官方提供,是初學(xué)者最常使用的。

為了簡化部署流程,Web容器往往也會自帶Web服務(wù)器模塊,提供基本的HTTP服務(wù),所以您可以不用再安裝Apache、IIS、Nginx等傳統(tǒng)意義上的服務(wù)器,只需要安裝一款Web容器,就能部署Servlet網(wǎng)站了。正是由于這個原因,有的教材將Tomcat稱為Web容器,有的教材又將Tomcat稱為Web服務(wù)器,兩者的概念已經(jīng)非常模糊了。

將Web容器當(dāng)做服務(wù)器使用后,上面的流程圖就變成了下面的樣子:

注意,Servlet容器自帶的Web服務(wù)器模塊雖然沒有傳統(tǒng)的Web服務(wù)器強大,但是也足以應(yīng)付大部分開發(fā)場景,對初學(xué)者來說是足夠的。當(dāng)然,您也可以將傳統(tǒng)的Web服務(wù)器和Servlet容器組合起來,兩者分工協(xié)作,各司其職,共同完成HTTP請求。

總結(jié)

Servlet容器就是Servlet程序的運行環(huán)境,它主要包含以下幾個功能:

實現(xiàn)Servlet規(guī)范定義的各種接口和類,為Servlet的運行提供底層支持;

管理用戶編寫的Servlet類,以及實例化以后的對象;

提供HTTP服務(wù),相當(dāng)于一個簡化的服務(wù)器。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Tomcat 與 Apache 區(qū)別?
Web容器_Web服務(wù)器及常見的Web容器有哪些?
關(guān)于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一...
深入理解java技術(shù)之 Tomcat服務(wù)器詳解
總結(jié):Apache/Tomcat/JBOSS/Jetty/Nginx區(qū)別 .
J2EE學(xué)習(xí)中一些值得研究的開源項目 - CSDN Java頻道
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服