重温Servlet学习笔记--response对象

小编 2026-07-13 阅读:1198 评论:0
在用户浏览网页时,服务器对于客户端浏览器做出的响应被封装成一个HttpServletRespon...

在用户浏览网页时,服务器对于客户端浏览器做出的响应被封装成一个HttpServletResponse对象,要对浏览器操作只需要操作这个response对象即可.response的功能分类及介绍:

  • 响应正文

  response是响应对象.向客户端输出响应正文(响应体)可以使用response的响应流,response提供了两个响应流对象:

  1. PrintWriter printWriter = response.getWriter();  只能写字符流,如输出text信息
  2. ServletOutputStream outputStream = response.getOutputStream(); 可以写字节流,如生成图片验证码,两个流不能同时使用
  • 发送状态码

  先回忆一下常见的状态码:200表示成功,302表示重定向,404表示客户端错误(访问资源不存在,以4开头都是客户端错误),500表示服务器端错误(以5开头都是服务器端错误),详细状态吗参考这个链接:http://tool.oschina.net/commons?type=5,

  1.   sendError(int sc) :发送错误状态码,类如404,500.
  2.   sendError(int sc,String msg):同为发送错误状态码,还可以加一条字符串描述信息.
  3.   setStatus(int sc): 发送成功的状态码,如302
  •  向浏览器发送响应头

    响应头是一个键值对,可能是单值(一个名称,一个值),也可能是多值(一个名称,多个值).

  1.  response.setHeader(“content-type”, “text/html;charset=utf-8”):设置content-type响应头,该头的作用是告诉浏览器响应内容为html类型,编码为utf-8。而且同时会设置response的字符流编码为utf-8,即response.setCharaceterEncoding(“utf-8”).
  2. response.setHeader("Refresh","5; URL=http://www.baidu.com"):5秒后自动跳转到百度主页
        response.setHeader("aaa", "AAA");    //设置单值的响应头    response.addHeader("bbb","B");        //设置多值的响应头    response.addHeader("bbb","BB");    response.addHeader("bbb","BBB");

     

  • 完成重定向(sendRedirect)

    首先看一下什么是重定向,这是网友的一个回答:

重定向过程:客户浏览器发送http请求——》web服务器接受后发送302状态码响应及对应新的location给客户浏览器——》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址——》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

       /**         * 重定向         * 1:设置locaiton         * 2:发送302状态码         */        response.setHeader("location", "/tools/IServlet");        response.setStatus(302);        //上面两句相当于下面这一句        response.sendRedirect("/tools/IServlet");

    重定向小结:

  1.   重定向是两次请求;
  2.   重定向的URL可以是其他应用,不局限于当前应用;
  3.   重定向的响应头为302,并且必须要有Location响应头;
  4.   重定向就不要再使用response.getWriter()或response.getOutputStream()输出数据,不然可能会出现异常;
  • Refresh定时刷新(可以看成一种延时的重定向)

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

  • 禁用浏览器缓存
        response.setHeader("Cache-Control", "no-cache");    response.setHeader("pragma", "no-cache");    response.setHeader("expires", "-1");

    我们在新建一个jsp页面中可以看到在head标签中有这样的代码:

       <meta http-equiv="pragma" content="no-cache">   <meta http-equiv="cache-control" content="no-cache">   <meta http-equiv="expires" content="0">    

    它实现的功能也是禁用浏览器缓存,只是一个是在servlet中一个是在jsp页面中.meta标签就是用来设置响应头的内容的.

 

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表