一:HTTP協議總結
1. HTTP:超文本傳輸協議,定義了瀏覽器與服務器之間數據傳輸的格式;
2. HTTP協議組成:
1. 請求報文:請求行,請求頭,請求體;
1. 請求行:請求報文中的第一行數據,包括**請求方式**,**URL** ,**協議/版本** ;
2. 請求頭:以鍵值對的數據格式,給服務器傳輸數據。經常使用的請求頭:user-agent,cookie;
3. 請求體:get請求:沒有請求體;post請求:請求體傳遞請求參數;
2. 響應報文:響應行,響應頭,響應體; html
二:GET和POST請求的區別
GET請求:
請求行直接傳遞請求參數
將請求參數追加在URL後面,不安全。例如:form.html?username=jack&username=1234
URL長度限制GET請求方式的數據大小,不能夠傳輸數據量較大或者非文本數據
請求體裏面沒有內容
POST請求
請求參數以請求體形式發送給服務器,數據傳輸安全
請求數據能夠爲非文本數據,能夠傳輸數據量較大的數據
只有表單設置爲method=」post」纔是post請求.其餘的都是get請求
常見GET請求:地址欄直接訪問、、<img src=」」> 等 java
三:Request請求
1.獲取請求行信息
2.獲取請求頭信息
3.獲取請求體信息(*****)
4.Request的域對象
5.請求轉發
6.常見的狀態碼
四:Response響應
1.響應頭 瀏覽器
location安全
指定響應的路徑,須要與狀態碼302配合使用,完成跳轉。服務器
content-Typecookie
響應正文的類型(MIME類型)例如:text/html;charset=UTF-8post
content-dispositionurl
經過瀏覽器以附件形式解析正文,例如:attachment;filename=xx.zipspa
refreshorm
頁面刷新,例如:3;url=www.itcast.cn //三秒刷新頁面到www.itcast.cn
2.重定向
方法
說明
response.setStatus(302); response.setHeader("location", "/otherServlet");經過設置響應狀態碼和響應頭實現重定向
response.sendRedirect("/otherServlet");重定向的簡寫方式
3.轉發和重定向的區別
區別點
轉發
重定向
實現原理服務器內部瀏覽器執行
請求次數一次兩次
瀏覽器地址欄地址不變化變爲第二次請求的地址
可否共享request域可以共享不能共享
做用共享request域對象完成跳轉
4.響應體
方法
說明
ServletOutputStream getOutputStream()用於向瀏覽器輸出二進制數據。【字節流--文件下載】
java.io.PrintWriter getWriter()用於向瀏覽器輸出字符數據。【字符流--給瀏覽器響應數據】
五:解決亂碼
1.Request亂碼
request.setCharacterEncoding("UTF-8");
2.Response亂碼
response.setContentType("text/html;charset=utf-8");
3.ServletContext對象