Response
1.response简介:
Response是表示HTTP相应的对象
在服务器调用service方法处理请求之前,服务器会创建出代表Http相应的对象,在service方法处理请求的过程中,如果有任何数据要发送个浏览器,可以将数据先写入到response缓冲区中,等service方法执行完后,请求再次回到服务器,由服务器从缓冲区中获取数据,按照HTTP协议的格式发送给浏览器。
2.response的继承关系
ServletResponse接口 定义了一个response应该具有的功能
|----HttpServletResponse接口 继承了ServletResponse接口,并且添加了部分和Http协议相关的方法
|----xxxx Response对象
3.Response常用方法
状态行
若干响应头
相应实体内容
设置状态码的方法
setStatus(int statues)
设置响应头的方法
setHeader(String name,String value)
设置响应实体内容的方法
response.getWriter().write();
getOutPutStream();
4.Response功能
4.1向客户端浏览器发送数据
getOutPutStream();
getWriter()
注:这个流不需要关闭,服务器会自动关闭
这两个流是指向response缓冲区的,而不是指向浏览器
4.2实现请求重定向
重定向可以实现资源的跳转,和请求转发不同的是,重定向可以实现在不同的web应用和不同的虚拟主机之间进行跳转
实现重定向:
(1)response.setStatus(302);
response.setHeader("location(虚拟主机的名称)“,”所跳转的资源路径");
(2)response.sendRedirect(String str);
重定向特点:
(1)两次请求,两次响应
(2)重定向前后的两个资源中的Request对象不是同一个
(3)重定向前后地址栏地址会发生变化
(4)重定向既可以实现同一个web应用内部的资源跳转,也可以实现不同的web应用或者不同的虚拟主机之间的资源跳转
4.3实现定时刷新
通过Refresh响应头可以实现在多少秒之后跳转到指定的资源
代码实现:
response.setHeader("Refresh","3;url=/Servlet/index.jsp");
定时刷新特点:
(1)两次请求,两次响应
(2)重定向前后的两个资源中的Request对象不是同一个
(3)重定向前后地址栏地址会发生变化
(4)重定向既可以实现同一个web应用内部的资源跳转,也可以实现不同的web应用或者不同的虚拟主机之间的资源跳转
(5)和重定向不同的是,定时刷新是在指定多少秒之后,才会进行跳转,在跳转之前,会有一段时间的间隔,我们可以提示用户3秒之后将会跳转到主页。
5.请求转发、重定向、定时刷新分别在什么情况下使用:
(1)若果是同一个web应用内部资源跳转,三种方式都可以,具体使用哪一种
(a)若果希望跳转之后地址栏地址不会发生变化,这里只能使用请求转发
(b)如果希望在跳转之后地址栏地址会发生变化,这里可以使用重定向或者定时刷新
(c)如果在跳转的过程中,希望带着数据到目的地,这里只能使用请求转发
(d)如果没有声明别的需求,仅仅是做一个跳转,推荐使用转发,因为转发是一次请求,可以减少访问服务器的次数,减少服务器压力!!!!!!
(2)如果是不同的WEB应用之间的资源的跳转,只能使用重定向和定时刷新,具体使用哪一种:
(a)重定向是立即跳转,中间没有时间间隔,而定时刷新,可以指定多少秒之后再进行跳转,在跳转之前,还可以发送响应到客户端,并维系一段时间。
(b)如果没有什么特殊的需求,两种方式都可以。