- Java后端 學習路線 筆記匯總表【黑馬程式員】
- Request和Response-學習筆記01【Request_原理和繼承體系、Request_獲取請求資料】【day01】
- Request和Response-學習筆記02【請求轉發和request共享資料、Request_獲取ServletContext、request登錄案例】[day01]
- Request和Response-學習筆記03【HTTP回應協議、response之重定向、response之相對路徑和絕對路徑】【day02】
- Request和Response-學習筆記04【response之輸出資料、response之驗證碼】【day02】
- Request和Response-學習筆記05【ServletContext物件、檔案下載】【day02】
目錄
06 HTTP回應協議
今日內容
HTTP_回應訊息_概述
HTTP_回應訊息_回應行_狀態碼
HTTP狀態碼404
HTTP狀態碼405
HTTP狀態碼500
HTTP_回應訊息_回應頭
07 response之重定向
Response_功能介紹
Response_案例1_重定向_代碼實作
Response_案例1_重定向_特點
08 response之相對路徑和絕對路徑
Response_案例1_路徑_相對路徑
Response_案例1_路徑_絕對路徑
給服務器使用:不需要加虛擬目錄
給客戶端瀏覽器使用:需要加虛擬目錄(專案的訪問路徑)
動態獲取虛擬目錄
06 HTTP回應協議
今日內容
- HTTP協議:回應訊息
- Response物件
- ServletContext物件
HTTP_回應訊息_概述
HTTP協議
1. 請求訊息:客戶端發送給服務器端的資料,
* 資料格式:
1. 請求行
2. 請求頭
3. 請求空行
4. 請求體
2. 回應訊息:服務器端發送給客戶端的資料,
* 資料格式:
1. 回應行
2. 回應頭
3. 回應空行
4. 回應體
* 回應字串格式
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 101
Date: Wed, 06 Jun 2018 07:08:42 GMT<html>
<head>
<title>$Title$</title>
</head>
<body>
hello , response
</body>
</html>
HTTP_回應訊息_回應行_狀態碼
回應訊息:服務器端發送給客戶端的資料,
* 資料格式:
1. 回應行
1. 組成:協議/版本 回應狀態碼 狀態碼描述
2. 回應狀態碼:服務器告訴客戶端瀏覽器本次請求和回應的一個狀態,
1. 狀態碼都是3位數字
2. 分類:
1. 1xx:服務器就收客戶端訊息,但沒有接受完成,等待一段時間后,發送1xx多狀態碼
2. 2xx:成功,代表:200
3. 3xx:重定向,代表:302(重定向),304(訪問快取)
4. 4xx:客戶端錯誤,
* 代表:
* 404:請求路徑沒有對應的資源
* 405:請求方式沒有對應的doXxx方法
5. 5xx:服務器端錯誤,代表:500(服務器內部出現例外)
HTTP狀態碼404
HTTP狀態碼405
HTTP狀態碼500
HTTP狀態碼——百度百科
HTTP_回應訊息_回應頭
回應頭:
1. 格式:頭名稱: 值
2. 常見的回應頭:
1. Content-Type:服務器告訴客戶端本次回應體資料格式以及編碼格式,
2. Content-disposition:服務器告訴客戶端以什么格式打開回應體資料,
* 值:
* in-line:默認值,在當前頁面內打開
* attachment;filename=xxx:以附件形式打開回應體,(應用:檔案下載)
07 response之重定向
Response_功能介紹
* Response物件 功能:設定回應訊息,
1. 設定回應行
1. 格式:HTTP/1.1 200 ok
2. 設定狀態碼:setStatus(int sc)
2. 設定回應頭:setHeader(String name, String value)
3. 設定回應體:
* 使用步驟:
1. 獲取輸出流
* 字符輸出流:PrintWriter getWriter()
* 位元組輸出流:ServletOutputStream getOutputStream()
2. 使用輸出流,將資料輸出到客戶端瀏覽器
![]()
request&response物件原理
Response_案例1_重定向_代碼實作
* 案例:
1. 完成重定向
* 重定向:資源跳轉的方式
* 代碼實作:
//1. 設定狀態碼為302
response.setStatus(302);
//2.設定回應頭location
response.setHeader("location","/day15/responseDemo2");
//簡單的重定向方法
response.sendRedirect("/day15/responseDemo2");
2. 服務器輸出字符資料到瀏覽器
3. 服務器輸出位元組資料到瀏覽器
4. 驗證碼
Response_案例1_重定向_特點
* 案例:
1. 完成重定向
* 重定向:資源跳轉的方式
* 代碼實作:
//1. 設定狀態碼為302
response.setStatus(302);
//2.設定回應頭location
response.setHeader("location","/day15/responseDemo2");
//簡單的重定向方法
response.sendRedirect("/day15/responseDemo2");
* 重定向的特點:redirect
1. 地址欄發生變化
2. 重定向可以訪問其他站點(服務器)的資源
3. 重定向是兩次請求,不能使用request物件來共享資料,
* 轉發的特點:forward
1. 轉發地址欄路徑不變
2. 轉發只能訪問當前服務器下的資源
3. 轉發是一次請求,可以使用request物件來共享資料,
* forward(轉發)和redirect(重定向)區別
08 response之相對路徑和絕對路徑
Response_案例1_路徑_相對路徑
* 案例:
1. 完成重定向
* 路徑寫法:
1. 路徑分類
1. 相對路徑:通過相對路徑不可以確定唯一資源,
* 如:./index.html
* 不以/開頭,以.開頭路徑
* 規則:找到當前資源和目標資源之間的相對位置關系,
* ./:當前目錄
* ../:后退一級目錄
2. 絕對路徑:通過絕對路徑可以確定唯一資源,
* 如:http://localhost/day15/responseDemo2 ; 省略協議、域名、埠:/day15/responseDemo2
* 以/開頭的路徑
Response_案例1_路徑_絕對路徑
絕對路徑:通過絕對路徑可以確定唯一資源
* 規則:判斷定義的路徑是給誰用的?判斷請求將來從哪兒發出,
* 給客戶端瀏覽器使用:需要加虛擬目錄(專案的訪問路徑),
* 建議虛擬目錄動態獲取:request.getContextPath()
* <a>、<form>、重定向 ...
* 給服務器使用:不需要加虛擬目錄,
* 轉發路徑
給服務器使用:不需要加虛擬目錄
給客戶端瀏覽器使用:需要加虛擬目錄(專案的訪問路徑)
動態獲取虛擬目錄
武諺有云:一日不練十日空!古語還說到:一日不練手生,三日不練拳腳全荒,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259865.html
標籤:其他

























