javaweb HttpServletResponse对象

一response概述

        response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象,并传入给Servlet.service()方法。response对象是用来对客户端进行响应的,这说明在service()方法中使用response对象可以完成对客户端的响应工作。

二response对象的功能

        response对象的功能主要有以下四种

                设置响应正文;

                设置响应头信息;

                发送状态码;

                重定向;

        现分别做介绍:

        1设置响应正文

        response是响应对象,向客户端输出响应正文(响应体)可以使用response的响应流,repsonse一共提供了两个响应流对象:
                PrintWriter out = response.getWriter():获取字符流;
                ServletOutputStream out = response.getOutputStream():获取字节流;
        当然,如果响应正文内容为字符,那么使用response.getWriter(),如果响应内容是字节,例如下载时,那么可以使用response.getOutputStream()。对于什么样的响应内容都可以使用response.getOutputStream()。
        注意,在一个请求中,不能同时使用这两个流!也就是说,要么你使用repsonse.getWriter(),要么使用response.getOutputStream(),但不能同时使用这两个流。不然会抛出IllegalStateException异常。

        2设置响应头信息

        可以使用response的setHeader等方法来设置响应头,用这些方法设置的响应头会最终发送到客服端。一些方法如下:  

[java]  view plain  copy
  1. public boolean containsHeader(String name)  
  2.     返回一个 boolean 值,指示是否已经设置指定的响应头。   
  3.     name 头名称   
  4.         return 如果已经设置指定的响应头,则返回 true;否则返回 false   
  5.               
  6.        public void addDateHeader(String name, long date)  
  7.         用给定名称和日期值添加响应头。该日期根据距历元时间的毫秒数指定。此方法允许响应头有多个值。   
  8.         name 要设置的头的名称   
  9.         date 附加的日期值   
  10.   
  11.        public void setDateHeader(String name, long date)  
  12.         用给定名称和日期值设置响应头。该日期根据距历元时间的毫秒数指定。如果已经设置了头,则新值将重写以前的值。containsHeader方法可用于测试在设置其值之前头是否存在。   
  13.         name 要设置的头的名称   
  14.         date 指定的日期值   
  15.   
  16.        public void addHeader(String name, String value)  
  17.         用给定名称和值添加响应头。此方法允许响应头有多个值。  
  18.         name 头的名称   
  19.         value 附加的头值,  
  20.   
  21.        public void setHeader(String name, String value)  
  22.         用给定名称和值设置响应头。如果已经设置了头,则新值将重写以前的值。containsHeader方法可用于测试在设置其值之前头是否存在。   
  23.         name 头的名称   
  24.         value 头值,  
  25.   
  26.       public void addIntHeader(String name, int value)  
  27.         用给定名称和整数值添加响应头。此方法允许响应头有多个值。   
  28.         name 头的名称   
  29.         value 指定的整数值   
  30.   
  31.        public void setIntHeader(String name, int value)  
  32.         用给定名称和整数值设置响应头。如果已经设置了头,则新值将重写以前的值。containsHeader方法可用于测试在设置其值之前头是否存在。  
  33.         name 头的名称   
  34.         value 指定的整数值   

        3发送状态码

[java]  view plain  copy
  1. public void setStatus(int sc)  
  2.     设置此响应的状态代码。此方法用于设置没有错误时的返回状态代码(例如状态代码 SC_OK 或 SC_MOVED_TEMPORARILY)。如果有错误,并且调用者希望调用 Web 应用程序中定义的错误页面,则应改用 sendError 方法。   
  3.         容器清除缓冲区,设置 Location 头,并保留 cookie 和其他头。   
  4.             sc 状态代码   
  5.   
  6.     public void sendError(int sc) throws java.io.IOException  
  7.         使用指定状态代码并清除缓冲区将错误响应发送到客户端。   
  8.         如果已经提交了响应,则此方法抛出 IllegalStateException。使用此方法后,响应应该被视为已经被提交,不能再写入。   
  9.         sc 错误状态代码   
  10.         Throws java.io.IOException: 如果发生输入或输出异常   
  11.         Throws IllegalStateException: 如果在此方法调用之前提交了响应   

        4重定向

        4.1什么是重定向

        当你访问http://www.sun.com时,你会发现浏览器地址栏中的URL会变http://www.oracle.com/us/sun/index.htm,这就是重定向了。
        重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求。

        4.2完成重定向

        响应码为200表示响应成功,而响应码为302表示重定向。所以完成重定向的第一步就是设置响应码为302。因为重定向是通知浏览器再第二个请求,所以浏览器需要知道第二个请求的URL,所以完成重定向的第二步是设Location头,指定第二个请求的URL地址。

        4.3便捷的重定向方式

        response.sendRedirect("请求重定向的地址");

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值