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服務器(Python的web容器有web.py等),它是來管理和部署web應用的。還有一種服務器叫做應用服務器,它的功能比web服務器要強大的多,因為它可以部署EJB應用,可以實現容器管理的事務,一般的應用服務器有weblogic和websphere等,它們都是商業服務器,功能強大但都是收費的。web容器最典型的就是tomcat了,Tomcat是web容器也是servlet容器。