簡述
我們在servlet的service方法中有兩個參數,分別是ServletRequest和ServletResponse,如果想掌握這兩個參數,我們必須對請求消息和相應消息有個深入的理解。
請求消息
請求消息本質上就是客戶端告訴服務器的一些信息。
請求消息由請求行、請求頭、請求空行、請求體組成。
像這樣就是一個完整的請求消息
POST /login.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
請求行
請求方式 請求url 請求協議/版本
例: GET /login.html HTTP/1.1
* 請求方式:
* HTTP協議有7中請求方式,常用的有2種
* GET:
1. 請求參數在請求行中,在url后。
2. 請求的url長度有限制的
3. 不太安全
* POST:
1. 請求參數在請求體中
2. 請求的url長度沒有限制的
3. 相對安全
如果面試問你,get請求和post請求有什么區別,那么請看超人:https://www.cnblogs.com/logsharing/p/8448446.html
請求頭
格式:請求頭名稱: 請求頭值
例: Host: localhost
注意值有多個的情況下值用逗號隔開
例如這樣就是一個整個的請求頭
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
常見的請求頭:
1.User-Agent:瀏覽器告訴服務器,我訪問你使用的瀏覽器版本信息,可以在服務器端獲取該頭的信息,解決瀏覽器的兼容性問題
2.Accept: 我作為瀏覽器可以解析哪些文件
3.Referer:http://localhost/login.html : 告訴服務器,我(當前請求)從哪里來?可以防盜鏈
什么是盜鏈呢?意思是一些盜版網站用了別人網站的鏈接
同時Referer頭可以做一個來源統計的操作。
4.Connection: 連接是否可以被復用
請求空行
請求空行就是一個空行,意思就是告訴服務器從下一行開始就沒有請求頭了
請求體
注意get請求是沒有請求體的,只有post請求有請求體
請求體是以鍵值對的方式傳輸的
post的請求體就是以鍵值對