3 回答

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

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
- 3 回答
- 0 關(guān)注
- 621 瀏覽
添加回答
舉報(bào)