Web伺服器與Web框架

2021-09-26 09:17:02 字數 1803 閱讀 9408

http的工作流程

http服務端監聽埠,等待來自客戶端的請求

http客戶端與http伺服器建立tcp連線

http客戶端發起http請求

http服務端響應請求

關閉http連線

web伺服器的作用

上面的例子中與瀏覽器進行互動的http伺服器就是web伺服器。而web伺服器的主要工作也就是響應客戶端(比如瀏覽器)的請求。概括地說,web伺服器是可以向發出請求的瀏覽器提供文件(可以是乙個html網頁、檔案等等)的程式。

雖然說web伺服器的主要工作就是響應客戶端的請求。但是實際中的 web 伺服器遠遠比上面示例的複雜的多,因為要考慮的因素實在是太多了,比如:

常用的web伺服器

apache、nginx、tomcat、jboss、iis等

瀏覽器請求的資源有兩種:靜態資源和動態資源。靜態資源是指內容不會發生改變的資源,如設計好了的css和html、jpg、img等。靜態資源一般直接存放在web伺服器內,響應時直接從伺服器中取出返回給客戶端,並由客戶端解析渲染。

在請求動態資源時,伺服器需要依靠設計好的程式(即web程式)中進行響應。比如搜尋關鍵字a,web伺服器會將請求送到web程式中,web程式在資料庫中查詢到需要的資料並動態的生成一些html內容(以展示所查詢的資料),再將生成的資源送回web伺服器,經由伺服器傳送給客戶端

最早採用cgi(common gateway inte***ce)技術來實現,cgi使得伺服器可以呼叫外部程式,可以將使用者的html請求輸入給外部程式,並將結果返回到html頁面上。但這種方式速度較慢,只適用於小型靜態編譯的c程式。乙個尚可,如果有一組這樣的程式則會難以管理。因此在這個基礎上發展出了物件導向的mvc框架

可以了解一下web應用框架的演變

早期開發站點確做了許多重複性勞動,後來為了減少重複,避免寫出龐雜,混亂的**,人們將 web 開發的關鍵性過程提取出來,開發出了各種 web 框架。有了框架,就可以專注於編寫清晰、易維護的**,無需關心資料庫連線之類的重複性工作。

使用者輸入 url,客戶端傳送請求,控制器(controller)首先會拿到請求,然後用模型(models)從資料庫取出所有需要的資料,進行必要的處理,將處理後的結果傳送給檢視(view),檢視利用獲取到的資料,進行渲染生成 html response返回給客戶端。

常用的web框架

django、flask、nodejs(express)

//1.載入http

//2.建立乙個web伺服器

;//3.監聽80埠

server.

listen(80

);//4.響應客戶端請求

server.on(

'request'

,(request, response)

=>

)

僅利用nodejs寫出來的伺服器,是完全由我們自己定製的,因此如果這個伺服器程式中有任何潛在的bug都是可以被人利用的。為了解決這個問題,有的人會在nodejs前加一層apache或者nginx作為nodejs伺服器的介面,即反向** 參考

web伺服器 簡單web伺服器實現

三次握手 一般情況下是瀏覽器先傳送請求資料,c s ack 應答 三次握手成功後,才開始進行通訊資料的收發。四次揮手 一般情況下是客戶端先關閉,給瀏覽器傳送關閉資訊。如果瀏覽器傳送了關閉資訊,但是伺服器沒有回過去,較慢 那麼瀏覽器一直發是不是就會有問題?所以會等待 2msl的時間。一般為2 5分鐘。...

web容器與web伺服器的區別

web容器只能來進行靜態網頁之間的交往,但是當需要顯示jsp和servlet的時候要用到web伺服器,即 一般的情況下web容器和web伺服器在乙個軟體 tomcat 上就能體現出來。web伺服器 tomcat 和應用伺服器 jboss 之間的區別,web伺服器主要用在顯示層 jsp和servet ...

web伺服器 併發web伺服器實現 epoll

在linux的網路程式設計中,很長的時間都在使用select來做事件觸發。在linux新的核心中,有了一種替換它的機制,就是epoll。epoll 是當今 linux 系統採用的方式,一般伺服器都是用 epoll 來實現的。epoll 是一種方案,這種方案不使用多程序多執行緒多協程,而是使用單程序單...