首页 > 代码库 > Response
Response
Response对象代表响应
响应由三部分组成:
- 响应行(状态码)
- 响应头
- 响应数据
相关方法:
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。