1.HttpServletResponse對象


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

    ……對文件進行讀寫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM