HttpServletResponse概述

1、请求相应流程

上面是简易流程图(直接把老师的图放在上面):

首先是客户端(浏览器)向服务器发出请求服务器接收到请求后,

(1)创建request对象:用来存放请求数据,创建response对象:用来向客户端响应的。

(2)调用Servlet的service方法将request和response两个对象作为参数传入。

(3)service方法通过request获取客户端数据,进行操作,然后通过response向客户端响应。

2、response对象概述

类型:javax.servlet.http.HttpServletResponse。客户端每次发出请求,服务器就会创建一个response对象,并传给service方法

response对象的四种功能:

(1)设置相应头

        可以使用response对象的setHeader()方法来设置响应头!使用该方法设置的响应头最终会发送给客户端浏览器!

        response.setHeader("content-type","text/html;charset=utf-8")

        response.setHeader("Refresh","5;URL=http://www.baidu.com") 5秒后自动跳转到百度

(2)设置发送状态码

  1. response.setContentType("text/html;charset=utf-8"):等同与调用response.setHeader(“content-type”, “text/html;charset=utf-8”);
  2. response.setCharacterEncoding(“utf-8”):设置字符响应流的字符编码为utf-8;
  3. response.setStatus(200):设置状态码;
  4. response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。

(3)设置响应正文

        response向客户端响应有两种响应流:字符响应流,字节响应流

          (1)PrintWriter out = response.getWriter():获取字符流;

           (2)ServletOutputStream out = response.getOutputStream():获取字节流;

              在一个请求中不能同时使用这两个流。不然会抛出IllegalStateException异常。

         字符编码:

                    在使用response.getWriter()时需要注意默认字符编码为ISO-8859-1,如果希望设置字符流的字符编码为utf-8,可以                使用 response.setCharaceterEncoding(“utf-8”)来设置。这样可以保证输出给客户端的字符都是使用UTF-8编码的!

                    但客户端浏览器并不知道响应数据是什么编码的!如果希望通知客户端使用UTF-8来解读响应数据,那么还是使用                   response.setContentType("text/html;charset=utf-8")方法比较好,因为这个方法不只会调用response.setCharaceterEncoding(“utf-8”),还会设置content-type响应头,客户端浏览器会使用content-type头来解读响应数据。

(4)重定向

        重定向是客户端请求一个地址,但是服务器通知客户端请求另一个地址。(客户端需要请求两次)

     

    请求过程:(1)设置响应码为302,在设置请求地址url:               

                            response.setStatus(302);

                             response.setHeader("Location", "http://www.baidu.com");

                           也可以使用response.sendRedirect("http://www.baidu.com");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值