HttpServletResponse對象

1.HttpServletResponse對象html

(1).Web服務器收到一個http請求,會針對每一個請求建立一個HttpServletRequest和HttpServletResponse對象,向客戶端發送數據找HttpServletResponse,從客戶端取數據找HttpServletRequest;瀏覽器

(2).HttpServletResponse對象能夠向客戶端發送三種類型的數據:a.響應頭b.狀態碼c.數據tomcat

(3).本身去看HttpServletResponse的API服務器

(4).rsponse常見應用:網絡

a.使用OutputStream向客戶端寫入中文:this

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實現文件下載:code

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編碼

……對文件進行讀寫
相關文章
相關標籤/搜索