Response响应正文,request和response就像一对不分家的小情侣,总是成对的出现。今天就详细解释request和response到底是什么。
Response是一个Servlet.Service();方法的一个参数,类型是javax.Servlet.http.HttpServletResponse.
当浏览器发送一个请求,当服务器接受之后,就会创建一个request和response对象,然后把请求发送的数据封装到request对象中,然后把这两个对象都会传递给Service()方法,(//这个相当于把数据封装到一个容器中,而request对象就是这个容器,Service方法是可以直接从容器中把数据取出来的)还可以使用response响应给客户端,response中有响应流(分为字符和字节两种),下图为整个流程:
注:request和response都是一次性的,每次请求都会创建新的。并且由于资源的共享,前一次的访问会影响下一次的访问,所以说这个资源的共享是有风险的。
一: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 ,使用的范围广。所以为了防止数据的流失,刷新的作用是非常重要的。它会把一些在缓冲区没有写入到内存的数据强制输出,并且把缓存区清空。
三:设置响应头
可以使用response的setHeader()方法来设置响应头,并且该响应头最终会发送给客户端浏览器。Response.setHeader(“context-Type”,”text/html;charest = utf-8”);
Response.setHeader(“refresh”,”5;URL = Http://www.itcast.cn”);5秒后跳转到传智播客的主页。