1. 程式人生 > >web伺服器、web容器、web應用程式

web伺服器、web容器、web應用程式

Tomcat 是一個小型的輕量級應用伺服器,很受廣大程式設計師的喜歡,因為它執行時佔用的系統資源小,擴充套件性好,支援負載平衡與郵件服務等開發應用系統常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程式設計師都可以更改它或在其中加入新的功能。

一般認為,當在一臺機器上配置好Apache 伺服器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 伺服器的擴充套件,但它是獨立執行的,所以當你執行tomcat 時,它實際上作為一個與Apache 獨立的程序單獨執行的。

當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上執行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web伺服器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的預設模式。不過,Tomcat處理靜態HTML的能力不如Apache伺服器。

伺服器,硬體角度上說就是一臺高效能的Computer。我們通常指的伺服器其實應該是裝有能夠處理具體請求事務的伺服器軟體的Computer。比如最常見的www伺服器、mail伺服器、計費伺服器、ftp伺服器等等。很多時候人們常把諸如Tomcat、IIS、Weblogic 也稱之為web伺服器,其實這些只是用於開發、整合、部署和管理Web應用、網路應用和資料庫應用的應用伺服器軟體。

1、什麼是容器?

Servlet沒有main()方法。Servlet受控於另一個Java應用,這個Java應用稱為容器。Tomcat就是這樣一個容器。如果web伺服器應用得到一個指向servlet的請求(而不是其他請求,如請求一個普通的靜態HTML),此時伺服器不是把這個請求交給servlet本身,而是交給部署該servlet的容器,要由容器呼叫servlet的方法,如doPost()或doGet()。

2、容器能提供什麼?

通訊支援:利用容器提供的方法,你能輕鬆地讓servle與Web伺服器對話;

生命週期管理:容器控制著servlet的生與死。它會負責載入類、例項和初始化servlet、呼叫servlet方法,並使servlet例項能夠被垃圾回收。

多執行緒支援:容器會自動地為它接收的每個servlet請求建立一個新的java執行緒。針對客戶機的請求,如果servlet已經執行完相應的HTTP服務方法,這個執行緒就會結束(也就是會死掉)。

宣告方式實現安全:利用容器,可以使用XML部署描述檔案配置(和修改)安全性,而不必將其硬編碼寫到servlet(或其他)類程式碼中。

JSP

支援:負責把JSP程式碼翻譯成真正的java。

web應用程式需要部署到web容器中才能執行,兩者都必須符合javaEE規範。web容器的應用程式規範如下:

1.目錄結構規範:javaWeb程式的所有檔案都包含在一個資料夾中,包含WEB-INF子資料夾和META-INF子資料夾,WEB-INF資料夾包含classes資料夾和lib資料夾以及web.xml。

Tomcat結構目錄

/bin:包含啟動和關閉Tomcat的檔案

/conf:包含不同的配置檔案:server.xml,web.xml,tomcat-user.xml

/lib:包含Tomcat使用的JAR檔案

/logs:包含日誌檔案

/webapps:包含應用程式示例及自己開發的程式

/work:包含有JSP生成的Servlet

2.jar檔案放在WEB-INF/lib資料夾中。

3.web.xml規範:是整個web應用程式的描述檔案,裡面定義者該Web應用程式可供訪問的資訊資源以及這些資源的行為,包括servlet,過濾器,監聽器,安全驗證等資訊資源。

4.其他資原始檔,如jsp,html,圖片和聲音的放在與WEB-INF同一級目錄下,因為WEB-INF資料夾對於客戶端是不可見的。

web容器是一種服務程式,是能夠支援釋出web程式的軟體,在伺服器一個埠就有一個提供相應服務的程式,而這個程式就是處理從客戶端發出的請求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是這樣的容器。一個伺服器可以多個容器。

b/s結構下,以常見的自來水供水系統為例來說,整個web系統好比完整的供水系統,使用者只需要有水龍頭(Broswer),水管相當於計算機網路(network),自來水公司的供水系統(即Server),其中的壓力水罐就是容器(Container)了。

Tomcat是Apache-Jarkarta的一個子專案,是一個開放式原始碼,免費支援JSP和Servlet技術的容器,它同時又是一個Web伺服器軟體。

Servlet和JSP兩者分工協作,Servlet側重於解決運算和業務邏輯問題,JSP則側重於解決展示問題。Servlet與JSP一起為Web應用開發帶來了巨大的貢獻,後來出現的眾多Java Web應用開發框架都是基於這兩種技術的,更確切的說,都是基於Servlet技術的。

servlet容器的主要任務是管理servlet的生命週期。web容器更準確的說應該叫web伺服器(Pythonweb容器有web.py),它是來管理和部署web應用的。還有一種伺服器叫做應用伺服器,它的功能比web伺服器要強大的多,因為它可以部署EJB應用,可以實現容器管理的事務,一般的應用伺服器有weblogic和websphere等,它們都是商業伺服器,功能強大但都是收費的。web容器最典型的就是tomcat了,Tomcat是web容器也是servlet容器。