回複內容:
如果僅僅為了開發一個網頁,開發完成自己在瀏覽器就能預覽一下,那用不用apache關係不大。但開發的多個網頁,你如果想讓別人也看看效果啥的,這時候,你是會發這些網頁檔案(html檔案)發給這些人,還是搭個環境,給別人提供一個url就OK了呢?
而在搭這個環境的時候,將會用到Apache、IIS這類的Web Server。
而更有些時候,你是需要處理一些動態資源,此時,直接發送源檔案並不能讓人看到實際效果,往往這個時候除了Apache這種Web Server,還需要能解析特定語言的容器,像JSP、Servlet對應的Tomcat。
這樣動態靜態資源都能響應的時候,你的檔案效果就展示了出來。
此處,我在公眾號裡也寫了一些關於Web Server與Web Container的區別,一併寫出來:
所以你會經常看到面試題問: Tomcat 和 Apache 有什麼區別?
那到底有什麼區別呢?
對Tomcat這種角色,有一個統一的稱呼:Web容器(Web Container). 類似的Web容器還有Jetty, Resin等。
為啥叫容器呢?
因為在軟體領域,這種管理整體要處理事物的生命週期的,都叫容器。 這裡的Tomcat負責整個Servlet的生命週期(LifeCycle),包含什麼時候建立Servlet,什麼時候初始化內部的一些資源,請求處理的時候執行什麼方法,什麼時候銷毀等。就像一個大家長一樣。所以,你會常聽到Spring的Ioc是通過Ioc容器實現的,因為它也是要管理整個Spring Bean的生命週期的呀。
那回過頭來看,Apache是幹嘛的呢?
像Apache這樣的,也有一類稱呼,叫做Web伺服器(Web Server)。這類兄弟,他們只能處理HTTP協議,例如我們在請求HTML,圖片等這些靜態資源的時候,可以通過Web伺服器來完成。但如果請求的是JSP,PHP等,這些時候,Web伺服器就力不從心,只能將請求轉給合適的人去處理,如果請求JSP或Servlet,那這個合適的人就是上面的Web容器。類似的Web伺服器有Apache, IIS, Nginx等。
所以,總結下,兩者的區別就是Tomcat不僅可以用於處理動態資源,處理Servlet、JSP,也能處理靜態資源,而Apache只能處理靜態資源。這個面試題的變種是Web Container和Web Server有什麼區別,我相信你已經知道答案了。
這個時候,你一定會說,那Tomcat這小子能都幹了,還要Apache幹嘛呢?
哎,這小子當時學的挺多,也都挺好,但處理靜態資源這事,沒學特別精。就像說裁縫可能也自己會做飯,但總歸不如廚師專業。
所以處理靜態資源的時候,可以在Tomcat前面配置一個Apache這類的Web Server,不僅可以高效處理靜態資源,還可以把這些常用的靜態資源緩衝起來,甚至還能完成負載平衡的目的(當然,這還需要後面Web Container做叢集)。
歡迎關注。