10-19 HttpServletResponse

相应的对象  web开发模型:基于请求与相应的模型 一问一答的模型

Response对象:响应对象,封装服务器给客户端的相关的信息

顶级接口: ServletResponse
父接口:HttpServletResponse

response对象的功能分为以下四种:·(都是服务器干的事注意)

设置响应头信息;
发送状态码

设置响应正文;

重定向;

响应正文

响应数据,给客户端的数据
数据:可以是普通文本,也可以是文件

借助输出流把内容写给客户端的浏览器上

服务器怎么把文本和文件给到客户端?

借助响应输出流,把内容写给客户端 这个IO流是一个输出流 他有两个方法得到两种流

第一个是getOutputStream()  第二个是PrintWriter

  • ServletOutputStream getOutputStream()得到字节输出流,万能流(文本,文件都可以)
  • PrintWriter getWriter()得到打印字符输出流,打印流: write() print() printIn() 只能写文本

tips:外面是双引号 里面就必须是单引号

-1表示读到文件末尾,读一点写一点->读一个字节写一个字节(那么效率有点低,所以用buffer数组)

由于是一个字节一个字节大的读取所以读取比较慢,此时完成了服务器的资源展示到客户端浏览器上

设置ContentType

但是得到的是:

改正渲染类型:

设置响应头:

 设置响应状态

生成验证码:画布 -> 画笔写字 ->  通过ImageIO写出去

浏览器发现验证码的src的值一样 就会把缓存的内容重新给与src 而不会重新发送新请求

重定向(repsonse)->important

repsponse.sendRedirect

(面试高频)重定向(客户端的跳转)与请求转发(服务器的跳转)的共性与异性

共性:都是实现资源的跳转

异性:请求转发是服务器端的资源跳转客户端无感,

请求转发请求一次,重定向发起两次请求  Request域中的数据只能在转发中有效 转发时是无效的

转发客户端地址栏不会发生变化,重定向客户端地址栏会发生变化

转发可以访问服务器内部资源但是重定向既可以访问服务器内部资源又可以访问服务器外的资源

重定向的第二次请求是get请求 即服务器输入url地址回车进行一个请求到客户端

1

重定向(不是在服务器内部进行的跳转,而是在客户端,你看客户端是不是发起了两次的请求)

Request域中的数据只能在转发中有效 转发时是无效的  不然下面会报错

编码处理

1.请求编码

2.响应编码

请求编码

get

tomcat8以及之上的版本,Tomcat默认处理GET请求的编码:UTF-8

如果tomcat7以及之下,需要手动处理,万能编码处理方式:

编码处理:

1.把得到的字符串打散成字节

2.使用正确的编码 把字节数组组装成字符串

手动处理:

原因:

怎么变成三个汉字了?我传的是两个汉字->张三呀 

在UTF-8中一个汉字占三个字节  但是GBK是占两个字节为一个汉字  3个字节

因为你之前传过来的是UTF-8编码的汉字 总共占3*2个字节 现在要按照GBK  那么就是3个汉字了

乱码就是编码不一致所造成的

接口测试:使用postman  不再单独写一个html页面  在针对所谓的post请求页面时

表单中数据提交需要用到input这类标签单中的name属性,用于前端数据的一个传递

为什么我不设置  发送Post请求也没什么问题?

方法:

调用request对象void setCharacterErfcoding(String var1)的方法,这个方法只能设置请求体的编码(所以只适用于post请求编码)

响应编码  ->不分提交方式

但是报错:

IO流输出管道编码已经设置好,但是他没有告诉客户端这边的数据展示数据的编码方式

所以再次导致了乱码问题,相当于:我给你东西,编码是正常的,但是你不知道把我给你的东西不会设置编码

总结就是:客户端浏览器的编码没有设置

响应编码问题总结

在响应编码中,需要解决输出流管道的编码问题以及客户端浏览器的编码设置

tips:只要写一个:写下面这个就行了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/148863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue2基础-Vue对象进阶介绍1

文章目录 一、绑定样式绑定class样式绑定style样式总结 二、渲染条件渲染列表渲染语法key详解 三、Vue检测数据原理问题解决 四、收集表单数据五、过滤器定义语法: 六、内置指令回顾v-text指令:v-htmlcookie问题 v-clock指令v-oncev-pre 一、绑定样式 绑定class样式 <!-- …

SpringCloud-Gateway修改Response响应体,并解决大数据量返回不全等问题

官网相关案例&#xff1a; Spring Cloud Gatewayhttps://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#the-modifyresponsebody-gatewayfilter-factory ModifyRequestBodyGatewayFilterFactory类: https://github.com/spring-cloud/spring-cloud-gate…

Virtual安装centos后,xshell连接centos

1. 网络使用Host-Only模式动态分配IP&#xff0c;点确定后&#xff0c;centos 上运行 system restart network &#xff0c;使用ifconfig查看新的ip&#xff0c;XShell可以直接连上centos&#xff0c; 但是由于使用的是Host-Only模式&#xff0c;centos不能访问网络&#xff0c…

​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第9章 软件可靠性基础知识&#xff08;P320~344&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

解决在pycharm中使用matplotlib画图问题

第一&#xff0c;再导入包后直接绘图出现&#xff1a; AttributeError: module backend_interagg has no attribute FigureCanvas表明版本不兼容&#xff0c;我们需要加入&#xff1a;matplotlib.use(‘TkAgg’) 导入函数就变成了&#xff1a; import matplotlib matplotlib.…

JAXB的XmlElement注解

依赖 如果基于JAX-WS开发&#xff0c;可以在maven工程的pom.xml文件中增加如下依赖&#xff0c;会将依赖的JAXB库也下载下来&#xff1a; <dependency><groupId>jakarta.xml.ws</groupId><artifactId>jakarta.xml.ws-api</artifactId><vers…

基础课8——中文分词

中文分词指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中&#xff0c;单词之间是以空格作为自然分界符的&#xff0c;而中文只是字、句和段能通过明显的分界符来简单划界&#xff0c;唯独词没有一个…

开源与闭源:创新与安全的平衡

目录 一、开源和闭源的优劣势比较 一、开源软件的优劣势 优势 劣势 二、闭源软件的优劣势 优势 劣势 二、开源和闭源对大模型技术发展的影响 一、机器学习领域 二、自然语言处理领域 三、数据共享、算法创新与业务拓展的差异 三、开源与闭源的商业模式比较 一、盈…

【数据结构】详解链表结构

目录 引言一、链表的介绍二、链表的几种分类三、不带头单链表的一些常用接口3.1 动态申请一个节点3.2 尾插数据3.3 头插数据3.4 尾删数据3.5 头删数据3.6 查找数据3.7 pos位置后插入数据3.8 删除pos位置数据3.9 释放空间 四、带头双向链表的常见接口4.1创建头节点&#xff08;初…

220V交流转直流的简易电源设计

220V交流转直流的简易电源设计 设计简介设计原理电路图变压器电路交流转直流电路3.3V电源接口电路 PCB3D图 实践检验 设计简介 通过模拟电路的相关知识&#xff0c;尝试将220V的交流电转化为我们指定电压的直流电。 设计原理 将220V交流电转化为直流电的方法常用的有通过变压器…

UE 视差材质 学习笔记

视差材质节点&#xff1a; 第一个是高度图&#xff0c; Heightmap Channel就是高度图的灰色通道&#xff0c;在RGBA哪个上面&#xff0c;例如在R上就连接(1,0,0,0)&#xff0c;G上就连接&#xff08;0,1,0,0&#xff09;逐次类推 去看看对比效果&#xff1a; 这个是有视差效果…

idea 环境搭建及运行java后端源码

1、 idea 历史版本下载及安装 建议下载和我一样的版本&#xff0c;2020.3 https://www.jetbrains.com/idea/download/other.html&#xff0c;idea分为专业版本&#xff08;Ultimate&#xff09;和社区版本&#xff08;Community&#xff09;&#xff0c;前期可以下载专业版本…

【pytorch深度学习 应用篇02】训练中loss图的解读,训练中的问题与经验汇总

文章目录 loss图解析train loss ↘ \searrow ↘ ↗ \nearrow ↗ 先降后升 loss图解析 train loss ↘ \searrow ↘ 不断下降&#xff0c;test loss ↗ \nearrow ↗ 不断上升&#xff1a;原因很多&#xff0c;我是把workers1&#xff0c;batchSize8192train loss ↘ \searro…

Java系列之 解决 项目 jar 包无法上传到Github

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 &#x1f3f7;️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…

动态规划专项---最长上升子序列模型

文章目录 怪盗基德的滑翔翼登山合唱队形友好城市最大上升子序列和拦截导弹导弹防御系统最长公共上升子序列 一、怪盗基德的滑翔翼OJ链接 本题思路:本题是上升子序列模型中比较简单的模型&#xff0c;分别是从前往后和从后往前走一遍LIS即可。 #include <bits/stdc.h>co…

新零售系统平台解决方案 线上线下小程序怎么做

新零售线上线下解决方案是将传统零售业务与互联网科技相结合&#xff0c;通过数字化、智能化手段提升零售业务效率和用户体验的解决方案&#xff0c;它既有提供消费者线下体验&#xff0c;强调“稳”&#xff0c;又有互联网线上的“快”。 线上线下小程序可以通过一体化的进销存…

Windows核心编程 静态库与动态库

资源文件 .rc 文件 会被 rc.exe 变成 .res 文件(二进制文件) 在链接时链接进入 .exe 文件 一、如何保护源码 程序编译链接过程 不想让别人拿到源代码&#xff0c;但是想让其使用功能&#xff0c;根据上图观察&#xff0c;把自己生成的obj给对方&#xff0c;对方拿到obj后&…

详解ssh远程登录服务

华子目录 简介概念功能 分类文字接口图形接口 文字接口ssh连接服务器浅浅介绍一下加密技术凯撒加密加密分类对称加密非对称加密非对称加密方法&#xff08;也叫公钥加密&#xff09; ssh两大类认证方式&#xff1a;连接加密技术简介密钥解析 ssh工作过程版本协商阶段密钥和算法…

国科大数据挖掘期末复习——聚类分析

聚类分析 将物理或抽象对象的集合分组成为由类似的对象组成的多个类的过程被称为聚类。由聚类所生 成的簇是一组数据对象的集合&#xff0c;这些对象与同一个簇中的对象彼此相似&#xff0c;与其他簇中的对象相异。 聚类属于无监督学习&#xff08;unsupervised learning&…

青岛数字孪生赋能工业制造,加速推进制造业数字化转型

随着企业数字化进程的推进&#xff0c;数字孪生技术逐渐在汽车行业得到广泛应用。5G与数字孪生、工业互联网的融合将加速数字中国、智慧社会建设&#xff0c;加速中国新型工业化进程&#xff0c;为中国经济发展注入新动能。数字孪生、工业物联网、工业互联网等新一代信息通信技…