码迷,mamicode.com
首页 > 其他好文 > 详细

Servlet学习(五)——通过response设置响应体及中文乱码问题

时间:2017-10-05 21:26:59      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:imp   运行程序   print   关于   col   乱码   指定   out   分享   

1、响应体设置文本

PrintWriter writer=response.getWriter();

获得字符流,通过字符流的write(String s)方法可以将字符串设置到response 缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览器端。

关于设置中文乱码问题:

response缓冲区的默认编码是iso8859-1,此码表中没有中文,可以通过response的setCharacterEncoding(String charset)设置response的编码;

但我们发现客户端还是不能正常显示文字

原因:我们将response缓冲区的编码设置成UTF-8,但浏览器的默认编码是本地系统的编码,因为我们都是中文系统,所以客户端浏览器的默认编码是GBK,

1)我们可以手动修改浏览器的编码是UTF-8

2)我们还可以在代码中指定浏览器解析页面的编码方式,通过response的setContentType(String type)方法指定页面解析时的编码是UTF-8,response.setContentType("text/html;charset=UTF-8");

图解原因:

技术分享

具体代码:

技术分享

在实际开发中,通常使用封装后的response.setContentType("text/html;charset=UTF-8");

以上就可以解决页面输出中文乱码问题。

2、响应体设置字节

ServletOutputStream out=response.getOutputStream();

获得字节流,通过该字节流的write(byte[] bytes)可以向response缓冲区中写入字节,再由Tomcat服务器将字节内容组成Http响应返回给浏览器。

案例:页面输出图片a.jpg

 1 package com.itheima.context;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 
 7 import javax.servlet.ServletException;
 8 import javax.servlet.ServletOutputStream;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 public class ByteServlet extends HttpServlet {
14 
15     public void doGet(HttpServletRequest request, HttpServletResponse response)
16             throws ServletException, IOException {
17         //使用response获得字节输出流
18         ServletOutputStream out=response.getOutputStream();
19         //获得服务器上的图片
20         String realPath=this.getServletContext().getRealPath("a.jpg");
21         InputStream in=new FileInputStream(realPath);
22         
23         int len=0;
24         byte[] buffer=new byte[1024];
25         while((len=in.read(buffer))>0){
26             out.write(buffer,0,len); 
27         }
28         
29         in.close();
30         out.close();
31     }
32 
33     public void doPost(HttpServletRequest request, HttpServletResponse response)
34             throws ServletException, IOException {
35         doGet(request, response);
36     }
37 }

运行程序,客户端页面显示图片a

 

Servlet学习(五)——通过response设置响应体及中文乱码问题

标签:imp   运行程序   print   关于   col   乱码   指定   out   分享   

原文地址:http://www.cnblogs.com/cxq1126/p/7629945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!