1. 程式人生 > >Web高階三 HTTP&Response

Web高階三 HTTP&Response

第一章 HTTP響應報文詳解

HTTP協議: HTTP請求報文及HttpServletRequest物件。 HTTP響應報文及HttpServletResponse物件。 響應報文

1. HTTP響應報文

HTTP是基於請求和響應的協議,一次請求對應一次響應。請求和響應的資料格式都遵從HTTP的超文字傳輸協議。 與HTTP的請求一樣,HTTP響應的資料也分為3部分:響應行 ,響應頭 ,響應體 這3部分組成。所以,請求是通過瀏覽器將資料傳送到伺服器,而響應是將伺服器處理的結果響應到瀏覽器。

2. 抓包檢視響應資料

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF‐8">
<title>Insert title here</title>
</head>
<body>
	<h2>hehe world 你好</h2>
<form action="" method="get">
	使用者名稱:<input type="text" name="username" value="jack" /> <br/>    
	密碼:<input type="text" name="password" value="1234" /> <br/>    
	<input type="submit" value="get提交" />
</form>
<form action="" method="post">
	使用者名稱:<input type="text" name="username" value="jack" /> <br/>    
	密碼:<input type="text" name="password" value="1234" /> <br/>    
	<input type="submit" value="post提交" />    
</form>
</body>
</html>

抓取的響應報文如下圖所示: 抓取的響應報文 【響應行】 響應行格式:協議/版本 狀態碼

常見狀態碼 : 常見狀態碼

【響應頭】 響應頭也是用的鍵值對key:value,伺服器基於響應頭通知瀏覽器的行為。 響應頭

常見響應頭 : 常見響應頭

【響應體】 響應體,就是伺服器傳送給瀏覽器的資料。當前請求的資源是hello.html,所以瀏覽器響應的資料是一個html頁面。 響應體

總結 : 響應行:200 404 500 302 304

響應頭:

refresh:定時重新整理

content-type:告訴瀏覽器檔案型別 解決中文亂碼問題

location:和狀態碼302一起使用實現重定向功能

content-disposition: 告訴瀏覽器以附件形式解析 通常用於下載

第二章 HttpServletResponse物件

一切皆物件,Servlet程式接受客戶端請求之後,通過HttpServletResponse物件來完成客戶端的響應。 通過該物件,將資料(可以是文字資料,也可以是二進位制資料) 返回給客戶端。

1. HttpServletResponse物件作用

HttpServletResponse物件代表伺服器響應,tomcat建立HttpServletResponse物件,並將該物件作為引數傳遞給servlet的service方法。 HttpServletResponse物件作用 : 通過HttpServletResponse物件提供的API,設定響應行,頭,體。

2. HttpServletResponse物件常用API

2.1 響應行 setStatus(int code); 向瀏覽器傳送狀態碼

常用狀態碼 : 常用狀態碼

2.2 響應頭 setHeader(String name,String value); 設定響應頭資訊

//	Content-Disposition	告訴瀏覽器以附件的形式開啟這個檔案

respon.setHeader("Content-Disposition","attachment;filename="+filename);

常見響應頭 常見響應頭

2.2.1處理響應亂碼 : 亂碼產生原因 : 伺服器如果需要響應給瀏覽器中文資料,tomcat使用getWriter()輸出字元時,對於中文需要進行編碼處理,而tomcat8 預設編碼是ISO-8859-1,該碼錶是不支援中文編碼的。所以響應給瀏覽器,出現亂碼。

亂碼解決方案 : 通過response.setContentType(“text/html;charset=utf-8”);

1.設定響應的資料型別(mime-type); 2.設定響應的資料編碼(utf-8); 處理亂碼

2.2.2 重定向 重定向可以去一個servlet,也可以去一個html靜態資源 重定向

注 : 開發中使用 response.sendRedirect(“otherServlet”);來實現重定向。

2.3 轉發的重定向的區別 在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

轉發和重定向怎麼選擇

  1. 如果需要共享request域,必須使用轉發;
  2. 如果需要將瀏覽器位址列地址變為第二次請求的地址,必須使用重定向;

2.4 響應體 響應體