ServletResponse为将响应发送到客户端的对象;Servlet 容器创建 ServletResponse 对象,并将它作为参数传递给Servlet的service 方法,如下图 ;

    

    HttpServletResponse对象封装了向客户端发送数据、发送响应头,发送响应状态码的方法;

    • 常用API

void setStatus(int sc) 设置此响应的状态代码

void setHeader(String name, String value)  用给定名称和值设置响应头
      • 使用步骤

      1. 创建ResponseServlet;

      2. 调用setHeader,设置消息头;

      3. 调用setStatus,设置响应状态码;

    • 常见响应头    

  

location:
重定向操作:通常告知浏览器马上向该地址发送请求,通常和响应码302一起使用; content-encoding:
设置当前数据的压缩格式,告知浏览器以何种压缩格式解压数据; content-disposition:
通知浏览器以何种方式获取数据(直接解析数据(网页,图片文本),或者以附件方式(下载文件); content-type:
实体头部用于指示资源的MIME类型(MIME类型:用于提示当前文件的媒体类型,例如图片——(image/png)、音频——(audio/ogg);
它的作用与传统上Windows上的文件扩展名相同。该名称源于最初用于电子邮件的MIME标准); content-type常用的设置一般都是——“text/html;charset=utf-8”,其中“text/html;”——设置浏览器以文件格式解析数据;“charset=utf-8”——响应数据的编码表;

  

  重定向使用:

    重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求,是客户端行为;
    

    实现步骤:

       1.response.setStatus 设置状态码

       2. response.setHeader 设置响应头

       3. response.sendRedirect 重定向

    

    重定向代码实现1:

public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

          //响应码为200表示响应成功,而响应码为302表示重定向;所以完成重定向的第一步就是设置响应码为302;
response.setStatus(302);

          //因为重定向是通知浏览器再第二个请求,所以浏览器需要知道第二个请求的URL,所以完成重定向的第二步是设置Location头,指定第二个请求的URL地址
response.setHeader("Location", "http://localhost:8080/hello/BServlet"); }
}

  

    重定向代码实现2:

public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.sendRedirect("/hello/BServlet");

	}

}

  

    特点:

      1.重定向是客户端行为;
      2.重定向是浏览器做了至少两次的访问请求的;
      3.重定向浏览器地址改变;
      4.重定向2次跳转之间传输的信息会丢失(request范围),不能使用request域对象进行数据共享;
      5.重定向可以指向任何的资源,包括当前应用程序中的其他资源,同一个站点上的其他应用程序中的资源,其他站点的资源;
      注意:传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录 ;

 

最新文章

  1. JSF primefaces dataTable paginator 表格分页 问题
  2. Linux下搭建个人网站
  3. 简单的SpringMVC的测试项目----跟struts2对比着学习
  4. Linq&Lumda---LINQ to DataSet的DataTable操作
  5. SWT常用组件(转)
  6. Apache启用性能优化——启用Gzip,JS压缩
  7. NSOutputStream\NSInputStream
  8. jQuery 遍历ul li 添加 移除
  9. 原生javascript与jquery 的比较
  10. Jquery 获取上传文件大小
  11. Java入门(3)—— 数组
  12. maven项目部署对Oracle jar包的处理
  13. [LeetCode] Best Time to Buy and Sell Stock with Transaction Fee 买股票的最佳时间含交易费
  14. ORA-01466: 无法读取数据 - 表定义已更改
  15. 【叶问】 MySQL常用的sql调优手段或工具有哪些
  16. 返回JSON格式(二十五)
  17. Javascript强制转换
  18. Gitolite 权限控制
  19. nodepad++ 正则 替换
  20. activiti 临时笔记mark

热门文章

  1. 学习使用PSTools工具中的psping
  2. 记一次Java获取本地摄像头(基于OpenCV)
  3. session安全&&CBC字符反转攻击&&hash拓展攻击
  4. PHP图片压缩类,高清无损直接用就ok啦
  5. Kafka和RocketMQ底层存储之那些你不知道的事
  6. 单元测试框架怎么搭?快来看看新版Junit5的这些神奇之处吧!
  7. Redis 4.0.2分布式锁的Java实现
  8. Spring中用@DependsOn注解控制Bean的创建顺序
  9. Matlab中fspecial的用法
  10. 【题解】[JSOI2007]字符加密