Response響應物件詳解
Response響應 01_HTTP_響應訊息_概述
-
請求訊息:客戶端傳送給伺服器端的資料 資料格式: 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>
- 資料格式:
02_HTTP_響應訊息_響應行_狀態碼
- 響應行 HTTP/1.1 200 OK 03_HTTP_響應訊息_響應頭 04_Response_功能介紹 setStatus(302); setHeader(“Content-Type”,”text/html;charset=utf-8”); setContentType(”text/html;charset=utf-8”); getWriter().write(String):響應字串 getOutputStream().write(byte[]):響應二進位制,(檔案下載)
05_Response_案例1_重定向_程式碼實現 06_Response_案例1_重定向_特點 forward 與 redirect 區別? 區別: 1.原理 2.位址列變化 3.路徑寫法 4.跳轉外網 轉發和重定向如何選擇?
- 如果要使用request共享資料,使用轉發 (reques.getRequestDispatcher(“/demo.jsp”).forward(request,response)) 2.如果要跳轉到其他伺服器,必須使用重定向 (response.sendRedirect(“http://www.baidu.com”)) 3.其他情況,2個都可以
07_Response_案例1_路徑_相對路徑 總結路徑問題: 1.相對路徑: 所在檔案與請求資源之間的關係. 不以 斜槓 / 開頭, 例如: ServletDemo1, ./ServletDemo1, …/ServletDemo1 2.建議使用絕對路徑 3.絕對路徑:以 斜槓 開頭 , 以虛擬路徑開頭 ,例如: /web02/ServletDemo1 建議使用絕對路徑,以/ 開始 response.sendRedirect(“/web02/ServletDemo2”);//給客戶端用的 request.getRequestDispatcher(“/ServletDemo2”).forward(); //給伺服器用的,不加虛擬路徑
08_Response_案例2_輸出字元資料 09_Response_案例3_輸出位元組資料 伺服器輸出位元組資料到瀏覽器 * 步驟: 1. 獲取位元組輸出流 2. 輸出資料
10_ServletContext_概述
- 獲取MimeType (檔案下載時使用)
- 域物件,共享資料(範圍多大?)
- 獲取專案中檔案的物理路徑和代表檔案的輸入流
11_ServletContext_獲取
1. 通過request物件獲取
request.getServletContext();
2. 通過HttpServlet獲取
this.getServletContext();
12_ServletContext_功能_獲取MIME型別 13_ServletContext_功能_域物件 14_ServletContext_功能_獲取檔案伺服器路徑 15_案例_檔案下載_分析 檔案下載需求: 1. 頁面顯示超連結 2. 點選超連結後彈出下載提示框 3. 完成圖片檔案下載 * 分析: 1. 超連結指向的資源如果能夠被瀏覽器解析,則在瀏覽器中展示,如果不能解析,則彈出下載提示框。不滿足需求 2. 任何資源都必須彈出下載提示框 3. 使用響應頭設定資源的開啟方式: * content-disposition:attachment;filename=xxx
16_案例_檔案下載_程式碼實現 設定2個頭和一個流 Content-Type Content-Disposition InputStream response.getOutputStream(); 17_案例_檔案下載_中文檔名問題