http協議之response響應詳解
1,http響應
HTTP/1.1 200 OK --響應行
Server: Apache-Coyote/1.1 --多個響應頭
Content-Length: 51
Date: Sun, 28 Dec 2014 01:51:16 GMT
--一個空行
this is first servlet!!Sun Dec 28 09:51:16 CST 2014 --實體內容(使用者直接看到的內容)
一,響應行
HTTP/1.1 http協議版本資訊
狀態碼:伺服器對於請求處理的結果
其中常用的狀態碼的含義:
200: 表示請求處理完成。
302: 表示請求需要進一步細化。通常該狀態碼和location響應頭結合使用。
404: 表示客戶端錯誤,找不到資源。
500: 表示伺服器錯誤。
其中不常用的也在此告訴大家:
|"100" ; 10.1.1節: 繼續
|"101" ; 10.1.2節: 轉換協議
|"200" ; 10.2.1節: OK
|"201" ; 10.2.2節: 已建立
|"202" ; 10.2.3節: 接受
|"203" ; 10.2.4節: 非權威資訊
|"204" ; 10.2.5節: 無內容
|"205" ; 10.2.6節: 重置內容
|"206" ; 10.2.7節: 部分內容
|"300" ; 10.3.1節: 多個選擇
|"301" ; 10.3.2節: 永久移動
|"302" ; 10.3.3節: 發現
|"303" ; 10.3.4節: 見其它
|"304" ; 10.3.5節: 沒有被改變
|"305" ; 10.3.6節: 使用代理
|"307" ; 10.3.8節 臨時重發
|"400" ; 10.4.1節: 壞請求
|"401" ; 10.4.2節: 未授權的
|"402" ; 10.4.3節: 必要的支付
|"403" ; 10.4.4節: 禁用
|"404" ; 10.4.5節: 沒有找到
|"405" ; 10.4.6節: 方式不被允許
|"406" ; 10.4.7節: 不接受的
|"407" ; 10.4.8節: 需要代理驗證
|"408" ; 10.4.9節: 請求超時
|"409" ; 10.4.10節; 衝突
|"410" ; 10.4.11節: 不存在
|"411" ; 10.4.12節: 長度必需
|"412" ; 10.4.13節;先決條件失敗
|"413" ; 10.4.14節: 請求實體太大
|"414" ; 10.4.15節; 請求URI太大
|"415" ; 10.4.16節: 不被支援的媒體型別
|"416" ; 10.4.17節: 請求的範圍不滿足
|"417" ; 10.4.18節: 期望失敗
|"500" ; 10.5.1節: 伺服器內部錯誤
|"501" ; 10.5.2節: 不能實現
|"502" ; 10.5.3節: 壞閘道器
|"503" ; 10.5.4節: 服務不能獲得
|"504" ; 10.5.5節: 閘道器超時
|"505" ; 10.5.6節: HTTP版本不支援
二,響應頭:
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:51GMT --伺服器資源最後修改時間
Refresh: 1;url=http://www.it315.org --定時重新整理或每隔n秒跳轉頁面
Content-Disposition: attachment; filename=aaa.zip --告訴瀏覽器以下載方式開啟資源
Transfer-Encoding: chunked
Set-Cookie:SS=Q0=5Lb_nQ; path=/search --伺服器傳送給瀏覽器的cookie資訊
Expires:-1 --建議瀏覽器不使用快取
Cache-Control:no-cache
Pragma:no-cache
Connection: close/Keep-Alive --伺服器和瀏覽器連線狀態。close:關閉連線。keep-alive:保持連線。
Date: Tue, 11 Jul 2000 18:23:51 GMT --響應傳送的時間
三,響應實體由後臺指定內容發出。
HttpServletResponse物件用於設定響應資訊。
常用方法:
響應行:
response.setStatus(); 設定狀態碼
響應頭:
response.setHeader(name,value); 設定響應頭
實體內容
response.getWriter().writer() 以字元格式傳送實體內容
response.getOutputStream().writer() 以位元組格式傳送實體內容
修改響應資料的方法。
package zdh.cm.response; /** * 修改響應資料 */ import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseDemo1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1)tomcat伺服器提供了一個HttpServletResponse物件,用於給開發者修改響應資料 //2)通過service方法把response物件傳入servlet中 //3)通過response物件修改響應資料 //修改響應資料 //response.setStatus(404);//設定狀態碼 //response.sendError(404);//獲取404+404錯誤頁面 //修改響應頭 response.setHeader("Server", "zdh"); //修改實體內容 //response.getWriter().write("this is entry!");//插入字元流 response.getOutputStream().write("this is byte entry!".getBytes());//插入位元組流, } //4)tomcat伺服器把response物件轉換成響應格式的字串,傳送給瀏覽器 }