HTTP中的响应消息和请求消息一样,分成四部分

  1. 响应行——格式:协议/版本 状态码 状态码描述,比如:HTTP/1.1 200 OK
    关于状态码:
    ▶ 理解:服务器告诉客户端本次请求和响应的情况。
    ▶ 3位数字
    ▶ 分类:1xx(服务器接受客户端消息,但没接受完全,等待一会后发送1xx进行询问);
         2xx(成功);
         3xx(重定向。302重定向,304访问缓存)
         4xx(客户端错误。404路径没有对应资源,405请求方式没有对应的doXxx方法)
         5xx(服务器端错误)
  2. 响应头——格式:键值对。是服务器告诉客户端的信息。
    ▶ Content-Type:本次响应体数据格式以及编码格式。比如 text/html utf-8
    ▶ Content-disposition:以什么格式打开响应体数据(inline默认当前页面打开;attachment;filename=xxx 以附件形式打开响应体,文件下载)
  3. 响应空行
  4. 响应体:传输的数据。流的形式获取

response

response对象的功能

与request相比比较单一 ——— 设置相应信息:

  1. 设置相应行:setStatus(int sc),设置状态码
  2. 设置响应头:setHeader(String name, String value)
  3. 设置响应体:getWriter()返回PrintWriter / getOutputStream()返回ServletOutputStream

虽然用到的方法很少,但可以完成下面的强大功能 ↓

重定向

// 1.设置状态码为302
response.setStatus(302);
// 2.设置响应头location
response.setHeader("location", "/虚拟目录/资源路径");// 简单的重定向写法
response.sendRedirect("/虚拟目录/资源路径");// 极推荐写法 (虚拟目录是动态的)
response.sendRedirect(request.getContextPath() + "/资源路径");

转发和重定向都实现了资源的跳转

重定向(redirect)的特点:地址栏改变;可以访问其他站点(服务器)的资源;两次请求,因此不能使用request对象来共享数据

转发(forward)的特点:地址栏不变;只能访问当前服务器下的资源;一次请求,因此可以使用request对象来共享数据

其实,资源路径就是相对路径,虚拟目录就是绝对路径(的一部分)
 
重定向可以访问当前服务器之外的资源,因此必须写虚拟目录+资源路径——虚拟目录用来映射到服务器;
转发是在服务器内部的资源跳转,服务器已知,自然就不需要虚拟目录了

给 浏览器 使用的资源,用 绝对路径——虚拟目录 + 资源路径

给 服务器 使用的资源,用 相对路径——资源路径

服务器输出字符流到浏览器

// 1.获取字符输出流
PrintWriter pw = response.getWriter();
// 2.输出数据
pw.write("<h1>hello<h1>");
(★) 中文乱码问题:
response对象是从tomcat自动创建的,response的流的编码方式默认是不支持中文的;
退一步讲,即使流采用支持中文的编码方式,浏览器也不一定能采用相同的解码方式。解决方案:  response.setContentType("text/html;charset=utf-8");   (▲ 注意写在获取流之前! ! !)这行代码有两层含义: 1. 服务器端的流采用utf-8编码2. 浏览器端也要使用utf-8解码

服务器输出字节流到浏览器

ServletOutputStream sos = response.getOutputStream();
sos.write("<h1>hello<h1>".getBytes());

关于request&response的一些理解

  1. request的作用主要是传递信息和参数,因此它的方法一般都是get,且较多,且只是用来获取信息、参数、对象,功能并不强大;response的作用数设置响应的信息,因此它们的方法一般是set,且较少,有一些完成业务的强大功能
  2. request&response遇到的中文乱码问题一般都出现在请求体/响应体中——request的解决方案是:request.setCharacterEncoding("utf-8"),response的解决方案是response.setContentType("text/html;charset=utf-8")

End ♬

by a Lolicon ✪

【Response】全面总结并理解response相关推荐

  1. ap计算机科学考题,把AP计算机A Free Response题做成阅读理解理解翻译题

    原标题:把AP计算机A Free Response题做成阅读理解理解翻译题 AP CSA 简答题简介 APCSA计算机考试历来是申请美校Computer Science专业的敲门砖,它在众多AP考试中 ...

  2. java response 对象_82 Java基础 Response对象

    1 Response对象概述 负责对浏览器进⾏响应的对象 什么是响应: 服务器接收到请求需要进行处理,将处理以后的结果显示回浏览器端(将这个过程称为是响应Response). 查看Servlet中的s ...

  3. response.getWriter().write()和 response.getWriter().print()的区别 以及 PrintWriter对象 和 out对象 的区别

    感谢原文作者:krismile__qh 原文链接:https://blog.csdn.net/krismile__qh/article/details/89926001 一.response.getW ...

  4. response.getWriter().write()和 response.getWriter().print()的区别

    异步上传图片的代码.发现里面用了response.getWriter().print(),故联想到response.getWriter().writer(),经过一番api的查找与实操,总结如下: r ...

  5. java获取response对象_Java 获取Request,Response对象方法

    第一种.参数 @RequestMapping("/test") @ResponseBodypublic void saveTest(HttpServletRequest req, ...

  6. Response设置响应数据、Response完成重定向(对比 forword)、路径问题、Response响应字符数据、Response响应字节数据

    文章目录 Response Response 设置响应数据功能介绍 Response 完成重定向 与请求转发(forword)对比 路径问题 Response 响应字符数据 Response 响应字节 ...

  7. java response方法_Java学习之Response篇

    Java学习之Response篇 0x00 前言 续上篇文章内容,这篇本章来更新Response. 0x01 Response 常用方法: setStatus(int sc) : 设置响应状态码 se ...

  8. Response.getWriter() 和Response.getOutputStream冲突

    From:http://yulimeander.blog.sohu.com/119195170.html ava.lang.IllegalStateException异常:简单分析和简单解决方案 20 ...

  9. Alamofire源码解读系列(九)之响应封装(Response)

    本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下.我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然, ...

最新文章

  1. [译] 解密 Mapbox 卫星影像处理神器 Robosat
  2. python将EXCEL数据导入数据库时日期型数据变成数字并加.0的问题一行代码解决方案方案
  3. 减小Delphi xe系列生成的exe文件大小
  4. 启明云端技术社区之星--张广星
  5. 软考网络管理员存储容量计算相关问题
  6. red6.4 mysql_rhel6.4 yum本地yum源配置
  7. IPSR(中断程序状态寄存器),IPSR包含了当前正在执行的中断服务程序编号,用于识别当前中断。
  8. linux端口连通性测试telnet、wget、ssh、curl
  9. redis集群五种模式(纯概念)
  10. ZooKeeper原生java客户端使用
  11. Java 将图片或者视频模糊化(附代码) | Java工具类
  12. 智慧档案馆之区级档案库房温湿度智能化监控系统案例(一)
  13. 如果要做 Rietveld 分析,XRD时步长需要满足什么要求
  14. 外包一个小程序多少钱(外包小程序开发的价格费用)
  15. Android版本控制软件之SVN
  16. 怎样才能演示正弦和余弦的相互变换
  17. kuka机器人码垛编程网盘_kuka机器人循环指令码垛编程探索
  18. 冬天跑步比夏天跑步减肥更快 冬天跑步减肥冷怎么办
  19. wsl2 局域网访问_超轻巧局域网传输神器,用手机看电脑上的小电影
  20. 前端PS切片 常用不同格式图片区别

热门文章

  1. 【11】Activity的生命周期
  2. 快学Scala 学习笔记-1: (第一章到第三章)
  3. 解决关于Windows10连接共享出现“因为文件共享不安全,所以你不能连接到文件共享。此共享需要过时的SMB1协议”的问题
  4. opencv-图像修补,图像修复,inpaint
  5. 如何改变Windows桌面任务栏的大小
  6. 玩和平精英吃鸡用什么平板ipad好?
  7. 【音频处理】创建环绕声混响
  8. 小程序遵循的语法_2020年遵循的最佳应用程序开发实践
  9. 网上银行系统5:系统登陆
  10. 电脑本机使用手机热点、虚拟机如何联网