在用户浏览网页时,服务器对于客户端浏览器做出的响应被封装成一个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标签就是用来设置响应头的内容的.

重温Servlet学习笔记--response对象的更多相关文章

  1. 重温Servlet学习笔记--session对象

    session的类型是属于HttpSession,HttpSession是由javaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端. HttpSession是servle ...

  2. 重温Servlet学习笔记--Cookie对象

    首先要了解cookie必须得先了解http协议,,Cookie是http协议指定的,先由服务器保存cookie到浏览器,在下次浏览器请求服务器时把上次请求得到的cookie归还给服务器,cookie以 ...

  3. 重温Servlet学习笔记--request对象

    request和response是一对搭档,一个负责请求一个负责响应,都是Servlet.service()方法的参数,response的知识点前面梳理过了,这里只说一下request,在客户端发出每 ...

  4. 重温Servlet学习笔记--servletContext对象

    一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...

  5. 重温Servlet学习笔记--编码问题

    在说编码问题之前,首先先了解一下常见的字符编码: ISO-8859-1:  拉丁编码,不支持中文 gbk,gb2312,gb18030:系统默认编码,是中国的国标码 utf-8: 支持几乎所有语言的编 ...

  6. Servlet学习笔记(四)

    目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...

  7. Servlet学习笔记(三)

    目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...

  8. Servlet学习笔记(二)

    目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...

  9. # jsp及servlet学习笔记

    目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...

随机推荐

  1. Reversing Linked List

    原题连接:https://www.patest.cn/contests/pat-a-practise/1074 题目: Given a constant K and a singly linked l ...

  2. 八大排序算法Java

    目录(?)[-] 概述 插入排序直接插入排序Straight Insertion Sort 插入排序希尔排序Shells Sort 选择排序简单选择排序Simple Selection Sort 选择 ...

  3. nginx-(/usr/local/nginx)配置编译

    ./configure \ --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr ...

  4. 关于Java8函数式编程你需要了解的几点

    函数式编程与面向对象的设计方法在思路和手段上都各有千秋,在这里,我将简要介绍一下函数式编程与面向对象相比的一些特点和差异. 函数作为一等公民 在理解函数作为一等公民这句话时,让我们先来看一下一种非常常 ...

  5. 微软借力.NET开源跨平台支持,布局物联网平台开发

    今天科技类最大的新闻,莫过于微软宣布.NET开发框架开源计划..NET 开源,集成 Clang 和 LLVM 并且自带 Android 模拟器,这意味着 Visual Studio 这个当下最好没有之 ...

  6. ASP.NET Core中使用URL重写

    ASP.NET Core 1.1 Preview 1 中新增了 URL Rewriting middleware ,终于可以进行 URL 重写了,实际使用体验一下. 首先要将 ASP.NET Core ...

  7. 剑指Offer面试题:23.二叉树中和为某一值的路径

    一.题目:二叉树中和为某一值的路径 题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.例如输入下图中二叉树和整数2 ...

  8. 大白话讲解Promise(三)搞懂jquery中的Promise

    前两篇我们讲了ES6中的Promise以及Promise/A+规范,在Promise的知识体系中,jquery当然是必不可少的一环,所以本篇就来讲讲jquery中的Promise,也就是我们所知道的D ...

  9. MySQL 游标

    概述 本章节介绍使用游标来批量进行表操作,包括批量添加索引.批量添加字段等.如果对存储过程.变量定义.预处理还不是很熟悉先阅读我前面写过的关于这三个概念的文章,只有先了解了这三个概念才能更好的理解这篇 ...

  10. SharpFileDB - a file database for small apps

    SharpFileDB - a file database for small apps 本文中文版在此处. I'm not an expert of database. Please feel fr ...