本文將從最基礎的http協議開始講起,介紹如何徒手搭建web應用,內容如果比較多的話,後面會分成多篇逐步介紹。
web應用被稱之為b/s架構,與其對應的的是c/s架構。這裡面的b是browser(瀏覽器),c是client(客戶端),s是server(伺服器)。客戶端需要直接安裝在訪問終端上,不同訪問終端(主要指不同的作業系統)需要提供不同的安裝包,這增加了軟體投產成本,換言之也就是軟體可移植性差。b/s架構則相對簡單,只要訪問終端安裝了瀏覽器就可以使用。現在的體系架構下,瀏覽器已經是作業系統的標配元件,所以不需要應用開發商額外做什麼適配工作。這就是為什麼我們認為b/s架構的應用可移植性比c/s架構強的原因。
b/s架構下,b和s之間的通訊是通過http協議進行的。http協議是網路協議的標準組成部分,底層基於tcp協議實現。http協議通俗理解有點類似於我們的日常對話,你問我答的形式。由b端發起詢問,s端給出答案,回答的內容則是標準的位元組流。瀏覽器在獲取到位元組流資料後,則根據協議的相關定義開始進行解析。其或者將內容渲染成乙個html的頁面,或者將其轉換成乙個檔案,或者執行一段指令碼……
http協議不像平時我們使用的軟體那樣看得見摸得著,它是網際網路的底層協議,雖然在網際網路的世界裡無處不在,但卻像空氣一樣無法感知。為了直觀了解http協議,我們需要使用一些輔助的工具來幫助我們看到它。抓包工具就是我們所需要的輔助工具,比如wireshark。下圖是訪問www.sina.com.cn的時候的http請求的截圖:
請求www.sian.com.cn
www.sian.com.cn的響應
上面兩張圖中的hypertext transfer protocol就是我們常說的http協議,直譯過來是超文字傳輸協議的意思。稱其為超文字的原因,大概是制定該協議的人覺得這個協議能做的事情遠遠不止僅是文字傳輸那麼簡單。
hypertext transfer protocol下面,也就是我們俗稱的http報文頭了。比如host指明了訪問的伺服器的網域名稱、user-agent給出了瀏覽器的相關資訊、accept給出了瀏覽器可以解析的檔案格式清單(要求伺服器必須按照當中的某一種格式返回)……
get / http/1.1這一行中給出了http協議的方法,方法其實也可以簡單翻譯成動作。get的意思是取,還有post是提交……http協議支援的方法有如下,一般用的最多的就是get和post了。下表給出了http協議定義的所有方法:
方法工作
get獲取指定資源
post
提交指定資源
head
返回資訊只有報文頭
put替換指定資源
delete
刪除指定資源
connect
建立鏈結
options
設定引數
trace
環迴測試
path
修改資源資訊
get後面緊跟的/是相對路徑,/表示根路徑,一般的web應用會配置歡迎頁面,比如index.html、index.jsp……如果get給出的路徑是/,則會返回/index.html或者/index.jsp的內容。
http/1.1則是http協議的版本號了,表示使用1.1版本的http協議。
對於web應用的服務端來說,主要就是需要解析瀏覽器提交過來的http協議內容,並生成對應的http響應。
servlet則是web應用處理上述過程的標準。它將http協議的請求抽象成servletrequest,http響應則抽象成servletresponse物件。
public inte***ce servlet
上面這段**是servlet介面的定義,其中的service
方法是處理http請求的核心方法。方法的引數中servletrequest
是http的請求,servletresponse
是http的響應。servlet的功能就是根據servletrequest
的資訊,生成對應的servletresponse
。
public inte***ce servletrequest
servletrequest中有很多方法,上面擷取了部分方法,主要是想說明servletrequest物件可以獲取到http協議中傳輸的所有內容。
public inte***ce servletresponse
上面這段是servletresponse的部分方法,不做贅述。值得注意的是,servletrequest中有乙個getreader
方法,而servletresponse中有乙個getwriter
方法。因為request是客戶端提交的請求,伺服器需要去讀它,而response是伺服器端給出的響應,伺服器需要去寫它。
下面需要簡單介紹下乙個web工程的目錄結構,而後就可以開始徒手構建乙個簡單的web應用了,等下篇再繼續。
http協議是基礎,抓包工具可以多用用。^_^
從零學習搭建blog 一 web伺服器
不幹正事的我決定用實驗室伺服器搭建乙個blog。寫個blog,記錄一下學習過程。環境 system ubuntu 16.04.4 lts gnu linux 4.13.0 38 generic x86 64 配置過程 系統安裝跳過,圖省力選擇了桌面版,server版安裝時會出現cd rom umou...
從零搭建 Spring Boot 後端專案(一)
簡介 這一小節主要是初始化專案,以及建立好相應的目錄結構步驟 接下來新建如下的 目錄,和相關的配置檔案,目的在於規範我們的專案結構,之後的操作都將依賴此結構 層結構 資源目錄結構 靜態資源目錄 resources static 檢視模板目錄 resources templates mybatis配置...
vue 從零搭建專案
本地開發需要哪些工具 node.js 4.x,6.x preferred 以及npm包管理器。可以使用國內 的cnpm webpack前端構建工具,將vue 模板編譯打包處理的工具 webpack是當下最熱門的前端資源模組化管理和打包工具,它可以將很多鬆散的模組按照以來以及一定的規則打包成符合生產環...