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編碼 ……對文件進行讀寫