应答对象response

- 与request对象对应,对用户的请求做出动态响应,向客户端输出信息。(与request的不同点:request对象封装了客户端向服务器发出的HTTP请求中的所有细节信息,包括
HTTP头信息、系统信息、请求方式、请求参数)

- 封装了JSP产生的响应,发送到客户端。
- 动态响应通常包括如下3个
- 重定向网页
- 处理HTTP文件头(也称响应表头)
- 设置输出缓冲
重定向网页
response.sendRedirect("目标路径");
重定向与转发的不同地方
- 实现
转发:用request的getRequestDispatcher()方法得到ReuqestDispatcher对象,调用forward()方法
request.getRequestDispatcher("other.jsp").forward(request, response);重定向:调用response的sendRedirect()方法
response.sendRedirect("目标路径");
- 地址栏
- 转发不会显示出转向的地址,重定向会显示出地址
- 请求
- 重定向:提交两次请求 转发:提交一次请求
- 数据
- 重定向操作后,request与response消失,新建request与response对象,数据全部丢失,而session根据cookies中的session_id可以重新获取原页面的session。
- 原理

- 请求转发:
- 客户端打开check.jsp页面后,当代码执行到check.jsp中请求转发到success.jsp的代码后,服务器端在内部直接请求转发至succes.jsp页面,最后服务端向客户端发回响应显示success.jsp页面信息。
- 实际上是服务器内部控制权的转移,是由服务器端的请求,客户端并不知道是怎样转移的,因此客户端浏览器的地址不会显示所转向的地址。(也就是说第二次网页的跳转并不是客户端发起的请求)

- 重定向:
- 客户端打开check.jsp页面后,当代码执行到check.jsp中请求转发到success.jsp的代码后,服务器端向客户端发回响应(告诉客户端:你应该去找success.jsp页面),于是客户端再向服务器端发出request请求(请求Success.jps页面),最后服务器发回响应显示success.jsp页面信息。
- 是服务器告诉了客户端要转向那个地址,客户端再自己去请求转向的地址,因此会显示所转向的地址。(第一次打开页面,发出第一个request,服务器response回来,告诉客户端你应该去另一个网页,之后客户端再request另外一个网页。)
小结
- 转发使用getRequestDispatcher()方法,重定向使用的是sendRedirect();方法
- 转发:地址不变,重定向:地址改变、
- 转发是服务器行为,重定向是客户端行为
- 转发浏览器只做了一次访问请求,重定向是浏览器至少做了两次请求。
- 转发:request信息不会丢失,重定向会丢失。
处理HTTP文件头
设置响应表头:
setHeader(String name,String value)
禁用缓存(禁止浏览器的缓存)
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires","0");
设置页面自动刷新
response.setHeader("refresh","3"); //三秒后自动刷新
定时跳转网页
response.setHeader("refresh","10;URL=目标路径");//10秒后跳转
设置输出缓冲
response.setBufferSize(32); //缓冲区大小32KB
简介:通常情况下服务器要输出至客户端的内容不会直接写入客户端,而是先写入进一个输出缓冲区
缓冲区内容自动写入客户端的几种情况:
- jsp页面的输出信息已经全部写入缓冲区
- 缓冲区已满
- 再JSP页面中调用了response对象的flushBuffer()方法或out对象的flush()方法

版权声明:本文为weixin_42649617原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。