JavaWeb之Request02

王振國老師整理

 

 

HttpServletRequest 類

HttpServletRequest 類有什麼作用?

每次只要有請求進入 Tomcat 服務器,Tomcat 服務器就會把請求過來的 HTTP 協議信息解析好封裝到 Request 對象中。 然後傳遞到 service 方法(doGet 和 doPost)中給我們使用。我們可以通過 HttpServletRequest 對象,獲取到所有請求的 信息。

HttpServletRequest 類的常用方法

  • getRequestURI() 獲取請求的資源路徑
  • getRequestURL() 獲取請求的統一資源定位符(絕對路徑)
  • getRemoteHost() 獲取客戶端的 ip 地址
  • getHeader() 獲取請求頭
  • getParameter() 獲取請求的參數
  • getParameterValues() 獲取請求的參數(多個值的時候使用)
  • getMethod() 獲取請求的方式 GET 或 POST
  • setAttribute(key, value); 設置域數據
  • getAttribute(key); 獲取域數據
  • getRequestDispatcher() 獲取請求轉發對象

doGet 請求的中文亂碼解決

// 獲取請求參數
String username = req.getParameter("username");
//1 先以 iso8859-1 進行編碼
//2 再以 utf-8 進行解碼
username = new String(username.getBytes("iso-8859-1"), "UTF-8");

POST 請求的中文亂碼解決

@Override
protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
// 設置請求體的字符集爲 UTF-8,從而解決 post 請求的中文亂碼問題
        req.setCharacterEncoding("UTF-8");
        System.out.println("-------------doPost------------");
// 獲取請求參數
        String username=req.getParameter("username");
        String password=req.getParameter("password");
        String[]hobby=req.getParameterValues("hobby");
        System.out.println("用戶名:"+username);
        System.out.println("密碼:"+password);
        System.out.println("興趣愛好:"+Arrays.asList(hobby));
}

請求的轉發

  • 請求轉發是指,服務器收到請求後,從一次資源跳轉到另一個資源的操作叫請求轉發。

base 標籤的作用

<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--base 標籤設置頁面相對路徑工作時參照的地址
href 屬性就是參數的地址值
-->
<base href="http://localhost:8080/07_servlet/a/b/">
</head>
<body>
這是 a 下的 b 下的 c.html 頁面<br/>
<a href="../../index.html">跳回首頁</a><br/>
</body>
</html>

Web 中的相對路徑和絕對路徑

在 javaWeb 中,路徑分爲相對路徑和絕對路徑兩種:

相對路徑:

  • . 表示當前目錄
  • .. 表示上一級目錄 資源名 表示當前目錄/資源名

絕對路徑:

  • http://ip:port/工程路徑/資源路徑

在實際開發中,路徑都使用絕對路徑,而不簡單的使用相對路徑。

  1. 絕對路徑
  2. base+相對2

web 中 / 斜槓的不同意義

在 web 中 / 斜槓 是一種絕對路徑。

/ 斜槓 如果被瀏覽器解析,得到的地址是:http://ip:port/

<a href="/">斜槓</a>

/ 斜槓 如果被服務器解析,得到的地址是:http://ip:port/工程路徑

  1. /servlet1
  2. servletContext.getRealPath(“/”);
  3. request.getRequestDispatcher(“/”);

特殊情況: response.sendRediect(“/”); 把斜槓發送給瀏覽器解析。得到 http://ip:port/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章