早上占坑。
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服務器的事了。。。
待補充。。。。