http協議內容

codingcoge發表於2018-06-08

前言:

http協議: 對瀏覽器客戶端 和 伺服器端 之間資料傳輸的格式規範

http1.0:當前瀏覽器客戶端與伺服器端建立連線之後,  
只能傳送一次請求,一次請求之後連線關閉。
http1.1:當前瀏覽器客戶端與伺服器端建立連線之後,  
可以在一次連線中傳送多次請求。(基本都使用1.1)

常見的請求方式: GET 、 POST、 HEAD、 TRACE、 PUT、 CONNECT 、DELETE

常用的請求方式: GET 和 POST

表單提交:
        <form action="提交地址" method="GET/POST">    

        <form>

瀏覽器請求:

請求(瀏覽器-》伺服器)
GET /day09/hello HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

伺服器響應:

響應(伺服器-》瀏覽器)
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 24
Date: Fri, 30 Jan 2015 01:54:57 GMT

this is hello servlet!!!

Http請求:

三部分組成:請求行,請求頭,實體內容

GET /day09/hello HTTP/1.1               -請求行
Host: localhost:8080                    --請求頭(多個key-value物件)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
                                    --一個空行
name=eric&password=123456             --(可選)實體內容

請求行:

GET /day09/hello HTTP/1.1 –》 請求方式:URI地址:HHTP協議

請求頭:

Accept: text/html,image/*      -- 瀏覽器接受的資料型別
Accept-Charset: ISO-8859-1     -- 瀏覽器接受的編碼格式
Accept-Encoding: gzip,compress  --瀏覽器接受的資料壓縮格式
Accept-Language: en-us,zh-       --瀏覽器接受的語言
Host: www.it315.org:80          --(必須的)當前請求訪問的目標地址(主機:埠)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  --瀏覽器最後的快取時間
Referer: http://www.it315.org/index.jsp      -- 當前請求來自於哪裡
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  --瀏覽器型別
Cookie:name=eric                     -- 瀏覽器儲存的cookie資訊
Connection: close/Keep-Alive            -- 瀏覽器跟伺服器連線狀態。close: 連線關閉  keep-alive:儲存連線。
Date: Tue, 11 Jul 2000 18:23:51 GMT      -- 請求發出的時間

實體內容:

只有POST提交的引數會放到實體內容中

HttpServletRequest物件

後臺接受前臺HTTP請求封裝成物件。

那如何提取其中的資訊呢?

HttpServletRequest物件作用是用於獲取請求資料。

核心的API:
    請求行: 
        request.getMethod();   請求方式
        request.getRequetURI()   / request.getRequetURL()    
        請求資源
        request.getProtocol()   請求http協議版本
    請求頭:
        request.getHeader("名稱")   根據請求頭獲取請求值
        request.getHeaderNames()    獲取所有的請求頭名稱

    實體內容:
        request.getInputStream()   獲取實體內容資料


相關文章