response—Http协议response响应详解刨析
response概述:
- 代表的是HTTP响应的对象- response继承结构- ServletResponse- |- HTTPServletResponse是再ServlsetResponse的接口之上,添加HTTP协议的相关内容,更善于HTTP协议相关的开发response的组成部分:响应行(状态行),响应头,响应空行,响应体(响应实体内容)- 320+location请求重定向- 304 代表缓存- 404 代表访问资源的路径不存在- 505 服务器出错response的API :- 设置响应状态码的方法 - void setStatus(int sc)- void setStatus(int sc,String sm)- 设置响应头的方法:- void setHeader(String name,String value)- void setDateHeaderString name,long date)- void setIntHeader(String name,int value)- void addHeader(String name, String value)- void addDateHeader(String name, long date)- void addIntHeader(String name, int value)- 设置响应内容的方法:- ServletOutStream getOutputStream()- PrintWriter getWriter()
response功能一:响应乱码的处理
- 字节流:再字节流中,服务器发送数据时,采用getBytes()默认使用平台编码GBK的编码传送数据,浏览器接收数据时,会采用系统的平台码,也就是GBK编码,两个字符集统一,同时这个字符集最终有中文的存在,所以没有出现乱码-->window系统默认编码GBK,底层的字节中使用的时平台编码- 在发送数据时,可能会指定字符集,例如使用utf-8发送数据- // 发送数据时使用 utf-8 发送数据response.getOutputStream().write(" 中 国".getBytes("utf-8"));- 这时浏览器接受数据的时候也需要使用utf-8字符集,所以通知浏览器使用utf-8,否则编码和解码的形式不统一- // 通知浏览器使用 utf-8 接收数据response.setHeader("Content-Type","text/html;charset=utf-8");- 通知浏览器的语句许需要放在所有代码之前,一次请求一次响应,否则不进行- 字符流:response.getWriter().writer("中国");- 在使用字符流发送数据时,服务器会自动将其变为字节流进行发送,此时的字节流是ISO-8859-1字符集,tomcat默认采用的是tomcat的字符集进行存储转换,此时浏览器还是使用的是默认编码GBK,编解码不统一,所以此时需要统一编码,通知浏览器和服务器统一编码来接收数据- 通知浏览器:response.setHeader("Content-Type","text/html;charset=utf-8"); 通知浏览器响应头的信息,提前告知,响应头的信息- 通知服务器:response.setCharacterEncoding("utf-8"); 响应字符集设置成utf-8- 通知之后两者的字符集编码已经被统一了,所以此时的将不会出现乱码的现象
总结:
- 在通知浏览器接收数据时使用字符集,服务器会在其发送数据时--->根据通知时进行判断相关的字符集进行采用编码的优化,自动采用,所以只需要通知浏览器接收时字符集即可- 字节流和字符流使用同一种方式就可以解决乱码问题- // 通知浏览器接收数据时的字符集response.setHeader("Content-Type","text/html;charset=utf-8");<==>| 升级版response.setContentType("text/html;charset=utf-8");- 不要关闭响应对象- 字节流和字符流不能同时使用,否则服务器不知到底使用哪一种进行编码的输出,IO流错误
response功能二—请求重定向:----->页面之间的跳转方式,自动跳转可以设置
- 请求重定向- 是资源的一种跳转方式,在服务器的内部进行跳转 Location 302- 请求重定向特点- 两次请求,两次响应- 服务器之间的跳转方式- 两个请求对象,两个响应对象- 地址栏会发生变化
代码实现:
//1. 设置响应状态码response.setStatus(302);//2. 设置响应头--->浏览器根据响应头信息做出操作response.setHeader("location","http://www.tc.cn");<==>| 升级之后进行抽取出将上面进行重构的操作response.sendRedirect("http://www.tc.cn");
定时刷新:是一种资源的跳转方式,可以在服务器之间进行跳转 页面之前的代码转换方式
- 特点:- 两次请求,两次响应- 两次请求对象,两次响应对象- 服务器之间资源额跳转方式- 地址栏会发生变化
response功能三-控制缓存
- 控制缓存- 控制浏览器不使用缓存
-代码:
response.setDateHeader("Expires",System.currentTimeMillis()+1000*60*60);
response.setHeader("Cache-control","max-Age=5");
response—Http协议response响应详解刨析相关推荐
- RPC架构组件详解刨析
一个基本的RPC架构里面应该至少包含以下4个组件: 1.客户端(Client):服务调用方(服务消费者) 2.客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数数 据信息打包 ...
- 流媒体协议之RTMP详解
流媒体协议之RTMP详解 文章目录 流媒体协议之RTMP详解 1 RTMP概述 2 RTMP交互过程 2.1 握手协议 2.2 RTMP分块(chunk) 2.3 协议控制消息(Protocol Co ...
- 流媒体协议之RTSP详解
1 流媒体协议之RTSP详解 文章目录 1 流媒体协议之RTSP详解 1.1 RTSP概述 1.2 RTSP协议交互过程 1.2.1 RTSP基于TCP交互过程 1.2.2 RTSP基于HTTP的交互 ...
- HTTP协议状态码详解(HTTP Status Code)
HTTP协议状态码详解(HTTP Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成功返回网页 ...
- HTTP协议状态码详解(HTTP Status Code)(转)
原文链接:HTTP协议状态码详解(HTTP Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器 ...
- SSL / TLS 协议运行机制详解
转载自 SSL / TLS 协议运行机制详解 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想 ...
- 虚拟路由器冗余协议VRRP原理详解!
虚拟路由器冗余协议VRRP原理详解! https://virtual.51cto.com/art/201905/596666.htm?pc 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前 ...
- 传输协议之ICMP详解
文章目录 TCP和UDP ICMP 简介 ICMP出现的原因 ICMP的用途 ICMP作为IP的上层协议在工作(报文) ICMP实现之MTU探索 ICMP实现之改变路由 ICMP实现之源点抑制 ICM ...
- STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(二)MQTT协议常用报文详解
STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(二)MQTT协议常用报文详解 上一次我们讲了OneNet平台的注册,这次我们来讲一下MQTT的常用报文用法 上一篇地址https ...
最新文章
- 为什么不走INDEX FAST FULL SCAN呢
- 验证 Boost.Optional 复制构造函数不会尝试调用从模板化参数初始化构造函数的元素类型
- 解决wiremock中velocity脚本(.vm)中文编码乱码问题
- 前端构建工具gulp入门教程
- Echarts多任务可视化之再优化
- java B2B2C 仿淘宝电子商城系统-Spring Cloud Eureka参数配置项详解
- Android学习——ListView的缓存机制
- 实验一 线性表的顺序存储与实现_【自考】数据结构中的线性表,期末不挂科指南,第2篇
- HTML-浮动(特点-影响-居中)-定位
- 【jvm】jvisualvm 离线下载安装插件
- Vulkan----Mac环境搭建
- 【非线性规划】- 无约束问题(1)局部极小值与全局极小值
- xp计算机怎么共享网络,xp系统手机usb共享网络上网,xp共享上网-
- 百度网盘加速教程(绝对有效)
- 学习Hibernate框架笔记-第3天
- CentOS 7 搭建企业内网 DNS 服务器
- 进安全模式提示”Press ENTER to continue loading SPTD.sys”
- RISC-V MCU应用教程之PWR睡眠模式
- Groups CodeForces - 1598B
- AI路径查找器如何使用