web伺服器、Apache 和tomcat 的關係 - 程式前沿

文章推薦指數: 80 %
投票人數:10人

Tomcat是一個執行環境,或者叫容器。

Tomcat負責例項化jsp並且處理請求(通俗的講就是“執行”jsp,搞到對應的響應資訊),並且返回一個響應 ... 程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具web伺服器、Apache和tomcat的關係2018.07.15程式語言JavaWeb,kali的web,mq和web,mvc和web,php和web,web依賴webHOME程式語言web伺服器、Apache和tomcat的關係Advertisement以一次JSP請求響應為例,講解伺服器,Apache、Tomcat之間的關係。

帶著這樣一個概念去看:Apache與ApacheTomcat(簡稱Tomcat)都是可以獨立執行的伺服器。

你平時見到的apache-tomcat-7.0.72實際上只是Tomcat伺服器。

此處整合了Apache和ApacheTomcat。

Apache用來處理靜態資源,減少Tomcat的服務開銷。

目錄1.先來個熱身2.熱身,again3.現在,進入正題3.1.概念闡述3.2.Apache與Tomcat比較聯絡先來個熱身一個請求到發出到響應返回的全過程 首先,客戶端發出一個請求 看到瀏覽器上的URL地址了麼,那就是你的請求的主要內容。

請求以一串文字的形式傳送,例如http://www.baidu.com代表按照http協議獲取www.baidu.com這個資源(關於資源的概念請參見URI和URL)。

當然實際上你的請求不是這麼寫的,這麼寫只是為了讓你有一個直觀的感受,具體請參見HTTP協議第二步,伺服器(硬體)收到這個請求,也就是那一串文字。

 伺服器的概念之一就是一臺電腦。

你提交的請求會被髮送到這臺電腦上。

 顯然啊,伺服器就是一臺電腦,沒有軟體的話它是無法識別請求並做出響應的第三步,伺服器(硬體)將請求交付給伺服器(軟體,例如Apache就是一個常用的伺服器軟體)。

 假設請求的是一個動態頁面(動態頁面就是需要動態生成的頁面,例如QQ空間,每人每時每刻都不同,需要動態生成),在本例中是JSP,那麼apache則會將請求繼續轉給下一個部分第四步,伺服器(軟體)將請求交給Tomcat 因為Apache本身不提供動態頁面訪問能力的,所以對jsp的支援要靠其他的東西來實現,這個東西類似於外掛(但嚴格來說Tomcat並不是Apache的一個外掛)。

在本例中,這個外掛就是Tomcat。

要注意:Tomcat本身也是可以單獨作為伺服器來執行的。

Tomcat有時也被稱為ApacheTomcat,這個Apache指的並不是Apache伺服器,而是一個“商標”,因為Tomcat是屬於Apache這個專案的 Tomcat是一個執行環境,或者叫容器。

Tomcat負責例項化jsp並且處理請求(通俗的講就是“執行”jsp,搞到對應的響應資訊),並且返回一個響應到apache,apache則繼續將響應返回到客戶端。

至此,一個響應完成熱身,again以上內容說白了就是輸入和輸出,給定一個輸入,產生一個輸出。

根據這個,我們來模擬下web的進化史。

最初,人們的需求很低,只要求能夠有靜態頁面就好了。

 舉個例子,例如要做一個公告網頁,上面公示每天的重要通知。

怎麼做呢?好辦啊! 我們用一個簡化的輸入輸出來表示,只要你輸入“公告”,我就輸出“2017-3-26XXX寫下了第一篇關於幾個概念的理解的部落格”,不要想得太多,就是一個標準輸入,標準輸入。

 用Java寫很簡單,寫成一個控制檯標準輸入輸出就好了。

用虛擬碼表示如下,if(輸入=“公告”)then print“2017-3-26XXX寫下了一篇關於幾個概念的理解的部落格”12這就是滿足了需求,就這麼簡單,然後將他改成網路IO就好了。

要是公告變了怎麼辦?好辦,將print“2017-3-26XXX寫下了第一篇關於幾個概念的理解的部落格”該掉就好了。

也就是說,只要資訊變動,你就要重寫訊息源,改動原始碼。

很蠢是吧。

這還好說,要是生成的像QQ空間那樣的頁面怎麼搞?好辦!套模板啊。

一個頁面變動的只是少數,有很大一部分是不變的。

想填空題一樣,將空填起來就好了,像這樣date="2017-3-26" name="一隻準程式設計師" about="幾個概念的理解" if(輸入=“公告”)then printdatename“寫下了一篇關於"about"的部落格”12345這幾個變數完全可以從資料庫中自動獲取。

也就是說,只要更新資料庫,然後頁面就會自動更新了。

雖然還是很蠢,但是動態頁面就是這個原理。

(你寫JSP不就是填空嗎,在模板上填空。

${name}這樣的不就是“空”嗎)總結下,Apache負責請求轉發&&靜態頁面處理,Tomcat來處理動態頁面解析現在,進入正題概念闡述藉助以上過程和概念,來談一談伺服器、Apache、Tomcat之間的關係伺服器 經過以上過程,這個概念很熟了吧,有兩個主要概念 硬體:一臺電腦。

這臺電腦上執行著至少一個伺服器軟體,能夠處理請求軟體:一個提供網頁的伺服器程式。

處理請求並返回響應Apache Apache就是一個伺服器(軟體),提供了靜態頁面的訪問能力。

它配置上外掛(模組)後可以以各種語言實現動態頁面。

(但是一定要注意Tomcat並不是Apache的外掛)Tomcat ApacheTomcat(即平時所說的Tomcat),也是一個伺服器。

在這個案例中,Tomcat充當了一個外掛的作用,這個外掛是針對於Java的,或者說是jsp/servlet的。

它是一個容器。

何為容器?容器麼,就是容器。

容的是什麼,JSP、Servlet。

容器管理jsp、servlet的宣告週期,包括建立,執行,銷燬。

它是一個jsp、servlet的執行環境。

通俗點說,請求發過來,Tomcat負責執行JSP、Servlet,並返回結果。

關於生命週期這東西,在此不做闡述。

也就是說,沒有Tomcat,Apache是不認你JSP的。

懂設計模式的可以想想了。





當然,整個過程都有設計模式的影子Apache與Tomcat比較聯絡apache支援靜態頁,tomcat支援動態的,比如servlet等。

一般使用apachetomcat的話,apache只是作為一個轉發,對jsp的處理是由tomcat來處理的。

apache可以支援php\cgi\perl,但是要使用java的話,你需要tomcat在apache後臺支撐,將java請求由apache轉發給tomcat處理。

apache是web伺服器,Tomcat是應用(java)伺服器,它只是一個servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴充套件,但是可以獨立於apache執行。

共同點兩者都是apache組織開發的兩者都有HTTP服務的功能兩者都是免費的不同點: Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等)Tomcat是Apache組織在符合J2EE的JSP、Servlet標準下開發的一個JSP伺服器Advertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章Vue中容易被忽視的知識點2019.12.09if我是前端Leader,談談前端框架體系建設2019.12.09Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08AdvertisementAdvertisement



請為這篇文章評分?