3 回答

TA貢獻1893條經驗 獲得超10個贊
1.HttpServletResponse對象
(1).Web服務器收到一個http請求,會針對每個請求創建一個HttpServletRequest和HttpServletResponse對象,向客戶端發送數據找HttpServletResponse,從客戶端取數據找HttpServletRequest;
(2).HttpServletResponse對象可以向客戶端發送三種類型的數據:a.響應頭b.狀態碼c.數據
(3).自己去看HttpServletResponse的API
(4).rsponse常見應用:
a.使用OutputStream向客戶端寫入中文:
String data = "中國";
OutputStream stream = response.getOutputStream();//獲取一個向Response對象寫入數據的流,當tomcat服務器進行響應的時候,會將Response中的數據寫給瀏覽器
stream.write(data.getBytes("UTF-8"));
//此時在html頁面會出現亂碼,這是因為:服務器將"中國"按照UTF-8碼表進行編碼,得到對應的碼值假設是98,99,服務器將碼值發送給瀏覽器。瀏覽器默認按照GB2312進行解碼,在GB2312碼表中對應的字符已不是"中國"
正確代碼如下:
response.setHeader("Content-type","text/html;charset=UTF-8");//向瀏覽器發送一個響應頭,設置瀏覽器的解碼方式為UTF-8
String data = "中國";
OutputStream stream = response.getOutputStream();
stream.write(data.getBytes("UTF-8"));
b.使用Writer向客戶端寫入中文:
PrintWriter writer = response.getWriter();
writer.write("中國");//同樣會出現亂碼,這是因為我們將"中國"寫入response對象時,tomcat服務器為了將數據通過網絡傳輸給瀏覽器,必須進行編碼,由于沒有指定編碼方式,默認采用ISO8859-1,
當瀏覽器接收到數據后,根據GBK解碼必然出現亂碼
正確代碼如下:
response.setCharacterEncoding("UTF_8");//設置Response的編碼方式為UTF-8
response.setHeader("Content-type","text/html;charset=UTF-8");//向瀏覽器發送一個響應頭,設置瀏覽器的解碼方式為UTF-8,其實設置了本句,也默認設置了Response的編碼方式為UTF-8,但是開發中最好兩句結合起來使用
//response.setContentType("text/html;charset=UTF-8");同上句代碼作用一樣
PrintWriter writer = response.getWriter();
writer.write("中國");
c.使用Response實現文件下載:
String path = this.getServletContext.getRealPath(“/中國.jpg”);
String fileName = path.subString(path.lastIndexOf(“\\”));
Response.setHeader(“content-disposition”,”attachment;filename”+URLENcode r.encode(fileName,”UTF-8”));//設置響應頭,告訴瀏覽器,該響應是下載響應,如果文件名包含中文,必須使用URL編碼

TA貢獻1794條經驗 獲得超7個贊
- 3 回答
- 0 關注
- 614 瀏覽
添加回答
舉報