Response响应正文

Response响应正文,requestresponse就像一对不分家的小情侣,总是成对的出现。今天就详细解释requestresponse到底是什么。

Response是一个Servlet.Service();方法的一个参数,类型是javax.Servlet.http.HttpServletResponse.

当浏览器发送一个请求,当服务器接受之后,就会创建一个requestresponse对象,然后把请求发送的数据封装到request对象中,然后把这两个对象都会传递给Service()方法,(//这个相当于把数据封装到一个容器中,而request对象就是这个容器,Service方法是可以直接从容器中把数据取出来的)还可以使用response响应给客户端,response中有响应流(分为字符和字节两种),下图为整个流程:


注:requestresponse都是一次性的,每次请求都会创建新的。并且由于资源的共享,前一次的访问会影响下一次的访问,所以说这个资源的共享是有风险的。

 

一:Response的功能:

1:设置响应头;

2:设置状态码;

3:设置响应题(响应正文);

4:重定向(这个一般用的不多);

 

二:Response的响应正文:

Response的响应流总共有两个,一个是,PrintWriter out = response.getWriter();//获取字符响应流。

另外一个是ServletOutputStream out = response.getOutputStream()//获取字节响应流。

注意,对于一个response而言,这个两个响应流只能用其中的一个,否则会产生java.lang.IllegalStateException异常,(该异常表示,当前对客户端的响应已经结束,不能在响应已经结束(或说消亡)后再 向客户端(实际上是缓冲区)输出任何内容)。

提到字符流,首先涉及到两个问题。

1 :字符编码。只有浏览器和客户端使用同一种编码方式,才不会产生乱码, iso-8859-1 不支持中文, GBK 支持繁体中文。 Gb2312 支持简体中文,世界通用的编码是 UTF-8 ,使用的范围广。
2:缓冲区。缓存区的数据通过流的形式来向硬盘上进行存储的过程,由于缓存区的大小是固定的一般大小为8K,(注意,Tomcat的实现方式可能有电不同,内部是response嵌套的方式,所以这个数据并不是8k,而是16k),然而数据的大小是不固定的,所以数据的大小并不一定是缓存区大小的整数倍,但是当缓存区的数据没有大小没有超过8K的时候,数据都是存放在缓冲区而不会立即发送到客户端,当Servlet执行结束后,服务器才会去刷新流,它是不会在自动的把体内的数据刷新到硬盘或者客户端浏览器上的,此时这就需要程序员进行手动的操作,提醒缓存区即使没有存满数据,也应该把仅有的数据搬运走,这个操作称为刷新,也就是response.getWriter.flush()方法,或者是response.flushBuffer();
所以为了防止数据的流失,刷新的作用是非常重要的。它会把一些在缓冲区没有写入到内存的数据强制输出,并且把缓存区清空。
三:设置响应头
可以使用response的setHeader()方法来设置响应头,并且该响应头最终会发送给客户端浏览器。Response.setHeader(“context-Type”,”text/html;charest = utf-8”);
Response.setHeader(“refresh”,”5;URL = Http://www.itcast.cn”);5秒后跳转到传智播客的主页。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值