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

Response

时间:2014-11-23 17:29:18      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   使用   sp   strong   

Response对象代表响应

 

响应由三部分组成:

  1. 响应行(状态码)
  2. 响应头
  3. 响应数据

相关方法:

      getStatus

      setHeader

      getWrite和getOutputStream

 

其中写数据可以分为两种方式

  • 字节流  可以写任何格式的数据 
  • 字符流  只能写字符数据

 

如何向客户端浏览器输出中文

这里面讲一讲编码和乱码形成的问题

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String dataString = "中国";
        OutputStream outputStream  = response.getOutputStream();
        //要以字节流输出,所以要先把汉字转化为字节
        outputStream.write(dataString.getBytes());
    }

 

这种方式在浏览器上是没有问题的

 

但是在实际开发中,为了全球通用,一般是使用UTF-8

但是如果指定传输字节格式

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String dataString = "中国";
        OutputStream outputStream  = response.getOutputStream();
        //指定汉字传输格式
        outputStream.write(dataString.getBytes("UTF-8"));
    }

那么在浏览器上就会出现乱码(即是其他的字)

原因:

  • 当把汉字定义成UTF-8时,传输的并不是汉字,而是其中对应的编码,即是数字。
  • 当把数字传给浏览器时,浏览器要进行解码,但是浏览器默认的解码方式是国标gb2312

所以会解析成其他的字

servlet写给浏览器的不是汉字中国,而是它所对应的编码

计算机通讯是没有汉字通讯的,只有数字通讯

解决:

  • 在浏览器设置里面改动编码方式
  • 在服务器代码里设定浏览器的解码方式
public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //加入响应头
        response.setHeader("Content-type", "text/html;charset=UTF-8");

        String dataString = "中国";
        OutputStream outputStream  = response.getOutputStream();
        
        outputStream.write(dataString.getBytes("UTF-8"));
    }

这样的话就没有问题了。

 

Response

标签:style   blog   http   io   ar   color   使用   sp   strong   

原文地址:http://www.cnblogs.com/tech-bird/p/4116658.html

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