服务器处理请求的流程:
  服务器每次收到请求时,都会为这个请求开辟一个新的线程。
  服务器会把客户端的请求数据封装到request对象中,request就是请求数据的载体!(袋子)
  服务器还会创建response对象,这个对象与客户端连接在一起,它可以用来向客户端发送响应。(手机)

------------------

response:其类型为HttpServletResponse
     ServletResponse-->与协议无关的类型
     HttpServletResponse-->与http协议相关的类型

  回忆一下http协议!http协议中响应的内容包含哪些东西呢?
  * 状态码:200表示成功、302表示重定向、404表示客户端错(访问的资源不存在)、500表示服务器端错
    > sendError(int sc) --> 发送错误状态码,例如404、500
    > sendError(int sc, String msg) --> 也是发送错误状态码,还可以带一个错误信息!
    > setStatus(int sc) --> 发送成功的状态码,可以用来发送302
    案例:

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
               response.sendError(404,".............");
             }

   > 发送404
  * 响应头:Content-Type、Refresh、Location等等
    头就是一个键值对!可能会存在一个头(一个名称,一个值),也可能会存在一个头(一个名称,多个值!)
    > *****setHeader(String name, String value):适用于单值的响应头,例如:response.setHeader("aaa", "AAA");
    > addHeader(String name, String value):适用于多值的响应头
        response.addHeader("aaa", "A");
        response.addHeader("aaa", "AA");
        response.addHeader("aaa", "AAA");
    > setIntHeader(String name, int value)适用于单值的int类型的响应头
         response.setIntHeader("Content-Length", 888);//设置长度
    >addIntHeader(String name, int value):适用于多值的int类型的响应头
    > setDateHeader(String name, long value)适用于单值的毫秒类型的响应头
                response.setDateHeader("expires", 1000 * 60 * 60 * 24);//过期时间24小时
   > addDateHeader(String name, long value):适用于多值的毫秒类型的响应头
    案例:

    > 发送302,设置Location头,完成重定向!

代码:

-*****************************************************************************

快捷的方法重定向:

  response.sendRedirect("http://www.baidu.com");
  > 定时刷新:设置Refresh头,你可以把它理解成,定时重定向!

    代码:

      

 

其中:response.setHeader("Refresh", "5;URL=/day10_1/Eservlet");  意思是5秒后跳转到URL=/day10_1/Eservlet"

   > 禁用浏览器缓存:Cache-Control、pragma、expires:过期

代码;

         
    > <meta>标签可以代替响应头:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  * 响应体:通常是html、也可以是图片!
    >     response的两个流:
      <> ServletOutputStream,用来向客户端发送字节数据。        ServletOutputStream out = resopnse.getOutputStream();
      <> PrintWriter,用来向客户端发送字符数据!需要设置编码。   PrintWriter writer = response.getWriter();
      <> 两个流不能同时使用!否则让出现异常


    案例:
    > 使用PrintWriter发送字符数据

         

    > 使用ServletOutputStream发送字节数据(图片)


  * 重定向:设置302,设置Location!其中变化的只有Location,所以java提供了一个快捷方法,完成重定向!
   > sendRedirect(String location)方法

web之Respone的更多相关文章

  1. day10(java web之request&respone&访问路径&编码问题)

    day10 请求响应流程图 response response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletR ...

  2. Web利器---fidder使用

    fiddler工具,主要看中其三点优势:1.功能强大,其他工具有的功能它也有,其他工具没有的功能它也有,支持http,https,ftp等协议:2.完全免费,长期免费.3.所有的浏览器可以使用,所有的 ...

  3. Node.js高级编程读书笔记 - 4 构建Web应用程序

    Outline 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.2 用Express.js创建Web应用程序 5.3 使用Socket.IO创建通用的实时Web应用程序 5 构建Web应 ...

  4. 【概念笔记】JavaEE - web part2

    IT`huhui前言录 续JavaEE - web part1 链接http://www.cnblogs.com/ithuhui/p/5930745.html, 持续修改更新. Cookie 1. 定 ...

  5. ASP.NET中的Request和Respone对象的使用

            前台<body>中的表单代码: ASP.NET对象有如下几个: 本文从“asp.net中通过from表单submit提交到后台的实例”来谈谈Request和Response ...

  6. day04 Java Web 开发入门

    day04 Java Web 开发入门 1. web 开发相关介绍 2. web 服务器 3. Tomcat服务器启动的问题 4. Tomcat目录结构 5. Web应用程序(虚拟目录映射,缺省web ...

  7. python 全栈开发,Day66(web应用,http协议简介,web框架)

    一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...

  8. 【转】HTTP学习---Web 缓存

    [原文]https://www.toutiao.com/i6592743068623962632/ 1. 前端缓存概述 前端缓存主要是分为HTTP缓存和浏览器缓存.其中HTTP缓存是在HTTP请求传输 ...

  9. Java Web 从入门到精通(明日科技)

    目录结构: 第一章:Java Web 应用开发概述 第二章:html与css网页开发基础 第三章:JavaScript脚本语言 第四章:搭建开发环境 第五章:JSP语言基础 第六章:JSP内置对象 第 ...

随机推荐

  1. python书籍推荐

    python书籍推荐列表: 技巧:关于如何在windows平台上行获取目录下的文件名称.(我的python书籍的位置E:\Python\Python_book) D:\>e: E:\>cd ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(82)-Easyui Datagrid批量操作(编辑,删除,添加)

    前言 有时候我们的后台系统表单比较复杂,做过进销存或者一些销售订单的都应该有过感觉 虽然Easyui Datagrid提供了行内编辑,但是不够灵活,但是我们稍微修改一下来达到批量编辑,批量删除,批量添 ...

  3. python 库安装笔记

    python 库安装笔记 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-2-22 友情提示 安装python库的过程中 ...

  4. oracle系列笔记(2)---多表查询

    多表查询     这篇文章主要讲四点: (1)oracle多表查询    (2)SQL99标准的连接查询   (3)子查询     (4)分级查询 oracle多表查询有两种方式,一种是oracle所 ...

  5. Javascript高级程序设计——语法、关键字、保留字、变量、数据类型

    1.了解基本语法,JS大小写区分.注释风格.什么是严格模式等. 2.知道ES3和ES5的关键字和保留字大概有哪些,如果使用关键字会报什么错,使用保留字决定于特定浏览器引擎. 3.全局变量和局部变量的定 ...

  6. 每天一个linux命令(32)--/etc/group文件详解

    Linux /etc/group 文件与 /etc/passwd 和/etc/shadow 文件都是有关于系统管理员对用户和用户组管理时相关的文件.Linux /etc/group 文件是有关于系统管 ...

  7. Ubuntu 小白安装血泪史

    介绍: 新入手的Ubuntu:版本 命令行模式下 出现 ♦♦♦♦ 图形界面无法获取最高权限:gurb.cfg 无法再图形界面下修改 安装类型: 1.安装Ubuntu,与Window 7共存 2.清除整 ...

  8. 第27篇 重复造轮子---模拟IIS服务器

    在写程序的时候,重复造轮子是程序员的一个大忌,很多人对重复造轮子持有反对的态度,但是我觉得这个造轮子的过程,是对于现有的知识的一个深入的探索的过程,虽然我们不可能把轮子造的那么的完善,对于现在有的东西 ...

  9. HTML5之地理位置

    在HTML5中,为window.navigator对象新增了一个geolocation属性,可以使用Geolocation API来对该属性进行访问,该属性存在以下三个方法. 获取当前地理位置 voi ...

  10. MySQL优化四(优化表结构)

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...