ResponseHttp
文章目录
- HTTP响应详解
- 使用抓包查看响应报文协议内容
- Response对象
- Response继承体系
- Response设置响应数据功能介绍
- Response请求重定向
- 概述
- 实现方式
- 重定向特点
- 请求重定向和请求转发比较
- 路径问题
- Response响应字符数据
- 步骤
- 实现
- Response响应字节数据
- 步骤
- 实现
HTTP响应详解
使用抓包查看响应报文协议内容

由于浏览器的原因,浏览器会把请求行和响应行信息放在一起
- 响应行
状态码:
| 状态码 | 状态码描述 | 说明 |
|---|---|---|
| 200 | OK | 请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。 |
| 302 | Move temporarily | 重定向,请求的资源临时从不同的 地址响应请求。 |
| 304 | Not Modified | 从浏览器缓存中读取数据,不从服务器重新获取数据。例如,用户第一次从浏览器访问服务器端图片资源,以后在访问该图片资源的时候就不会再从服务器上加载而直接到浏览器缓存中加载,这样效率更高。 |
| 404 | Not Found | 请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。 |
| 403 | Forbidden | 服务器已经理解请求,但是拒绝执行它 |
| 405 | Method Not Allowed | 请求行中指定的请求方法不能被用于请求相应的资源 |
| 500 | Internal Server Error | 服务器内部错误。通常程序抛异常 |
- 响应头
响应头也是用的键值对key:value,服务器基于响应头通知浏览器的行为。
常见的响应头:
| 响应头Key | 响应头value |
|---|---|
| location | 指定响应的路径,需要与状态码302配合使用,完成重定向 |
| content-Type | 响应正文的类型(MIME类型,属于服务器里面的一种类型,例如文件在window系统有自己的类型,.txt .doc .jpg。文件在服务器中也有自己的类型),同时还可以解决乱码问题。例如:text/html;charset=UTF-8 |
| content-disposition | 通过浏览器以附件形式解析正文,例如:attachment;filename=xx.zip |
| refresh | 页面刷新,例如:3;url=www.itcast.cn //三秒刷新页面到www.itcast.cn |
常见的MIME类型:就是文件在tomcat服务器中的文件类型:
windows tomcat(MIME类型)
超文本标记语言文本 .html text/html ***
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain ***
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png **
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg **
…
- 响应体
响应体,就是服务器发送给浏览器的数据。
Response对象
Response继承体系

tomcat定义实现类ResponseFacade门面类对象。底层创建门面类对象
ServletResponse response = new ResponseFacade();
然后将响应对象传递给service doGet doPost方法参数。在方法体中就可以使用响应对象
Response设置响应数据功能介绍
http响应数据总共分为三部分内容,分别是响应行,响应头,响应体
- 响应行

设置响应状态码:
void setStatus(int sc);
- 响应头

设置响应头键值对:
void setHeader(String name,String value);
响应头:name的值
location 指定响应的路径
content-type:告诉浏览器文件格式,告诉浏览器不要解析html文件(text/plain),解决中文乱码问题 ************
refresh 定时刷新
content-disposition 以附件形式展示图片等资源
- 响应体

对于响应体,是通过字符、字节输出流的方式往浏览器写,
获取字节输出流
ServletOutputStream getOutputStream();
获取字符输出流
PrintWriter getWriter();
Response请求重定向
概述
重定向:一种资源跳转方式(服务器外部的)
(1)浏览器发送请求给服务器,服务器中对应的资源A接收到请求
(2)资源A现在无法处理该请求,就会给浏览器响应一个302的状态码+location的一个访问资源B的路径
(3)浏览器接收到响应状态码为302就会重新发送请求到location对应的访问地址去访问资源B
(4)资源B接收到请求后进行处理并最终给浏览器响应结果,这整个过程就叫重定向
实现方式
resp.setStatus(302);设置响应状态码是302
resp.setHeader(“location”,“资源B的访问路径”);
或者:
resp.sendRedirect(“资源B的访问路径”);
重定向特点
- 浏览器地址栏路径发生变化
- 可以重定向到任何位置的资源(服务器内部,外部均可)
- 俩次请求,不能在多个资源使用request共享数据
请求重定向和请求转发比较

如果需要在资源之间传递共享request数据,使用请求转发,否则就用重定向
路径问题
规则
- 浏览器使用:需要加虚拟目录(项目访问路径)
- 服务端使用:不需要加虚拟目录
对于转发来说,因为是在服务端进行的,所以不需要加虚拟目录
对于重定向来说,路径最终是由浏览器来发送请求,就需要添加虚拟目录。
Response响应字符数据
步骤
- 通过Response对象获取字符输入流:PrintWriter writer = resp.getWriter(); 由于获取打印字符流是根据response对象获取的,所以向浏览器打印输出
- 通过字符输出流写数据: writer.write(“aaa”);
实现
- 返回一个简单的字符串aaa
PrintWriter writer = response.getWriter();
writer.write(“aaa”);
- 返回一串html字符串,并且能被浏览器解析
PrintWriter writer = response.getWriter();
//content-type,告诉浏览器返回的数据类型是HTML类型数据,这样浏览器才会解析HTML标签
response.setHeader(“content-type”,“text/html”);
writer.write(“aaa
”);
- 返回一个中文的字符串,需要注意设置响应数据的编码为utf-8
//设置响应的数据格式及数据的编码
response.setContentType(“text/html;charset=utf-8”);
writer.write(“你好”);
注:要先设置响应头,然后再用response获取输入流
Response响应字节数据
步骤
- 通过Response对象获取字节输出流:ServletOutputStream outputStream = resp.getOutputStream();
- 通过字节输出流写数据: outputStream.write(字节数据);
实现
返回一个图片给浏览器
/*** 响应字节数据:设置字节数据的响应体*/
@WebServlet("/resp4")
public class ResponseDemo4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 读取文件FileInputStream fis = new FileInputStream("D:\\abc\\柳岩.jpg");//2. 获取response字节输出流ServletOutputStream os = response.getOutputStream();//3. 完成流的copybyte[] buff = new byte[1024];int len = 0;while ((len = fis.read(buff))!= -1){os.write(buff,0,len);}fis.close();}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
也可以用工具:
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version>
</dependency>
相关文章:
ResponseHttp
文章目录 HTTP响应详解使用抓包查看响应报文协议内容 Response对象Response继承体系Response设置响应数据功能介绍Response请求重定向概述实现方式重定向特点 请求重定向和请求转发比较路径问题Response响应字符数据步骤实现 Response响应字节数据步骤实现 HTTP响应详解 使用抓…...
【题解】非对称之美(规律)
https://ac.nowcoder.com/acm/problem/214851 #include <iostream> #include <string> using namespace std; string s; int n; int fun() {// 1. 判断是否全都是相同字符bool flag false;for (int i 1; i < n; i) {if (s[i] ! s[0]){flag true;break;}}if…...
遇到如此反复的外贸客户,你可以这样做~
来源:宜选网,侵删 当你们遇到爽快的买家的时候,你是否有把握一定能把她拿下呢? 还是说即使客户很爽快,你也会耐心认真的沟通呢? 今天要和大家分享的这个买家,我本以为他是一个很爽快的买家&am…...
【数据库】简单SQL语句
已知某图书管理数据库有如下表格: 用户表user、部门表dept、角色表role、图书表book、图书分类表book_classify、图书借阅表book_borrow、还书表book_return、借阅预约表book_appoint、图书遗失表book_lose; 用户表user、部门表dept、角色表role、图书表book、图书…...
K邻算法:在风险传导中的创新应用与实践价值
01 前言 在当今工业领域,图思维方式与图数据技术的应用日益广泛,成为图数据探索、挖掘与应用的坚实基础。本文旨在分享嬴图团队在算法实践应用中的宝贵经验与深刻思考,不仅促进业界爱好者之间的交流,更期望从技术层面为企业在图数…...
【小白的大模型之路】基础篇:Transformer细节
基础篇:Transformer 引言模型基础架构原论文架构图EmbeddingPostional EncodingMulti-Head AttentionLayerNormEncoderDecoder其他 引言 此文作者本身对transformer有一些基础的了解,此处主要用于记录一些关于transformer模型的细节部分用于进一步理解其具体的实现机…...
Golang | Leetcode Golang题解之第73题矩阵置零
题目: 题解: func setZeroes(matrix [][]int) {n, m : len(matrix), len(matrix[0])col0 : falsefor _, r : range matrix {if r[0] 0 {col0 true}for j : 1; j < m; j {if r[j] 0 {r[0] 0matrix[0][j] 0}}}for i : n - 1; i > 0; i-- {for …...
JMeter性能压测脚本录制
第一步:电脑打开控制面板设置代理服务器 第二步:jmeter的测试计划添加一个HTTP(S)脚本记录器 在脚本记录器里配置好信息,然后保存为脚本文件(.*表示限定) 此方框内容为项目地址(可改…...
缓存雪崩、缓存击穿、缓存穿透是什么、之间的区别及解决办法
缓存雪崩、缓存击穿、缓存穿透: 详细介绍看这篇文章,写得很好: 什么是缓存雪崩、缓存击穿、缓存穿透 下面是我自己总结的,比较简单清楚地展示了缓存雪崩、缓存击穿和缓存穿透的根本区别和相应的解决办法。强烈建议看完上述文章后…...
Pytorch张量广播
Pytorch 中的主要的数据结构包括标量、向量、矩阵、张量,同时支持数据之间的运算。在 Pytorch 中有一个张量广播的概念,就是要把小的放大,最后在一起做计算,并不是所有的张量都可以计算,规则如下 首先比较维度&#x…...
AI算法-高数2-导数定义和公式
P14 2.1 导数的定义(一):2.1 导数的定义_哔哩哔哩_bilibili 导数定义: 导数公式: P15 2.1 导数的定义(二):2.1 导数的定义(二)_哔哩哔哩_bilibili [a,b]可导,a的端点:右可导,b端点&…...
Vitis HLS 学习笔记--AXI_STREAM_TO_MASTER
目录 1. 简介 2. 示例 2.1 示例功能介绍 2.2 示例代码 2.3 顶层函数解释 2.4 综合报告(HW Interfaces) 2.5 关于TKEEP和TSTRB 2.6 综合报告(SW I/O Information) 3. 总结 1. 简介 本文通过“<Examples>/Interface…...
WPF之可翻转面板
1,创建翻转面板的资源字典:FlippPanel.xaml。 无外观控件同样必须给样式指定类型( <ControlTemplate TargetType"ss:FlipPanel">),相关详情参考:WPF之创建无外观控件-CSDN博客)…...
【深度学习】--slowfast视频理解数据集处理pipeline
官网指引: facebookresearch SlowFast :https://github.com/facebookresearch/SlowFast 进入dataset:https://github.com/facebookresearch/SlowFast/blob/main/slowfast/datasets/DATASET.md 这里面的东西需要通读,但是不要过于…...
ArcGIS10.2能用了10.2.2不行了(解决)
前两天我们的推文介绍了 ArcGIS10.2系列许可到期解决方案-CSDN博客文章浏览阅读2次。本文手机码字,不排版了。 昨晚(2021\12\17)12点后,收到很多学员反馈 ArcGIS10.2系列软件突然崩溃。更有的,今天全单位崩溃。提示许…...
mysql查询表信息(表名、表结构、字段信息等)
MySQL中,您可以使用以下SQL查询数据库的表信息或者某个表中具体的信息,例如:字段、字段描述、索引等,以下为具体的SQL: 1、查询数据库所有表信息(表名/表描述) SELECTtable_name name,TABLE_C…...
【MySQL探索之旅】JDBC (Java连接MySQL数据库)
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…...
tomcat-GC溢出
背景 一个项目需要导出大量的数据,导致GC但是这个项目在本地能够运行,但是在服务器上就不能运行本地和服务器的区别:NGINX和TOMCATGC和NGINX无关,那么就是Tomcat分配JVM的堆内存的容量不够 错误解决思路 网上教了一些查看JVM的大小…...
结合场景,浅谈深浅度拷贝
有两段代码是这样的: A段: List<String> list1 new ArrayList<>(); Bear B new Bear(); for(Apple apple : apples){B.url apple.url;B.content apple.content;list1.add(Bear); } B段: List<String> list1 new A…...
生成指定范围的随机整数
private static final Random RANDOM new Random();// 生成指定范围的随机整数public static int generateRandomInt(int min, int max) {return RANDOM.nextInt(max - min 1) min;}public static void main(String[] args) {Integer count 5;Integer randomInt generateR…...
设计程序统计城市社区医疗站点接诊数据,优化医疗点位分布,方便居民就近看病,解决就医难问题。
一、实际应用场景描述某城市卫健委希望优化社区卫生服务中心布局,但面临以下现实情况:- 各社区接诊量差异巨大- 部分点位长期排队,部分点位资源闲置- 居民跨区就医成本高- 缺乏基于数据的点位调整依据👉 技术目标:用 P…...
OpenVort开源文本嵌入引擎:本地化部署与语义搜索实战指南
1. 项目概述与核心价值最近在折腾一些需要处理大量文本数据的项目,比如日志分析、文档摘要生成,或者是想给自己的应用加个智能问答功能,总是绕不开一个核心环节:如何高效、准确地将非结构化的文本转换成机器能理解的向量。这个“向…...
TortoiseGit重置与还原功能详解:除了‘后悔药’,还能当‘时光机’和‘后悔药解药’?
TortoiseGit重置与还原功能深度解析:从版本控制到历史重构的艺术 在代码开发的漫长旅途中,每个开发者都曾有过"如果当时..."的瞬间。与大多数版本控制系统不同,Git提供的不仅是一个简单的"撤销"按钮,而是一套…...
在Windows上轻松安装APK文件:APK Installer完全指南
在Windows上轻松安装APK文件:APK Installer完全指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想过在Windows电脑上直接运行Android应用&…...
EVA-7M,支持GPS/GLONASS及低功耗省电模式的超紧凑型GNSS模块
简介今天我要向大家介绍的是 u-blox 的超紧凑型独立GNSS定位模块——EVA-7M。这是一款专为对成本和空间敏感的应用而设计的独立GNSS模块。该模块基于 u-blox 7 定位引擎(接收GPS、GLONASS、QZSS和SBAS信号)设计,采用行业最小的独立GNSS封装尺…...
嵌入式音频开发避坑指南:如何用一颗模组搞定AEC、ANS与啸叫抑制
摘要:在智能门禁、会议终端、车载语音等嵌入式产品中,回声消除(AEC)、噪声抑制(ANS)和啸叫抑制(AFC)是三大“硬骨头”。本文将深入解析A-59F多功能语音处理模组的架构与特性…...
阿里图像复原验证码识别
一、简介 这个就是阿里的图像还原验证码,他是从一个图片中任意抠出一个物品,可能是蜡烛、车轮、盘子、瓶子、盖子、扣子等等。然后让你通过鼠标拖动的方式,把物品拖到对应的位置上,完成图像复原验证。 这个验证码还有一个非常变态…...
保姆级教程:用Vue3+webrtc-streamer搞定海康/大华监控的Web实时播放(附完整代码)
Vue3与WebRTC-streamer实战:企业级监控视频流集成指南 监控系统在现代企业管理中扮演着重要角色,而将监控视频无缝集成到Web应用中已成为许多开发者的刚需。本文将带你从零开始,使用Vue3和webrtc-streamer实现海康、大华等主流监控设备的实时…...
在VSCode中重塑R语言开发体验:vscode-R插件深度解析
在VSCode中重塑R语言开发体验:vscode-R插件深度解析 【免费下载链接】vscode-R R Extension for Visual Studio Code 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-R 你是否曾为R语言开发环境的局限性感到困扰?传统IDE虽然功能齐全&#…...
38岁大厂P9被裁后卖保险:成年人的职场,没有铁饭碗
来自:推荐一个程序员编程资料站:http://cxyroad.com副业赚钱专栏:https://xbt100.top2024年IDEA最新激活方法后台回复:激活码CSDN免登录复制代码插件下载:CSDN复制插件以下是正文。01 | P9也不是免死金牌最近在网上看到…...
