web之Respone

时间:2021-10-23 09:28:58

服务器处理请求的流程:
  服务器每次收到请求时,都会为这个请求开辟一个新的线程。
  服务器会把客户端的请求数据封装到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头,完成重定向!

web之Respone

代码:

web之Respone

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

web之Respone

快捷的方法重定向:

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

    代码:

       web之Respone

 

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

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

代码;

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

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

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

          web之Respone

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

web之Respone
  * 重定向:设置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&period;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&period;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&lpar;web应用&comma;http协议简介&comma;web框架&rpar;

    一.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. 一个漂亮的上传按钮input&lbrack;type&equals;file&rsqb;

    ;;} <div class="input-group xj-file xj-panel-top"> <span class="input-group- ...

  2. 关于jquery判断对象是否为空

    1. jquery对象分为两种,一种是dom对象,dom对象会自带一个length属性,所以这种情况: obj.length == 0 可以判断对象为空 2. jquery也可以自定义对象,如 var ...

  3. jQuery中的&dollar;&lpar;&quot&semi;&num;my&lowbar;id&quot&semi;&rpar;&period;html&lpar;&rpar;中一点要注意的

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXcAAAA3CAIAAAB4jZ1xAAAJdUlEQVR4nO2dPU/rPBTHn2/VoVMrXZ

  4. &lbrack;Cycle&period;js&rsqb; Customizing effects from the main function

    How can we show one string on the DOM, and a completely different string on Console log? This lesson ...

  5. Eclipse设置文字大小

    1,选择窗口,preference 2,general

  6. 业余草双因素认证(2FA)教程

    所谓认证(authentication)就是确认用户的身份,是网站登录必不可少的步骤.密码是最常见的认证方法,但是不安全,容易泄露和冒充.越来越多的地方,要求启用双因素认证(Two-factor au ...

  7. Shell script 传参数处理(默认变量)

    变量 含义 $0:shell脚本的名字: $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 "$*" :代表"$1c$2c$3 ...

  8. openstack网络基础:网络叠加模式VLAN、VxLAN、GRE

    什么是叠加网络1.一个数据包(或帧)封装在另一个数据包内;被封装的包转发到隧道端点后再被拆装.2.叠加网络就是使用这种所谓“包内之包”的技术安全地将一个网络隐藏在另一个 网络中,然后将网络区段进行迁移 ...

  9. Django跨域&lpar;前端跨域&rpar;

    前情回顾 在说今天的问题之前先来回顾一下有关Ajax的相关内容 Ajax的优缺点 AJAX使用Javascript技术向服务器发送异步请求: AJAX无须刷新整个页面: 因为服务器响应内容不再是整个页 ...

  10. Freemarker导出word的简单使用

    1.模板 username:${username} password:${password} <#list mylist as item> ${item.name!} ${item.pas ...