HTTP协议:
  1. 响应消息:服务器端发送给客户端的数据
    * 数据格式:
      1. 响应行
        1. 组成:协议/版本 响应状态码 状态码描述
        2. 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。
          1. 状态码都是3位数字
          2. 分类:
            1. 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
            2. 2xx:成功。代表:200
            3. 3xx:重定向。代表:302(重定向),304(访问缓存)
            4. 4xx:客户端错误。
            * 代表:
              * 404(请求路径没有对应的资源)
              * 405:请求方式没有对应的doXxx方法
            5. 5xx:服务器端错误。代表:500(服务器内部出现异常)

  2. 响应头:
    1. 格式:头名称: 值
    2. 常见的响应头:
      1. Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
      2. Content-disposition:服务器告诉客户端以什么格式打开响应体数据
        * 值:  in-line:默认值,在当前页面内打开
               attachment;filename=xxx:以附件形式打开响应体。文件下载
  3. 响应空行
  4. 响应体:传输的数据

  * 响应字符串格式
    HTTP/1.1 200 OK
    Content-Type: text/html;charset=UTF-8
    Content-Length: 101
    Date: Wed, 06 Jun 2018 07:08:42 GMT
    (空行)
    <html>
    <head>
      <title>$Title$</title>
    </head>
    <body>
      hello , response
    </body>
    </html>

Response对象
  * 功能:设置响应消息
    1. 设置响应行
      1. 格式:HTTP/1.1 200 ok
      2. 设置状态码:setStatus(int sc)
    2. 设置响应头:setHeader(String name, String value)
    3. 设置响应体:

  * 使用步骤:
    1. 获取输出流
      * 字符输出流:PrintWriter getWriter()

      * 字节输出流:ServletOutputStream getOutputStream()

    2. 使用输出流,将数据输出到客户端浏览器

  * 案例:
    1. 完成重定向
      * 重定向:资源跳转的方式
      * 代码实现:
        //1. 设置状态码为302
          response.setStatus(302);
        //2.设置响应头location
          response.setHeader("location","/day15/responseDemo2");

        //简单的重定向方法
          response.sendRedirect("/day15/responseDemo2");

      * forward 和  redirect 区别

        * 重定向的特点:redirect
           1. 地址栏发生变化
           2. 重定向可以访问其他站点(服务器)的资源
           3. 重定向是两次请求。不能使用request对象来共享数据

        * 转发的特点:forward
           1. 转发地址栏路径不变
           2. 转发只能访问当前服务器下的资源
           3. 转发是一次请求,可以使用request对象来共享数据

      * 路径写法:
        1. 路径分类
          1. 相对路径:通过相对路径不可以确定唯一资源
            * 如:./index.html
            * 不以/开头,以.开头路径

            * 规则:找到当前资源和目标资源之间的相对位置关系
              * ./:当前目录
              * ../:后退一级目录

          2. 绝对路径:通过绝对路径可以确定唯一资源
            * 如:http://localhost/day15/responseDemo2 /day15/responseDemo2
              * 以/开头的路径

            * 规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出
              * 给客户端浏览器使用:需要加虚拟目录(项目的访问路径)
                * 建议虚拟目录动态获取:request.getContextPath()
                * <a> , <form> 重定向(redirect)...
              * 给服务器使用:不需要加虚拟目录
                * 转发路径(forward)

    2. 服务器输出字符数据到浏览器
      * 步骤:
        1. 获取字符输出流
        2. 输出数据

      * 注意:
        * 乱码问题:

           

          1. PrintWriter pw = response.getWriter();获取的流的默认编码是ISO-8859-1
          2. 设置该流的默认编码
          3. 告诉浏览器响应体使用的编码

          //简单的形式,设置编码,是在获取流之前设置
          response.setContentType("text/html;charset=utf-8");

    3. 服务器输出字节数据到浏览器
      * 步骤:
        1. 获取字节输出流
        2. 输出数据

    4. 验证码(点击查看相关代码)

      1. 本质:图片
      2. 目的:防止恶意表单注册

Response知识点小结的更多相关文章

  1. C++重要知识点小结---3

    C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...

  2. C++重要知识点小结---2

    C++重要知识点小结--1 :http://www.cnblogs.com/heyonggang/p/3246631.html 1.C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继 ...

  3. React及Nextjs相关知识点小结

    React及Nextjs知识点小结 函数式组件和类组件区别是什么 1.函数式组件是用于创建无状态的组件,组件不会被实例化,无法访问this中的对象,无法访问生命周期方法,是无副作用的,相比于类组件函数 ...

  4. 【SpringBoot MQ 系列】RabbitMq 核心知识点小结

    [MQ 系列]RabbitMq 核心知识点小结 以下内容,部分取材于官方教程,部分来源网络博主的分享,如有兴趣了解更多详细的知识点,可以在本文最后的文章列表中获取原地址 RabbitMQ 是一个基于 ...

  5. SpringBoot 系列教程之事务隔离级别知识点小结

    SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...

  6. disruptor笔记之四:事件消费知识点小结

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. promise知识点小结

    断断续续学习es6也有一段时间了,趁着开学空闲对知识点做一些小结. 为什么使用promise 谈到Promise,我们知道,这是社区较理想的异步编程解决方案.想要掌握promise,我们首先要知道其提 ...

  8. shell知识点小结

    目录 引言 shell中的数组 数组的定义 数组的使用 实际的例子 shell中大小的比较 shell中的括号 shell中函数的定义 杂项知识点 字符串转数组 常用判断标志 linux后台运行相关 ...

  9. CSharp 相关知识点小结

    1.JS获取iframe下面的内容document.getElementById('IFRAME1').contentDocument; 2.dialog 弹出层,定位:postion:'bottom ...

随机推荐

  1. 学习Spring-Data-Jpa(十)---注解式方法查询之@Query、@Modifying与派生delete

    1.@Query 对于少量的查询,使用@NamedQuery在实体上声明查询是一种有效的办法,并且可以很好的工作.由于查询本身绑定到执行它们的java方法,实际上可以通过Spring-Data-Jpa ...

  2. LOJ P10018 数的划分 题解

    每日一题 day52 打卡 Analysis 这道题直接搜索会TLE到**,但我们发现有很多没有用的状态可以删去,比如 1,1,5; 1,5,1; 5,1,1; 所以很容易想到一个优化:按不下降的顺序 ...

  3. S1_搭建分布式OpenStack集群_09 cinder 控制节点配置

    一.创建数据库创建数据库以及用户:# mysql -uroot -p12345678MariaDB [(none)]> CREATE DATABASE cinder;MariaDB [(none ...

  4. High scalability with Fanout and Fastly

    转自:http://blog.fanout.io/2017/11/15/high-scalability-fanout-fastly/ Fanout Cloud is for high scale d ...

  5. 洛谷 P2421 [NOI2002]荒岛野人

    题目描述 又是一道扩欧的题. 要求一个最小的m使得 Ci+Pi*x≡Cj+Pj*x mod m(i!=j) 在x在第i个人和第j个人的有生之年无解. 也就是 (Pi-Pj)*x+m*y=Cj-Ci 在 ...

  6. Codevs 1305 Freda的道路(矩阵乘法 DP优化)

    1305 Freda的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description Freda要到Rainbow的城堡去玩了.我们可以认 ...

  7. 二八法则(The 80/20 Principle)

    二八法则的定义:在任何一组事物中,最重要的只占其中一小部分,约20%,其余80%尽管占多数,却是次要的. 二八法则的例子:社会上20%的人占有80%的社会财富 20%的工厂有80%的产出 80%的利润 ...

  8. Zotero使用教程(2)-数据备份

    小书匠 这篇文章的目标是让你无论是 换系统,重新安装zotero等都可以还原回你的文献库,而且整个过程基本是自动完成的. 这部分解决下面的两种情况: 1.zotero有自己既定的一套存储方式,不是一般 ...

  9. vue-cli使用笔记

    安装nodejs 安装vue-clinpm install -g vue-cli 使用vue-cli初始化项目vue init webpack my-project 进到目录cd my-project ...

  10. mysql regexp 表达式

    mysql> select * from test; +----+----------+-------+-----------+ | id | name | score | subject | ...