二. HttpServletResponse進階
1. 通過抓包工具抓取Http響應
因為response代表響應,是以我們可以通過該對象分别設定Http響應的響應行,響 應頭和響應體!!!
2. 通過response設定響應行
設定響應行的狀态碼
setStatus
(int sc)
3.通過response設定響應頭
addHeader
(
String
name,
String
value)
addIntHeader
(
String
name, int value)
addDateHeader
(
String
name, long date)
setHeader
(
String
name,
String
value)
setDateHeader
(
String
name, long date)
setIntHeader
(
String
name, int value)
其中,add表示添加,而set表示設定
4.通過response設定響應體
a. 響應體設定文本
PrintWriter
getWriter
()
獲得字元流,通過字元流的write
(
String
s)
方法可以将字元串設定到response 緩沖區中,随後Tomcat會将response緩沖區中的内容組裝成Http響應傳回給浏覽 器端。
關于設定中文的亂碼問題
原因:response緩沖區的預設編碼是iso8859-1,此碼表中沒有中文,可以通過 response的setCharacterEncoding
(
String
charset)
設定response的編碼
但我們發現用戶端還是不能正常顯示文字
原因:我們将response緩沖區的編碼設定成UTF-8,但浏覽器的預設編碼是本地系 統的編碼,因為我們都是中文系統,是以用戶端浏覽器的預設編碼是GBK,我們可以 手動修改浏覽器的編碼是UTF-8。
我們還可以在代碼中指定浏覽器解析頁面的編碼方式,
通過response的setContentType
(
String
type)
方法指定頁面解析時的編碼是UTF-8
response.setContentType("text/html;charset=UTF-8");
上面的代碼不僅可以指定浏覽器解析頁面時的編碼,同時也内含 setCharacterEncoding的功能,是以在實際開發中隻要編寫 response.setContentType("text/html;charset=UTF-8");就可以解決頁面輸出中文亂碼問題。
b. 響應頭設定位元組
ServletOutputStream
getOutputStream
()
獲得位元組流,通過該位元組流的write(byte[] bytes)可以向response緩沖區中寫入字 節,在由Tomcat伺服器将位元組内容組成Http響應傳回給浏覽器。