Apache與Tomcat關(guān)系

Apache與Tomcat都是提供Web服務(wù)的服務(wù)器軟件。但很多人對兩者有什么聯(lián)系, 兩者到底是不是同一個東西,兩者到底有沒有依賴等這類問題難以回答,甚至混淆這兩者。作為開發(fā)人員,我也有同樣的困惑,今天查閱了很多資料,將這些資料貼出來,供學(xué)習(xí)使用。?
1、Apache是什么?
?Apache是一款開源的Web服務(wù)器產(chǎn)品,大部分都用C語言編寫(你直接理解成用c語言編寫算了)。全世界使用量排名第一的Web服務(wù)器。另外,Apache也是一個開源軟件基金會的名字,其下管理很多開源項(xiàng)目,也包括這款叫Apache的Web服務(wù)器軟件。?
2、Tomcat是什么?
?Tomcat同樣是一款開源的Web服務(wù)器產(chǎn)品,使用Java語言編寫。也同Apache服務(wù)器一樣,提供Web服務(wù),但Tomcat主要用于承載JSP、CGI等服務(wù)端處理腳本,并提供運(yùn)行環(huán)境,處理客戶端請求,再輸出HTML返回給用戶。這類在服務(wù)端動態(tài)加載數(shù)據(jù)(可更改的數(shù)據(jù))并回傳給客戶端瀏覽器的網(wǎng)站叫動態(tài)網(wǎng)站或動態(tài)網(wǎng)頁。相對的,還有一類叫靜態(tài)網(wǎng)頁的,就是數(shù)據(jù)不變動的網(wǎng)頁或網(wǎng)站,這類頁面多是HTML或HTML文件集合。?
?再提一點(diǎn)Tomcat項(xiàng)目也是掛在Apache開源軟件基金會下的,作為一個項(xiàng)目由核心團(tuán)隊(duì)和全世界的程序員共同維護(hù)和開發(fā)。?
3、Apache與Tomcat比較?
相同點(diǎn):?
?Apache與Tomcat都是Web服務(wù)器,都支持跨平臺,都是開源項(xiàng)目?
?Apache與Tomcat都屬于Apache開源軟件基金會下的項(xiàng)目,并運(yùn)行在全世界很多服務(wù)器上?
不同點(diǎn):?
?Apache服務(wù)器是C語言編寫,其主要的側(cè)重點(diǎn)是并行能力和均衡負(fù)載,Tomcat服務(wù)器用Java編寫,主要側(cè)重于作為一個Servlet容器,做到后臺動態(tài)處理,由Java和JRE處理。?
?Apache服務(wù)器只支持靜態(tài)頁面的請求處理,并不支持動態(tài)網(wǎng)頁的處理。要完成動態(tài)處理,必須通過插件或作為Apache擴(kuò)展模塊,在啟動時動態(tài)加載到Apache擴(kuò)展接口供調(diào)用。而Tomcat就支持動態(tài)網(wǎng)頁處理,使用CGI或Java,我們對Java的使用更多,所以大部分時候說到Tomcat就能想到JSP。?
4、分析與說明?
?Apache主要提供的是靜態(tài)頁面處理,對于動態(tài)頁面處理這類問題,多是作為其擴(kuò)展的一部分由其他語言或第三方插件控制。可以這樣想,Apache提供了一個中轉(zhuǎn),將不同的數(shù)據(jù)請求分發(fā)到各個對應(yīng)的模塊,PHP請求發(fā)送 到對應(yīng)的php模塊,CGI請求則創(chuàng)建一個進(jìn)程并調(diào)用CGI腳本,這時候當(dāng)對應(yīng)模塊處理完,將作為輸出返回給Apache服務(wù)器,Apache服務(wù)器再將這些結(jié)果(HTML頁面)返回給客戶端瀏覽器。?
?而Tomcat雖然也是個服務(wù)器(這里我們只討論作為Java Servlet容器的實(shí)現(xiàn)),接受的只能是對JSP的請求。Tomcat是按照J(rèn)2EE發(fā)布的JSP和Servlet標(biāo)準(zhǔn)實(shí)現(xiàn)的,完全支持這兩種標(biāo)準(zhǔn),被作為一個Servlet容器實(shí)現(xiàn)。當(dāng)Tomcat接收到JSP頁面請求時,先用Tomcat解析,得到相應(yīng)的參數(shù),再找到對應(yīng)的Servlet路由,之后調(diào)用Servlet接口中的對應(yīng)方法(Get、Post、Delete、Put等),處理客戶端傳回的數(shù)據(jù)或請求動作,最后得到輸出,返回給Tomcat,Tomcat再使用JSP渲染出HTTP,傳回客戶端瀏覽器。
了解更多網(wǎng)絡(luò)知識關(guān)注:http://www.vecloud.com/