服务器处理请求的流程:
  服务器每次收到请求时,都会为这个请求开辟一个新的线程。
  服务器会把客户端的请求数据封装到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. java中关于转义字符的一个bug

    在java中,你可以定义 char c = '\u4f60'; char m = '\u0045'; char e = '\u554a'; 这样的字面量,例如: System.out.println( ...

  2. C#表达式和语句

    表达式由操作数 (operand) 和运算符 (operator) 构成.表达式的运算符指示对操作数适用什么样的运算.运算符的示例包括+.-.*./ 和 new.操作数的示例包括文本.字段.局部变量和 ...

  3. oracle用户创建,连接,删除

    绕过管理员身份进行登录: sqlplus /nolog conn /as sysdba 如何创建一个普通用户: 1.create user jsd1412 identified by jsd1412 ...

  4. 四色GDOI&GDOI2015滚粗记

    好吧自己太弱写不了什么四色NOI只能学学别人写个四色GDOI了...首先自己还是太弱所以就被学校卡了个名额就进不了省队了QAQ.自己GDOI觉得考得不错可是NOIP毕竟少了人家5分根本追不上去好不QA ...

  5. 【前端】:jQuery下

    前言: 接上一篇博客: [前端]:jQuery上 一.jQuery属性操作 ① attr(设置或返回自定义属性值) input.select.textarea框中的内容, 可以通过attr来获取,但是 ...

  6. 粗谈shell脚本风格

    注意:此风格并非官方版本,为个人在编写和维护脚本程序时总结出来的民间版本.0. 开头:除去开头的#!/bin/bash,最前面的就是脚本描述注释了,视个人喜好而定,例如: ############## ...

  7. 打造“黑客“手机--Kali Nethunter

    从三月份开始,继续更新技术文章.一个月没有更新技术文章了,这一个月有一部分时间是在休息,另一部分时间是在学习汇编和操作系统,沉淀底层和逆向方面的技术. 今年年初,为了玩一下 kali NetHunte ...

  8. 代写编程的作业、笔试题、课程设计,包括但不限于C/C++/Python

    代写编程作业/笔试题/课程设计,包括但不限于C/C++/Python 先写代码再给钱,不要任何定金!价钱公道,具体见图,诚信第一! (截止2016-11-22已接12单,顺利完成!后文有成功交付的聊天 ...

  9. oracle数据库命令-持续更新

    一.系统命令 登录 dba用户命令 sqlplus / as sysdba 2. 用户命令 删除用户 DROP USER **** CASCADE; DROP SCHEMA **** CASCADE; ...

  10. nodejs学习一

    总觉得一个前端,不懂得一点后端的服务,弱弱的没有存在感,所以利用现在好好 学学有关nodejs 首先是windows上进行nodejs的全局安装 32 位安装包下载地址 : https://nodej ...