Http協議

來源:互聯網
上載者:User

標籤:def   win   錯誤   org   com   用戶端   下載方式   一起   ima   

1 什麼是http協議

  http協議是對瀏覽器用戶端和伺服器端之間資料轉送的格式規範。

2 http協議內容

2.1 請求:(瀏覽器-->伺服器)

  請求方式最常用的有兩種:GET和POST兩種方式, 

表單提交:

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

<form>

  樣本如下:

GET方式

GET /day09/testMethod.html?name=eric&password=123456 HTTP/1.1Host: localhost:8080User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateReferer: http://localhost:8080/day09/testMethod.htmlConnection: keep-alive

POST方式

POST /day09/testMethod.html HTTP/1.1Host: localhost:8080User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateReferer: http://localhost:8080/day09/testMethod.htmlConnection: keep-alivename=eric&password=123456

GET和POST的區別

GET:

  1)地址欄(URI)會跟上參數資料。以?開頭,多個參數之間以&分割。

  2)GET提交參數資料有限制,不超過1KB。

  3)GET方式不適合提交敏感密碼。

  4)注意: 瀏覽器直接存取的請求,預設提交方式是GET方式

POST:

  1)參數不會跟著URI後面。參數而是跟在請求的實體內容中。沒有?開頭,多個參數之間以&分割。

  2)POST提交的參數資料沒有限制。

  3)POST方式提交敏感性資料。

2.2 要求標頭

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      -- 請求發出的時間

2.3 傳遞的請求參數擷取方式:

HttpServletRequest對象

HttpServletRequest對象作用是用於擷取請求資料。核心的API:請求行:request.getMethod();   請求方式request.getRequetURI()   / request.getRequetURL()   請求資源request.getProtocol()   請求http協議版本要求標頭:request.getHeader("名稱")   根據要求標頭擷取請求值request.getHeaderNames()    擷取所有的要求標頭名稱實體內容:request.getInputStream()   擷取實體內容資料

GET方式: 參數放在URI後面,擷取參數方法:request.getQueryString();

 

POST方式: 參數放在實體內容中,擷取參數方法:request.getInputStream();

問題:以上兩種不通用,而且擷取到的參數還需要進一步地解析。所以可以使用統一方便的擷取參數的方式。

擷取請求參數的核心API

request.getParameter("參數名");        根據參數名擷取參數值(注意,只能擷取一個值的參數)request.getParameterValue("參數名“);   根據參數名擷取參數值(可以擷取多個值的參數)
request.getParameterNames(); 擷取所有參數名稱列表,用Enumeration<String>接,是一個迭代類型

請求參數編碼問題:

修改POST方式參數編碼:request.setCharacterEncoding("utf-8");

修改GET方式參數編碼:手動解碼:String name = new String(name.getBytes("iso-8859-1"),"utf-8");

 

3 響應(伺服器-->瀏覽器)

HTTP/1.1 200 OK                --響應行Server: Apache-Coyote/1.1         --回應標頭(key-vaule)Content-Length: 24 Date: Fri, 30 Jan 2015 01:54:57 GMT                                   --一個空行this is hello servlet!!!                  --實體內容

常見的狀態:

200:表示請求處理完成並完美返回

302:表示請求需要進一步細化。
404:表示客戶訪問的資源找不到。

:500:表示伺服器的資源發送錯誤。(伺服器內部錯誤)

常見回應標頭:

 

Location: http://www.it315.org/index.jsp   -表示重新導向的地址,該頭和302的狀態代碼一起使用。Server:apache tomcat                 ---表示伺服器的類型Content-Encoding: gzip                 -- 表示伺服器發送給瀏覽器的資料壓縮類型Content-Length: 80                    --表示伺服器發送給瀏覽器的資料長度Content-Language: zh-cn               --表示伺服器支援的語言Content-Type: text/html; charset=GB2312   --表示伺服器發送給瀏覽器的資料類型及內容編碼Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT  --表示伺服器資源的最後修改時間Refresh: 1;url=http://www.it315.org     --表示定時重新整理Content-Disposition: attachment; filename=aaa.zip --表示告訴瀏覽器以下載方式開啟資源(下載檔案時用到)Transfer-Encoding: chunkedSet-Cookie:SS=Q0=5Lb_nQ; path=/search   --表示伺服器發送給瀏覽器的cookie資訊(會話管理用到)Expires: -1                           --表示通知瀏覽器不進行緩衝Cache-Control: no-cachePragma: no-cacheConnection: close/Keep-Alive           --表示伺服器和瀏覽器的串連狀態。close:關閉串連 keep-alive:儲存串連

 

HttpServletResponse對象

HttpServletResponse對象修改響應資訊:響應行: response.setStatus()  設定狀態代碼回應標頭: response.setHeader("name","value")  設定回應標頭實體內容:response.getWriter().writer();   發送字元實體內容
     response.getOutputStream().writer() 發送位元組實體內容

4 http協議版本

http1.0:當前瀏覽器用戶端與伺服器端建立串連之後,只能發送一次請求,一次請求之後串連關閉。

http1.1:當前瀏覽器用戶端與伺服器端建立串連之後,可以在一次串連中發送多次請求。(基本都使用1.1)。

5 URI與URL

URL:  統一資源定位器。如:http://localhost:8080/day09/test.html。只能定位互連網資源。是URI 的子集。

URI: 統一資源標記符。如:/test/hello。用於標記任何資源。可以是本地檔案系統,區域網路的資源(//192.168.14.10/myweb/index.html),可以是互連網。

執行個體在下一篇隨筆

 

Http協議

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: