1. 程式人生 > >http協議之response響應詳解

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物件轉換成響應格式的字串,傳送給瀏覽器
}