1. 程式人生 > >Apache與Tomcat關系

Apache與Tomcat關系

apache與tomcat關系

Apache與Tomcat都是提供Web服務的服務器軟件。但很多人對兩者有什麽聯系, 兩者到底是不是同一個東西,兩者到底有沒有依賴等這類問題難以回答,甚至混淆這兩者。作為開發人員,我也有同樣的困惑,今天查閱了很多資料,將這些資料貼出來,供學習使用。

1、Apache是什麽

Apache是一款開源的Web服務器產品,大部分都用C語言編寫(你直接理解成用c語言編寫算了)。全世界使用量排名第一的Web服務器。另外,Apache也是一個開源軟件基金會的名字,其下管理很多開源項目,也包括這款叫Apache的Web服務器軟件。


2、Tomcat是什麽

Tomcat同樣是一款開源的Web服務器產品,使用Java語言編寫。也同Apache服務器一樣,提供Web服務,但Tomcat主要用於承載JSP、CGI等服務端處理腳本,並提供運行環境,處理客戶端請求,再輸出HTML返回給用戶。這類在服務端動態加載數據(可更改的數據)並回傳給客戶端瀏覽器的網站叫動態網站或動態網頁。相對的,還有一類叫靜態網頁的,就是數據不變動的網頁或網站,這類頁面多是HTML或HTML文件集合。

再提一點Tomcat項目也是掛在Apache開源軟件基金會下的,作為一個項目由核心團隊和全世界的程序員共同維護和開發。


3、Apache與Tomcat比較

相同點:

Apache與Tomcat都是Web服務器,都支持跨平臺,都是開源項目

Apache與Tomcat都屬於Apache開源軟件基金會下的項目,並運行在全世界很多服務器上

不同點:

Apache服務器是C語言編寫,其主要的側重點是並行能力和均衡負載,Tomcat服務器用Java編寫,主要側重於作為一個Servlet容器,做到後臺動態處理,由Java和JRE處理。

Apache服務器只支持靜態頁面的請求處理,並不支持動態網頁的處理。要完成動態處理,必須通過插件或作為Apache擴展模塊,在啟動時動態加載到Apache擴展接口供調用。而Tomcat就支持動態網頁處理,使用CGI或Java,我們對Java的使用更多,所以大部分時候說到Tomcat就能想到JSP。


4、分析與說明

Apache主要提供的是靜態頁面處理,對於動態頁面處理這類問題,多是作為其擴展的一部分由其他語言或第三方插件控制。可以這樣想,Apache提供了一個中轉,將不同的數據請求分發到各個對應的模塊,PHP請求發送 到對應的php模塊,CGI請求則創建一個進程並調用CGI腳本,這時候當對應模塊處理完,將作為輸出返回給Apache服務器,Apache服務器再將這些結果(HTML頁面)返回給客戶端瀏覽器。

而Tomcat雖然也是個服務器(這裏我們只討論作為Java Servlet容器的實現),接受的只能是對JSP的請求。Tomcat是按照J2EE發布的JSP和Servlet標準實現的,完全支持這兩種標準,被作為一個Servlet容器實現。當Tomcat接收到JSP頁面請求時,先用Tomcat解析,得到相應的參數,再找到對應的Servlet路由,之後調用Servlet接口中的對應方法(Get、Post、Delete、Put等),處理客戶端傳回的數據或請求動作,最後得到輸出,返回給Tomcat,Tomcat再使用JSP渲染出HTTP,傳回客戶端瀏覽器。


本文出自 “高家大少的技術博客” 博客,請務必保留此出處http://gaopengju.blog.51cto.com/12830710/1946265

Apache與Tomcat關系