1. 程式人生 > >JavaWeb學習筆記 (五) HttpServletResquest與HttpServletResponse

JavaWeb學習筆記 (五) HttpServletResquest與HttpServletResponse

一.HttpServletRequest物件

1. HttpServletRequest物件

這個物件代表了客戶端的請求,當客戶端請求伺服器時,客戶端所有的請求資訊都封裝在了這個物件中,通過這個物件中的一些方法可以獲取到客戶端請求的一些資訊。

  • 獲取請求頭中的資訊

在這裡插入圖片描述

  • 獲取請求體中的資訊
    在這裡插入圖片描述

2. HttpServletRequest中文亂碼問題的解決

由於編碼的問題,使得客戶端與伺服器在傳遞中文資訊時,會出現亂碼問題。

(1) get請求中的亂碼問題

get請求的資料,在url位址列已經進行過編譯了,由與getParameter()使用ISO-8859-1解碼,因此出現了中文亂碼的問題。

  • 解決方法一

可以在收到資料的時候,先得到其字元陣列,然後在用UTF-8對其進行解碼。
String username new String(userName.getBytes(“ISO-8859-1”) , “UTF-8”);

  • 解決方法二

可以直接在tomcat中配置,以後get請求過來的資料都是用utf-8編碼。
在這裡插入圖片描述
在server.xml中的這一行後面加上URIEncoding=“UTF-8”

(2) post請求中的亂碼問題

  • 解決方法

post方法是以流的方式傳輸資料,在取字元之前,設定下對客戶端重新編碼的編碼格式,覆蓋request中預設的ISO-8859-1。
request.setCharacterEncoding(“UTF-8”);

這行程式碼應該放在獲取引數之前,該方法對get無效,因為get在url已經編碼過了

二. HttpServletResponse物件

1.HttpServletResponse物件

該物件負責返回資料給客戶端
在這裡插入圖片描述
思考兩種方式的應用場景?

2. HttpServletResponse中文亂碼問題的解決

分為位元組輸出流和字元輸出流兩種,需要確保伺服器出去資料的編碼和瀏覽器解碼的編碼相同。

(1)字元輸出流在這裡插入圖片描述

(2) 位元組輸出流

在這裡插入圖片描述
不管是位元組流還是字元流,以上程式碼都可以通過下面這行程式碼替代

response.setContentType(“text/html;charset=utf-8”);
表示響應的文字為html,瀏覽器使用utf-8去讀伺服器傳來的資料。