HttpServletResponse

字節(jié)流可以寫任何數(shù)據(jù),字符流只能寫字符數(shù)據(jù)

getOutputStream字節(jié)流,getWriter字符流

1、response的outputStream輸出中文問題?

程序以什么碼表輸出了,程序就一定要控制瀏覽器以什么編碼打開:

response.setHeader("Content-type","text/html;charset=UTF-8");

String data = "中國";

OutputStream out = response.getOutputStream();

out.write(data.getBytes("UTF-8");

也可用html技術(shù)中<meta>標簽模擬一個Http響應頭來控制模擬器的行為:

String data = "中國";

OutputStream out = response.getOutputStream();

out.write("<meta http-equiv='content-type'? content='text/html';charset=UTF-8'>".getBytes());

out.write(data.getBytes("UTF-8");

2、response常見應用

1)向客戶端輸出中文數(shù)據(jù)

A.分別以OutputStream和PrintWriter輸出

B.使用HTML語言里的<meta>標簽來控制瀏覽器行為

2)文件下載和中文文件的下載

如果下載文件是中文文件,則文件需要經(jīng)過url編碼

3)輸出隨機圖片

4)發(fā)送http頭,控制瀏覽器定時刷新網(wǎng)頁(REFRESH)

5)發(fā)送http頭,控制瀏覽器禁止緩存當前文檔內(nèi)容

3.response實現(xiàn)請求重定向:response.sendRedirect("/day06/index.jsp");

等價于

response.setStatus(302);?

?response.setHeader("location", "/day06/index.jsp");

所以最好不要使用請求重定向,因為它會導致兩次服務器請求,但是平時登錄頁面,購物這種情況最好使用請求重定向,不用轉(zhuǎn)發(fā)的原因是,如果刷新會重新出來之前的頁面(例如購物車顯示頁面,刷新會不停的出來購物車顯示頁面),重定向就不會出現(xiàn)這個問題,京東使用的是轉(zhuǎn)發(fā)。

重定向特點:<1>瀏覽器會向服務器發(fā)送兩次,意味著就有2個request\response

<2>用重定向技術(shù),瀏覽器地址欄會發(fā)生變化

<3>用戶登錄和顯示購物車時,通常會用到重定向技術(shù)

4、Reponse細節(jié)問題

(1)getOutputStream和getWriter()方法分別用于得到輸出二進制數(shù)據(jù)、輸出文本數(shù)據(jù)的ServletOutputStream、Printwriter對象

(2)getOutputStream和getWriter()方法這兩個方法互斥,一次請求,調(diào)用其中任何一個方法后,不能再調(diào)用另一方法,否則會拋異常:java.lang.IllegalStateException:getOutputStream() has already bean...但是使用重定向就不會出現(xiàn)這個問題,因為是兩次response請求

(3)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容