1. 程式人生 > >Response響應物件詳解

Response響應物件詳解

Response響應 01_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>
    

02_HTTP_響應訊息_響應行_狀態碼

  1. 響應行 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.跳轉外網 轉發和重定向如何選擇?

  1. 如果要使用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_概述 在這裡插入圖片描述

  1. 獲取MimeType (檔案下載時使用)
  2. 域物件,共享資料(範圍多大?)
  3. 獲取專案中檔案的物理路徑和代表檔案的輸入流

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_案例_檔案下載_中文檔名問題 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述