1. 程式人生 > >Web伺服器、Apache、Tomcat等概念的理解

Web伺服器、Apache、Tomcat等概念的理解

以一次JSP請求響應為例,講解伺服器,Apache、Tomcat之間的關係。

  • 帶著這樣一個概念去看:Apache與Apache Tomcat(簡稱Tomcat)都是可以獨立執行的伺服器。你平時見到的apache-tomcat-7.0.72實際上只是Tomcat伺服器。此處整合了Apache和Apache Tomcat。Apache用來處理靜態資源,減少Tomcat的服務開銷。

先來個熱身

一個請求到發出到響應返回的全過程
HTTP請求到響應

  • 首先,客戶端發出一個請求
    看到瀏覽器上的URL地址了麼,那就是你的請求的主要內容。請求以一串文字的形式傳送,例如http://www.baidu.com代表按照http協議獲取www.baidu.com

    這個資源(關於資源的概念請參見URI和URL)。當然實際上你的請求不是這麼寫的,這麼寫只是為了讓你有一個直觀的感受,具體請參見HTTP協議

  • 第二步,伺服器(硬體)收到這個請求,也就是那一串文字。
    伺服器的概念之一就是一臺電腦。你提交的請求會被髮送到這臺電腦上。
    顯然啊,伺服器就是一臺電腦,沒有軟體的話它是無法識別請求並做出響應的

  • 第三步,伺服器(硬體)將請求交付給伺服器(軟體,例如Apache就是一個常用的伺服器軟體)。
    假設請求的是一個動態頁面(動態頁面就是需要動態生成的頁面,例如QQ空間,每人每時每刻都不同,需要動態生成),在本例中是JSP,那麼apache則會將請求繼續轉給下一個部分

  • 第四步,伺服器(軟體)將請求交給Tomcat
    因為Apache本身不提供動態頁面訪問能力的,所以對jsp的支援要靠其他的東西來實現,這個東西類似於外掛(但嚴格來說Tomcat並不是Apache的一個外掛)。在本例中,這個外掛就是Tomcat。要注意:Tomcat本身也是可以單獨作為伺服器來執行的。Tomcat 有時也被稱為Apache Tomcat,這個Apache指的並不是Apache伺服器,而是一個“商標”,因為Tomcat是屬於Apache這個專案的
    Tomcat是一個執行環境,或者叫容器。Tomcat負責例項化jsp並且處理請求(通俗的講就是“執行”jsp,搞到對應的響應資訊),並且返回一個響應到apache,apache則繼續將響應返回到客戶端。

  • 至此,一個響應完成

熱身,again

以上內容說白了就是輸入和輸出,給定一個輸入,產生一個輸出。根據這個,我們來模擬下web的進化史。

  • 最初,人們的需求很低,只要求能夠有靜態頁面就好了。
    舉個例子,例如要做一個公告網頁,上面公示每天的重要通知。怎麼做呢?好辦啊!
    我們用一個簡化的輸入輸出來表示,只要你輸入“公告”,我就輸出“2017-3-26 XXX寫下了第一篇關於幾個概念的理解的部落格”,不要想得太多,就是一個標準輸入,標準輸入。
    用Java寫很簡單,寫成一個控制檯標準輸入輸出就好了。用偽程式碼表示如下,
if(輸入=“公告”) then 
    print2017-3-26 XXX寫下了一篇關於幾個概念的理解的部落格”

這就是滿足了需求,就這麼簡單,然後將他改成網路IO就好了。

  • 要是公告變了怎麼辦?好辦,將print “2017-3-26 XXX寫下了第一篇關於幾個概念的理解的部落格”該掉就好了。也就是說,只要資訊變動,你就要重寫訊息源,改動原始碼。很蠢是吧。這還好說,要是生成的像QQ空間那樣的頁面怎麼搞?好辦!套模板啊。一個頁面變動的只是少數,有很大一部分是不變的。想填空題一樣,將空填起來就好了,像這樣
date = "2017-3-26"
name = "一隻準程式設計師"
about = "幾個概念的理解"
if(輸入=“公告”) then 
    print date + name + “寫下了一篇關於" + about + "的部落格”

這幾個變數完全可以從資料庫中自動獲取。也就是說,只要更新資料庫,然後頁面就會自動更新了。雖然還是很蠢,但是動態頁面就是這個原理。

(你寫JSP不就是填空嗎,在模板上填空。${name}這樣的不就是“空”嗎)

  • 總結下,Apache負責請求轉發&&靜態頁面處理,Tomcat來處理動態頁面解析

現在,進入正題

概念闡述

藉助以上過程和概念,來談一談伺服器、Apache、Tomcat之間的關係

  • 伺服器
    經過以上過程,這個概念很熟了吧,有兩個主要概念
    • 硬體:一臺電腦。這臺電腦上執行著至少一個伺服器軟體,能夠處理請求
    • 軟體:一個提供網頁的伺服器程式。處理請求並返回響應
  • Apache
    Apache就是一個伺服器(軟體),提供了靜態頁面的訪問能力。它配置上外掛(模組)後可以以各種語言實現動態頁面。(但是一定要注意Tomcat並不是Apache的外掛)
  • Tomcat
    Apache Tomcat(即平時所說的Tomcat),也是一個伺服器。在這個案例中,Tomcat充當了一個外掛的作用,這個外掛是針對於Java的,或者說是jsp/servlet的。它是一個容器。何為容器?容器麼,就是容器。容的是什麼,JSP、Servlet。容器管理jsp、servlet的宣告週期,包括建立,執行,銷燬。它是一個jsp、servlet的執行環境。通俗點說,請求發過來,Tomcat負責執行JSP、Servlet,並返回結果。關於生命週期這東西,在此不做闡述。也就是說,沒有Tomcat,Apache是不認你JSP的。懂設計模式的可以想想了。。。當然,整個過程都有設計模式的影子

Apache與Tomcat比較聯絡

  • apache支援靜態頁,tomcat支援動態的,比如servlet等。

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

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

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

  • 共同點

    1. 兩者都是apache組織開發的
    2. 兩者都有HTTP服務的功能
    3. 兩者都是免費的
  • 不同點:
    1. Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等)
    2. Tomcat是Apache組織在符合J2EE的JSP、Servlet標準下開發的一個JSP伺服器

第一次寫部落格,如有錯誤還請不吝賜教

OK, that’s all

相關推薦

web伺服器Apachetomcat 關係的理解

以一次JSP請求響應為例,講解伺服器,Apache、Tomcat之間的關係。 帶著這樣一個概念去看:Apache與Apache Tomcat(簡稱Tomcat)都是可以獨立執行的伺服器。你平時見到的apache-tomcat-7.0.72實際上只是Tomcat伺服器。此處整

公鑰,私鑰和公鑰加密私鑰解密公鑰數字簽名私鑰驗證概念理解 - 超簡單

公鑰加密(public key)和 私鑰解密(private key) 假設一下,我找了兩個數字,一個是1,一個是2。我喜歡2這個數字,就保留起來,不告訴你們(私鑰),然後我告訴大家,1是我的公鑰。 我有一個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不

Web伺服器ApacheTomcat概念理解

以一次JSP請求響應為例,講解伺服器,Apache、Tomcat之間的關係。 帶著這樣一個概念去看:Apache與Apache Tomcat(簡稱Tomcat)都是可以獨立執行的伺服器。你平時見到的apache-tomcat-7.0.72實際上只是Tomca

一文總結應用WebHTTP伺服器ApacheNginx,TomcatIISJBossGlassfish區別

一個學習的總結,或者說是彙總,有些連結給出的觀點過時,已按照自己的理解經過修改編輯; 應用、Web、HTTP伺服器 這篇文章講述典型的Web伺服器的工作原理。 Web伺服器和應用伺服器有什麼區別?EAR和WAR部署包之間的不同? 參考stackove

web伺服器&應用伺服器ApacheTomcatnginx) Apache HTTP Server,我們常常稱之為httpd,即常說的Apache。它是目前最流行的web伺服器

現在也沒有特別搞懂他們之間的區別,只是有個大概的理解,可能會有不對的地方,隨時更新吧。 前提得搞明白代理伺服器和反向代理伺服器的區別。 一、web伺服器 Apache HTTP Server,我們常常稱之為httpd,即常說的Apache。它是目前最流行的web伺服器。 Apache

常見的Web伺服器應用伺服器ApachetomcatjettyNginx)簡介及優缺點總結

介紹各個伺服器前,有必要講一下Apache與Tomcat關係,伺服器間的優缺點也是相比於apache與tomcat而言。 Apache是web伺服器(靜態解析,如HTML),tomcat是java應用伺服器(動態解析,如JSP)Tomcat只是一個servlet(jsp也翻譯成servlet)容

進程和線程內核空間概念

部分 .html 更新 打字 維護 由於 根據 地址 資源 用戶空間與內核空間 現在操作系統都是采用虛擬存儲器,那麽對32位操作系統而言,它的尋址空間(虛擬存儲空間)為4G(2的32次方)。操作系統的核心是內核,獨立於普通的應用程序,可以訪問受保護的內存空間,也有訪問底層

vintage遷移率滾動率入催率概念——看完你就懂了(轉載)

聯網 edit ews 問題 目的 content 時間 客戶 clear 隨著互聯網金融的發展,對數據分析的需求越來越大。數據分析的目的其實是為了找到風險和收益的平衡點。高收益伴隨著高風險,而低風險的回報又如同雞肋。所以,太高的風險,太低的收益都不行

大資料培訓之核心知識點HbaseHiveSpark和MapReduce的概念理解特點及機制

今天,上海尚學堂大資料培訓班畢業的一位學生去參加易普軟體公司面試,應聘的職位是大資料開發。面試官問了他10個問題,主要集中在Hbase、Spark、Hive和MapReduce上,基礎概念、特點、應用場景等問得多。看來,還是非常注重基礎的牢固。整個大資料開發技術,這幾個技術知識點佔了很大一部分。那本

方程AX=b的解的討論(特解通解零空間向量概念

求矩陣形式線代方程組,討論AX=b的解是最基本的一項內容。 AX=b的解 = 特解 + 矩陣零空間向量 特解:AX=b的自由變數都=0時x的解。 矩陣零空間向量:AX=0時x的解空間。矩陣零空間向量又牽扯到了零空間的概念,就不贅述了。我們可以簡單記為: X = X*

Android Thread Task Looper Handler 和 Message 概念(草稿版,待寫)

(待寫文章,點開的直接關閉吧)     參考 https://huaonline.iteye.com/blog/1319627               &nb

虛擬化虛擬機器概念理解

虛擬化 定義:是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時執行多個邏輯計算機,每個邏輯計算機可執行不同的作業系統,並且應用程式都可以在相互獨立的空間內執行而不受影響,從而顯著提高計算機的工作效率。 軟體: 完全虛擬:VMwar

Linux 安裝 mysqlapachephptomcatnginx

Mysql    1、檢查安裝: 因為mysql資料庫在Linux上實在是太流行了,所以目前下載的主流Linux系統版本基本上都集成了mysql資料庫在裡面,我們可以通過如下命令來檢視我們的作業系統上是否已經安裝了mysql資料庫 [[email protected

迴歸測試白盒測試黑盒測試概念

迴歸測試 迴歸測試是指修改了舊程式碼後,重新進行測試以確認修改沒有引入新的錯誤或導致其他程式碼產生錯誤。自動迴歸測試將大幅降低系統測試、維護升級等階段的成本。 迴歸測試包括兩部分:函式本身的測試、其他程式碼的測試。在 對被修改的函式重新測試。如果函式的設計功能沒有變化,直接執行函式測試就可以了。如果修改了設計

tomcatapachenginx之間的關係

參考資料: 簡要說明: tomcat通常用作servlet容器,而apache和nginx通常用作http server tomcat通過servlet動態生成內容並返回給客戶端,而apach

(Windows)Web伺服器架設(Apache+Tomcat+php+JSP)

一、軟體準備: 1、  Apache 2.2.11 2、  Tomcat 6.0.20 3、  mod_jk-1.2.28-httpd-2.2.3.so(Tomcat聯結器) 4、  JDK-6u14-windows-i586.exe或者JRE-6u11-windows-

wampServer(windowsapachemysqlphp)

list mysql 配置 allow error del 默認 virtual listen wampServer(windows/apche/mysql/php)集成環境 在線狀態:區域網內可以訪問 離線狀態:本地設備可以訪問 自擬定網站根目錄: Apache -- h

筆記10 LAMP架構(MySQLmariadbApachePHP5PHP7

架構 lamp MySQL安裝MySQL的幾個常用安裝包:rpm、源碼、二進制免編譯 把下載的包保存在這個目錄裏:cd /usr/local/src 所以要先進入這個目錄下第一步,下載源碼包: wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.

nginxApacheLighttpd啟用HSTS

sch 存在 tar 頭部 nal 自己 輸入 -a rtu http://www.ttlsa.com/web/hsts-for-nginx-apache-lighttpd/ 302跳轉通常情況下,我們將用戶的 HTTP 請求 302 跳轉到 HTTPS,這會存在兩個問

Centos6.8下搭建LAMP(LinuxApacheMySQLPHP)環境

Centos6.8下搭建LAMP(Linux、Apache、MySQL、PHP)環境 一.安裝Apache服務 1.       命令如下:sudo yum install httpd –y 注:採用該方法安裝Apac