玩转Web之servlet(四)---B/S是如何使用http协议完成通信过程的
在上一篇文章中,我簡單的說了一下B/S架構的流程圖,關于瀏覽器和服務器之間的通信過程知識含糊的說了一下,在這篇文章中我再總結一下B/S架構里是如何利用http協議去完成通信的。
(一)通訊過程
? ? ?1:瀏覽器建立于Web服務器的連接---->2:瀏覽器將請求數據打包(即請求數據包),并發送到服務器--->3:服務器將處理結果打包(響應數據包),發給瀏覽器-->4:關閉連接
注意:每次請求都需要重新建立連接
(二):數據格式
請求數據包:1:請求行:請求方式+請求資源路徑+協議描述。例如:GET/image/http.png HTTP/1.1 ?即為從image目錄下請求http.png這個文件
? ? ? ? ? ? ? ? ? ? ? ? 2:消息頭:通過一些鍵值對,瀏覽器向服務器提供瀏覽器的類型和版本
? ? ? ? ? ? ? ? ? ? ? ? 3:實體內容:如果請求方式為post,會把請求參數添加到實體內容里面,如果是get請求會把請求參數添加到請求資源路徑的后面。
響應數據包:1:狀態行:協議描述+狀態行+狀態碼
? ? ? ? ? ? ? ? ? ? ? ? ?2:響應頭:服務器會返回給瀏覽器一些信息,包括編碼格式等
? ? ? ? ? ? ? ? ? ? ? ? 3:實體內容:返回的處理結果
(三)請求方式
常用的請求方式是get和post,只少目前我只使用這兩種方式
get請求: get請求會把請求內容添加到請求資源路徑后面,而因為請求資源路徑的長度就是瀏覽器地址欄最大允許字符數,所以get請求可提交的數據非常少,而且請求內容都 ? ? ? ? ? ? ? ? ? ? ?顯示在地址欄里,存在安全問題
? ? ? ? ? ? ? ? ? 那什么時候使用get請求呢?當直接在地址欄里輸入地址,或者使用超鏈接都是使用get請求,表單提交的默認提交方式也是get提交
post請求:post請求會把請求加到實體內容里,所以可以請求大量數據,同時不會顯示在地址欄里,所以相對安全。
? ? ? ? ? ? ? ? ? ?當設置表單的提交方式為post時,會使用post請求;在Ajax提交中,設置提交方式為post,也是使用post提交。
轉載于:https://www.cnblogs.com/oversea201405/p/3752171.html
總結
以上是生活随笔為你收集整理的玩转Web之servlet(四)---B/S是如何使用http协议完成通信过程的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS中js与objective-c的交
- 下一篇: 模板类的全特化、偏特化