1:Http協議:響應消息
2.Response對象
3.ServletContext對象
## HTTP協議:
1.請求消息:客戶端發送給服務器端的數據
* 數據格式:
1.請求行
2.請求圖
3.請求空行
4.請求體
2.響應消息:服務器端發送給客戶端的數據
* 數據格式:
1.響應行
1.組成:協議/版本 響應狀態碼 狀態碼描述
2.響應狀態碼:服務器告訴客戶端瀏覽器本次請求和相應的一個狀態
1. 狀態碼都是三位數字
2. 分類:
1. 1xx:服務器接受客戶端消息未完成,等一段時間後發送1xx狀態碼詢問
2. 2xx:成功。如200表明成功
3. 3xx:重定向。如302(重定向),客戶端A向瀏覽器告知去找C。304(訪問緩存)
4. 4xx:客戶端錯誤。403(沒權限),404(路徑錯誤),405(請求方式沒有對應doXXX方法)
5. 5xx:服務器端錯誤。500(服務器內部出現異常)
2.響應頭:
1. 格式:頭名稱:值
2. 常見的響應頭:
1. Content-Type:服務器告訴客戶端本次響應體的數據格式以及編碼格式,解決中文亂碼
2. Content-disposition:服務器告訴客戶端以什麼格式打開響應體數據
* 值:
* in-line:默認值,在當前頁面內打開
* attachment;filename=xxx:以附件形式打開響應體。文件下載
3.響應空行
4.響應體:傳輸的數據
* 響應字符串格式
## Response對象
* 功能:設置響應消息
1. 設置響應行:
1. 格式:HTTP/1.1 200 ok
2. 設置狀態碼:setStatus(int sc)
2. 設置響應頭:setHeader(String name,String value)
addHeadder(String name,String value)
二者之間的區別?
set只能覆蓋重寫,而add功能是追加
3. 設置響應體:
1. 獲取輸出流
* 字符輸出流:PrintWriter getWriter()-------- 經常使用!
* 字節輸出流:getOutputStream()
2. 使用輸出流,將數據輸出到客戶端瀏覽器
重定向的特色:redirect
1. 地址欄發生變化。
2. 重定向能夠訪問其餘站點(服務器)的資源
3. 重定向是兩次請求。不能使用request對象
轉發的特色:forward
1. 轉發地址欄路徑不變
2. 轉發只能訪問當前服務器下的資源
3. 轉發只是一次請求,能夠使用request對象來共享數據
何時用請求轉發,何時用重定向
須要攜帶數據用請求轉發,剩下的狀況兩種都可
路徑寫法:
1. 路徑分類:
1. 相對路徑(不用):經過相對路徑不能夠肯定惟一資源
* 如 ./index.html
* 不以/開頭,以.開頭
* 規則:肯定訪問當前資源和目標資源之間的的相對位置關係
* ./:表明當前目錄
* ../:後退一級目錄
2. 絕對路徑:經過絕對路徑能夠肯定惟一資源(基於瀏覽器的絕對路徑:前臺頁面,重定向)(基於服務器的絕對路徑:轉發)
* 如http://localhost/day15/rsponseDemo2 /day15/rsponseDemo2
* 以/開頭
* 規則:判判定義的路徑是給誰用的?判斷請求未來從哪發出
* 給客戶端瀏覽器使用:須要加虛擬目錄(項目的訪問路徑)
* 建議虛擬目錄動態獲取:request.getContextPath()
* <a>,<form>,重定向...
* 給服務器使用:不須要加虛擬目錄
* 轉發路徑
html