response是什么意思中文_Servlet第三篇「request和response简介、response的常见应用」...

response、request对象

Tomcat收到客户端的http请求,会针对每一次请求,分别创建一个 代表请求的request对象、和 代表响应的response对象

既然request对象代表http请求,那么我们获取浏览器提交过来的数据,找request对象即可。response对象代表http响应,那么我们向浏览器输出数据,找response对象即可。

什么是HttpServletResponse对象?

http响应由状态行、实体内容、消息头、一个空行组成。HttpServletResponse对象就封装了http响应的信息。

HttpServletResponse的应用

调用getOutputStream()方法向浏览器输出数据

  • 调用getOutputStream()方法向浏览器输出数据,getOutputStream()方法可以使用print()也可以使用write(),它们有什么区别呢?我们试验一下。代码如下
 //获取到OutputStream流 ServletOutputStream servletOutputStream = response.getOutputStream(); //向浏览器输出数据 servletOutputStream.print("aaaa");
  • 成功输出,好像没什么毛病。
8367482b22c1de1ab80da8e1d30752ff.png
  • 我们试着输出中文试试
 //获取到OutputStream流 ServletOutputStream servletOutputStream = response.getOutputStream(); //向浏览器输出数据 servletOutputStream.print("中国!");
  • 出异常了!!!
279ad4163e1ab06348f204633f0e4e68.png
  • 为什么会出现异常呢?在io中我们学过,outputStream是输出二进制数据的print()方法接收了一个字符串print()方法要把“中国”改成二进制数据,Tomcat使用IOS 8859-1编码对其进行转换,“中国”根本对ISO 8859-1编码不支持。所以出现了异常
  • 我们再看看write()方法,先向浏览器输出英文数据
 response.getOutputStream().write("aaa".getBytes());
  • 没有问题
6902269a2aaaebe96cb733691d142922.png
  • 再试试输出中文数据
 response.getOutputStream().write("你好呀我是中国".getBytes());
  • 貌似也没有问题。
270200a968fdd4ec62801a787020d9d2.png
  • 为什么使用write()方法能够正常向浏览器输出中文呢?"你好呀我是中国".getBytes()这句代码在转成byte[]数组的时候默认查的是gb2312编码,而"你好呀我是中国"支持gb2312编码,所以可以正常显示出来。
  • 但是,程序要实现通用性,应该使用的是UTF-8编码,我们在字符串转换成字节数组时指定UTF-8编码,看看会怎么样。
 response.getOutputStream().write("你好呀我是中国".getBytes("UTF-8"));
  • 好的,成功把它搞成乱码了!!!
411fe21dc40bb6c41c53150abf8246ae.png
  • 为什么它变成了乱码呢?原因是这样的:我在向服务器输出的中文是UTF-8编码的,而浏览器采用的是GBK,GBK想显示UTF-8的中文数据,不乱码才怪呢
9571e01f8e28da9b20fe5669f881cf31.png
  • 既然如此,我将浏览器的编码改成UTF-8试试。
7afca2cdee67b04c16d14cc7b541ca1c.png
  • 乱码问题又解决了。可是,每次编写UTF-8程序时都要去网页上改编码格式吗?这样明显不可能的
  • 既然HTTP响应有对浏览器说明回送数据是什么类型的消息头,那么HttpServletResponse对象就应该有相对应的方法告诉浏览器回送的数据编码格式是什么
  • 于是乎就去查找Servlet API,找到了设置消息头的方法
 //设置头信息,告诉浏览器我回送的数据编码是utf-8的 response.setHeader("Content-Type
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值