1、首先簡(jiǎn)單介紹一下http
請(qǐng)求報(bào)文和響應(yīng)報(bào)文都是四個(gè)部分組成:請(qǐng)求行豺裆、請(qǐng)求頭、空行号显、消息主體臭猜。
Host:請(qǐng)求的主機(jī)名,允許多個(gè)域名同處一個(gè)IP地址押蚤,即虛擬主機(jī)
Referer:上一請(qǐng)求節(jié)點(diǎn)路徑名
User-Agent:發(fā)送請(qǐng)求的瀏覽器類型蔑歌、操作系統(tǒng)等信息
Accept:客戶端可識(shí)別的內(nèi)容類型列表,用于指定客戶端接收那些類型的信息
Accept-Encoding:客戶端可識(shí)別的數(shù)據(jù)編碼
Accept-Language:表示瀏覽器所支持的語(yǔ)言類型
Connection:允許客戶端和服務(wù)器指定與請(qǐng)求/響應(yīng)連接有關(guān)的選項(xiàng)揽碘,例如這是為Keep-Alive則表示保持連接次屠。
Transfer-Encoding:告知接收端為了保證報(bào)文的可靠傳輸,對(duì)報(bào)文采用了什么編碼方式雳刺。
Content-Type:發(fā)送給接收者的實(shí)體正文的媒體類型
Content-Lenght:實(shí)體正文的長(zhǎng)度
Content-Language:描述資源所用的自然語(yǔ)言劫灶,沒(méi)有設(shè)置則該選項(xiàng)則認(rèn)為實(shí)體內(nèi)容將提供給所有的語(yǔ)言閱讀
Content-Encoding:實(shí)體報(bào)頭被用作媒體類型的修飾符,它的值指示了已經(jīng)被應(yīng)用到實(shí)體正文的附加內(nèi)容的編碼掖桦,因而要獲得Content-Type報(bào)頭域中所引用的媒體類型本昏,必須采用相應(yīng)的解碼機(jī)制。
2枪汪、http請(qǐng)求到服務(wù)端涌穆,經(jīng)過(guò)容器處理,我們知道最后是交由servlet的service方法處理
httpServletRequest繼承ServletRequest接口料饥,實(shí)現(xiàn)了對(duì)請(qǐng)求報(bào)文的包裝
同理蒲犬,httpServletResponse繼承了ServletResponse,對(duì)響應(yīng)報(bào)文做了包裝
3岸啡、一般開(kāi)發(fā)過(guò)程中原叮,我們常使用spring注解進(jìn)行配置,如
通過(guò)查看 @RequestMapping注解,內(nèi)含路徑配置信息奋隶。
在spring容器初始化對(duì)RequestMapping注解進(jìn)行掃描擂送,之后包裝成RequestMappingInfo
之后通過(guò)registerHandlerMethod方法注冊(cè)進(jìn)分發(fā)器。當(dāng)請(qǐng)求達(dá)到時(shí)唯欣,去urlMap中匹配url并獲取mapping實(shí)例嘹吨,再去handlerMethods獲取匹配HandlerMethod實(shí)例。
參考: