Response筆記

      網友投稿 675 2025-04-01

      今日內容

      1. HTTP協議:響應消息 2. Response對象 3. ServletContext對象

      1

      2

      3

      HTTP協議:

      1. 請求消息:客戶端發送給服務器端的數據 * 數據格式: 1. 請求行 2. 請求頭 3. 請求空行 4. 請求體 2. 響應消息:服務器端發送給客戶端的數據 * 數據格式: 1. 響應行 1. 組成:協議/版本 響應狀態碼 狀態碼描述 2. 響應狀態碼:服務器告訴客戶端瀏覽器本次請求和響應的一個狀態。 1. 狀態碼都是3位數字 2. 分類: 1. 1xx:服務器就收客戶端消息,但沒有接受完成,等待一段時間后,發送1xx多狀態碼 2. 2xx:成功。代表:200 3. 3xx:重定向。代表:302(重定向),304(訪問緩存) 4. 4xx:客戶端錯誤。 * 代表: * 404(請求路徑沒有對應的資源) * 405:請求方式沒有對應的doXxx方法 5. 5xx:服務器端錯誤。代表:500(服務器內部出現異常) 2. 響應頭: 1. 格式:頭名稱: 值 2. 常見的響應頭: 1. Content-Type:服務器告訴客戶端本次響應體數據格式以及編碼格式 2. Content-disposition:服務器告訴客戶端以什么格式打開響應體數據 * 值: * in-line:默認值,在當前頁面內打開 * attachment;filename=xxx:以附件形式打開響應體。文件下載 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 $Title$ hello , response

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      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. 使用輸出流,將數據輸出到客戶端瀏覽器 * 案例: 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 區別 * 路徑寫法: 1. 路徑分類 1. 相對路徑:通過相對路徑不可以確定唯一資源 * 如:./index.html * 不以/開頭,以.開頭路徑 * 規則:找到當前資源和目標資源之間的相對位置關系 * ./:當前目錄 * ../:后退一級目錄 2. 絕對路徑:通過絕對路徑可以確定唯一資源 * 如:http://localhost/day15/responseDemo2 /day15/responseDemo2 * 以/開頭的路徑 * 規則:判斷定義的路徑是給誰用的?判斷請求將來從哪兒發出 * 給客戶端瀏覽器使用:需要加虛擬目錄(項目的訪問路徑) * 建議虛擬目錄動態獲取:request.getContextPath() * ,

      重定向... * 給服務器使用:不需要加虛擬目錄 * 轉發路徑 2. 服務器輸出字符數據到瀏覽器 * 步驟: 1. 獲取字符輸出流 2. 輸出數據 * 注意: * 亂碼問題: 1. PrintWriter pw = response.getWriter();獲取的流的默認編碼是ISO-8859-1 2. 設置該流的默認編碼 3. 告訴瀏覽器響應體使用的編碼 //簡單的形式,設置編碼,是在獲取流之前設置 response.setContentType("text/html;charset=utf-8"); 3. 服務器輸出字節數據到瀏覽器 * 步驟: 1. 獲取字節輸出流 2. 輸出數據 4. 驗證碼 1. 本質:圖片 2. 目的:防止惡意表單注冊

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      Response筆記

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      ServletContext對象:

      1. 概念:代表整個web應用,可以和程序的容器(服務器)來通信 2. 獲取: 1. 通過request對象獲取 request.getServletContext(); 2. 通過HttpServlet獲取 this.getServletContext(); 3. 功能: 1. 獲取MIME類型: * MIME類型:在互聯網通信過程中定義的一種文件數據類型 * 格式: 大類型/小類型 text/html image/jpeg * 獲取:String getMimeType(String file) 2. 域對象:共享數據 1. setAttribute(String name,Object value) 2. getAttribute(String name) 3. removeAttribute(String name) * ServletContext對象范圍:所有用戶所有請求的數據 3. 獲取文件的真實(服務器)路徑 1. 方法:String getRealPath(String path) String b = context.getRealPath("/b.txt");//web目錄下資源訪問 System.out.println(b); String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目錄下的資源訪問 System.out.println(c); String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目錄下的資源訪問 System.out.println(a);

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      案例:

      * 文件下載需求: 1. 頁面顯示超鏈接 2. 點擊超鏈接后彈出下載提示框 3. 完成圖片文件下載 * 分析: 1. 超鏈接指向的資源如果能夠被瀏覽器解析,則在瀏覽器中展示,如果不能解析,則彈出下載提示框。不滿足需求 2. 任何資源都必須彈出下載提示框 3. 使用響應頭設置資源的打開方式: * content-disposition:attachment;filename=xxx * 步驟: 1. 定義頁面,編輯超鏈接href屬性,指向Servlet,傳遞資源名稱filename 2. 定義Servlet 1. 獲取文件名稱 2. 使用字節輸入流加載文件進內存 3. 指定response的響應頭: content-disposition:attachment;filename=xxx 4. 將數據寫出到response輸出流 * 問題: * 中文文件問題 * 解決思路: 1. 獲取客戶端使用的瀏覽器版本信息 2. 根據不同的版本信息,設置filename的編碼方式不同

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      TCP/IP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何合并多個excel文件(如何合并多個excel文件內容)
      下一篇:如何在excel中輸入0
      相關文章
      WWW国产亚洲精品久久麻豆| 亚洲精品偷拍无码不卡av| 亚洲熟妇无码爱v在线观看| 亚洲精品国产品国语在线 | 在线观看亚洲av每日更新| 国产精品亚洲а∨无码播放麻豆| 亚洲真人无码永久在线观看| 亚洲第一页中文字幕| 亚洲精品国产成人中文| 麻豆亚洲AV永久无码精品久久| 亚洲成人动漫在线| 亚洲成年人在线观看| 亚洲人成网亚洲欧洲无码久久| 国产亚洲色视频在线| 亚洲中文字幕无码一区| 中文字幕亚洲综合久久菠萝蜜| 亚洲精品国产自在久久| 亚洲欧洲中文日韩久久AV乱码| 亚洲日韩中文字幕日韩在线| 国产亚洲精品不卡在线| 亚洲综合在线另类色区奇米| 亚洲一区二区女搞男| 久久久久久久综合日本亚洲| 伊人久久精品亚洲午夜| 亚洲精品无码乱码成人| 亚洲第一AV网站| 亚洲五月六月丁香激情| 久久亚洲日韩看片无码| 亚洲成年人免费网站| 亚洲视频无码高清在线| 亚洲熟妇无码AV| 天天综合亚洲色在线精品| 亚洲男人的天堂一区二区| 国产偷窥女洗浴在线观看亚洲| 亚洲中文字幕无码爆乳AV| 久久精品亚洲综合专区| 亚洲精品在线播放视频| 日韩亚洲人成在线| 国产亚洲成在线播放va| 国产亚洲?V无码?V男人的天堂| 亚洲国产a∨无码中文777 |