早上占坑。
web伺服器做了什麼?
我們平時将檔案放到C槽、D盤,正常情況下,别人是不能直接通過網絡通路我們的檔案的,那浏覽器怎麼通過網絡通路我們的HTML檔案呢,
必須由軟體通過socket+協定的方式對檔案進行網絡傳輸,就像你用QQ向别人發檔案一樣,QQ程式讀取本地檔案,然後通過他們指定的通信端口,通信方式,将本地檔案發送給其他人。
web伺服器就是這樣一個軟體,它通過監聽指定的檔案夾下的檔案,當使用者通過浏覽器向web伺服器提出通路請求,web伺服器解析請求的url位址,然後将url位址映射的檔案路徑下的檔案傳回給浏覽器,浏覽器得到HTML格式的檔案,然後解析,渲染,就看到了我們看到的頁面。
這就是普通web浏覽器所做的工作,,,就是将url與檔案路徑映射,解析通路url字元串,将對應的檔案傳回給請求者。
自己也可以實作一個簡易的web伺服器,将web伺服器、浏覽器分别抽象成服務端程式和用戶端程式,兩個程式可以通過socket進行通信,用戶端向web伺服器發送url格式字元串,
伺服器程式socket收到url字元串後,根據url位址将字元串解析為本地檔案位址,然後将本地檔案通過資料流發送給用戶端。這就是一個簡單的web伺服器程式和它的工作過程了。
當然,web伺服器的任務不僅于此,它與浏覽器用戶端通過HTTP協定進行溝通,這些是溝通細節。
為什麼不在程式中直接使用socket接收浏覽器請求呢,這樣不是直接運作開發的程式就行,不用再啟動另外的伺服器程式了。
當然可以通過在開發程式中直接編寫socket通信機制,然後偵聽端口和資訊,解析通路的url字元串,傳回html檔案,全部自己處理,這個是可行的,沒有技術障礙,
但是web伺服器做的工作比較通用,它可以管理指定檔案夾下的檔案,提供通路服務,解析url位址,接受HTTP協定,發送檔案,這些通用的功能隻需要啟動web伺服器軟體,配置映射檔案夾路徑就可以,為什麼還要自己開發,重複造輪子呢。web伺服器程式的開發與我們的業務邏輯完全無關,沒有任何耦合,是以使用成熟的web伺服器軟體能讓我們把全部精力聚焦在業務功能的開發上,并且提供了相對完整、性能、安全性、穩定性更加優秀的體驗,是以,我們選擇用web伺服器幫我們管理。
那麼tomcat和剛剛說的web伺服器是一回事嗎,計算機軟體開發中的web伺服器一般隻負責管理靜态檔案,供外界遠端通路,tomcat是一個servlet容器,是一種可以管理動态開發程式的伺服器,它也包含了管理靜态檔案的web伺服器的功能。
tomcat配置網站映射的幾種方式,有三種:
1.待續
2.
3.
tomcat所謂的servlet容器做了什麼,它負責解析開發的動态網頁,通路資料庫,通路其它資源,總之它做的核心事件就是處理動态網頁将動态程式執行後的結果拼接成靜态網頁後,将靜态檔案交給web伺服器,web伺服器傳回給浏覽器。它做的就是解釋、拼接的作用。
tomcat伺服器通路分多層:tomcat啟動的時候先基于server.xml配置檔案啟動一個server,server裡面啟動service,service裡面啟動多個connector連接配接器,每個連接配接器都在等待浏覽器的連接配接,連接配接器本身不處理請求,而是将請求将給engines引擎去處理,engines收到請求解析要通路的host,然後将請求交給host,host解析使用者想通路哪個web應用,一個應用對應一個context,接下來就是web伺服器的事了。。。
待補充。。。。