web实操8-cookie

会话技术

会话:

一次会话中包含多次请求和响应。

客户端浏览器访问服务器的资源,只要客户端或者服务器端不关闭,这始终在一次会话范围内,这一次会话范围内可以包含多次请求并且收到多次相应。

一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止。

功能

在一次会话的范围内的多次请求间,共享数据。

解释:
http协议是无状态的,无状态:客户端发送了多次请求,服务器给力我多次响应,每次请求响应和其他请求响应是相互独立的,他们之间并不能进行数据的交流和交换,我们想进行数据的交流和交换怎么办,只能使用会话技术解决。

举例演示:
京东每次加入购物车都是一次请求,最后购物车结算可以汇集这些请求结果算出总金额。

方式

客户端会话技术(把数据存在客户端的):cookie
服务器端会话技术(把数据存在服务端的):session

cookie

概念:

客户端会话技术,将数据保存在客户端。

解释:
第一次请求服务器请求完成,服务器会携带一些数据响应给浏览器,浏览器把这些数据保存在浏览器本地,下一次请求,他会把这些数据带着发送给服务器。

快速入门

使用步骤:

1)创建cookie对象(cooike是一个类),绑定数据
new Cookie(String name,String value)

2)发送cookie对象
要通过响应去发,应该找response对象的API:
response.addCookie(Cookie cookie)
接收cookie对象,上面new的加进去,相当于通过response发送cookie给浏览器,浏览器收到cookie后会存储,下一次会自动带着cookie去请求,我们就可以再一次获取cookie了。
3)获取cookie 拿到数据
获取肯定是在请求里携带,应该找request的API
因为可能会有多个cookie的存在,这里返回是cookie数组
Cookie[] = request.getCookies()
拿到所有cookie,遍历打印获取1)带过去的数据。

代码演示

cookie原理

基于响应头set-cookie和请求头cookie实现

解释说明

不管发送cookie还是获取cookie对象,最终他们体现形式都是以http的协议在进行数据的交互,一定是底层通过http协议的响应和请求来完成的。

在这里插入图片描述

response会给弄个响应头set-cookie:msg=hello
浏览器发现有这么一个响应头,http协议里面响应头规定了,如果浏览器收到一个setCookie头,浏览器会自动干一件事,会将这个头里面携带的数据msg =hello 保存在客户端浏览器中,并且下一次再次发送请求,浏览器会将这个数据带过去。

带过去:
浏览器请求时,在请求的消息头里面弄个请求头:cookie:msg=hello
在服务器这边,可以写代码获取请求头里面的数据,只不过我们使用的是java web给我们封装好的API来做的这么一个操作,不需要我们自己再去单独针对这个请求头操作了。

所以服务器,http协议,浏览器帮我们做了很多的事,我们要关注的非常少,只需要通过API发送和获取cookie。

通过抓包来看

cookie细节

cookie一些操作规则和一些cookie常用的API。

一次可不可以发送多个cookie

可以。可以创建多个cookie对象,使用response调用多次addCOokie方法发送cookie即可。

发送时:创建两个对象,response.add两次
响应头:两个
set-cookie:msg=zhangsan
set-cookie: name=zhangsan

请求头:用逗号隔开
cookie:msg=hello,name=zhangsan

注意⚠️:只要有一个response带上cookie,浏览器存储了之后,浏览器再访问任何一个服务器路径都会带上cookie。不是说传过来的那个路径访问就不带了。

cookie在浏览器中保存多长时间

1)默认情况下,当浏览器关闭后,cookie数据被销毁。

相当于cookie信息保存在浏览器的内存里,浏览器关了内存被释放了,cookie数据也就没了。

演示:
访问demo1,cookie信息存到浏览器,再访问demo2,服务器会获取到cookie信息。
这时候给浏览器关闭,再去直接访问demo2,服务器获取不到cookie信息了。

2)通过设置cookie的生命周期让cookie持久化存储:

通过cookie对象的方法:setMaxAge(int second )
传正数:将cookie数据写到硬盘的文件中,持久化存储。second秒数是cookie的存活时间,到这个时间后,cookie文件会被自动删除掉。
传负数:默认值,浏览器内存里,浏览器关闭就没了。
传零:代表删除cookie信息,因为服务器不能直接操作用户电脑上的数据,只有通过这种方式把cookie删除掉。

我们经常希望浏览器关闭也可以保存下来,内存中数据怎么保存下来:
在硬盘上文件里的数据可以被持久化存储。

演示:

3)cookie能不能存储中文数据?

tomcat8之前不能直接存储中文数据,会报错。需要将中文数据转码,一般采用url编码。
tomcat8之后,支持存储中文数据。

4)cookie获取范围多大?

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

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

相关文章

Day50 图论part01

图论理论基础 大家可以在看图论理论基础的时候,很多内容 看不懂,例如也不知道 看完之后 还是不知道 邻接矩阵,邻接表怎么用, 别着急。 理论基础大家先对各个概念有个印象就好,后面在刷题的过程中,每个知识…

VMWare 的克隆操作

零、碎碎念 VMWare 的这个克隆操作很简单,单拎出来成贴的目的是方便后续使用。 一、操作步骤 1.1、在“源”服务器上点右键,选择“管理--克隆” 1.2、选择“虚拟机的当前状态”为基础制作克隆,如下图所示,然后点击“下一页” 1.3、…

JVM性能优化一:初识内存泄露-内存溢出-垃圾回收

本文主要是让你充分的认识到什么叫做内存泄露,什么叫做内存溢出,别再傻傻分不清了,别再动不动的升级服务器的内存了。 文章目录 1.基本概念1.1.内存泄露1.2.内存溢出1.3.垃圾回收1.4.内存泄露-垃圾回收-内存溢出三者的关系关系 2.代码示例2.…

dockfile镜像加速

运行给的终端命令 全覆盖法 {"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://dockerhub.azk8s.cn","https://mirror.ccs.tencentyun.com","https://registry.cn-han…

【RK3588 Linux 5.x 内核编程】-内核中断与ThreadedIRQ

内核中断与ThreadedIRQ 文章目录 内核中断与ThreadedIRQ1、Threaded IRQ介绍2、Threaded IRQ相关API3、驱动实现4、驱动验证当 Interrupt 触发时,Interrupt handler 应该执行得非常快,它不应该运行更多的时间(它不应该执行耗时的任务)。 如果我们有执行更多任务的中断处理程…

如何正确使用人工智能:开启智慧学习与创新之旅

在当今数字化时代,人工智能(AI)已如影随形地融入我们的学习、工作与生活。从智能学习辅助工具到创意生成引擎,AI 为我们带来了前所未有的便利与机遇。然而,如同任何强大的工具,正确使用人工智能至关重要。本…

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空,意味着结束遍…

Windows系统上创建Flask服务器

为什么需要掌握服务器搭建技能? 掌握服务器搭建技能对于任何需要在线提供服务或平台的个人创意者来说都至关重要。服务器的作用是确保全球任何地方的用户都能顺利访问你的平台。因此,了解如何搭建和维护服务器,不仅能提升平台的稳定性和访问…

SonarQube 概述

**SonarQube ** 1. SonarQube 概述 SonarQube 是一个开源的代码质量管理平台,广泛用于持续检查代码的质量,包括检测代码中的错误、漏洞和不符合最佳实践的代码。SonarQube 可以与 CI/CD 流程结合,自动化地对代码进行静态分析,帮…

SMMU软件指南SMMU编程之全局错误和最小配置

安全之安全(security)博客目录导读 目录 一、全局错误 二、最小配置 一、全局错误 与编程接口相关的全局错误会报告到适当的 SMMU_(*_)GERROR 寄存器,而不是通过基于内存的事件队列。这些错误通常是严重的,例如导致 SMMU 停止向前推进。例如&#xf…

ISP用到的一些名词简介

这里主要记录一下在学习ISP时遇到的一些名词。 图像质量(Picture Quality) 1.锐度(Acutance) 锐度常用于描述边界处图像信息过渡的快慢。高反差图像过渡速度非常快,可以形成非常明确的边缘,而低反差图像存在一定的过渡缓冲&#…

SqlSugar查询达梦数据库遇到的异常情况(续)

之前的文章提到在SqlSugar的Where函数中使用!string.IsNullOrEmpty函数查询达梦数据库时,明明数据库中有数据但就是查不出来,但相同的代码在另一台电脑上就可以正常返回数据。   以下图中的两张表数据为例,执行下面的SQL语句无法查询到数据…

深度学习试题及答案解析(二)

1. 神经风格转换中,优化算法的每次迭代更新的是什么? 神经风格转换(Neural Style Transfer, NST)是一种使用深度学习技术,特别是卷积神经网络(CNN),来将一幅图像的风格应用到另一幅图…

thinkphp 多选框

视图 <div class"form-group"><label for"c-flag" class"control-label col-xs-12 col-sm-2 col-md-4">{:__(Flag)}</label><div class"col-xs-12 col-sm-8 col-md-8"><!--formatter:off--><select …

Spark优化----Spark 性能调优

目录 常规性能调优 常规性能调优一&#xff1a;最优资源配置 常规性能调优二&#xff1a;RDD 优化 RDD 复用 RDD 持久化 RDD 尽可能早的 filter 操作 常规性能调优三&#xff1a;并行度调节 常规性能调优四&#xff1a;广播大变量 常规性能调优五&#xff1a;Kryo 序列化 常规性…

找数字-T3

小明看到了一个字符串&#xff0c;这个字符串只包含大小写字母和数字&#xff0c;他想把这个字符串里的数字全部找出来。比如“23y4y8Gg48gt001eDGER”&#xff0c;里面的数字就是23,4,8,48,1。注意001要变成1输出。并且保证所有数字不会太大&#xff08;小于1000000&#xff0…

cf补题日记3

原题1&#xff1a; This is the hard version of the problem. The only differences between the two versions are the constraints on mm and qq. In this version, m,q≤105m,q≤105. You can make hacks only if both versions of the problem are solved. Narek and Ts…

ECharts柱状图-柱图42,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个柱状图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供…

电商店铺数据集成到金蝶云星辰V2的实践经验分享

电商店铺数据集成到金蝶云星辰V2的技术案例分享 在电商业务快速发展的背景下&#xff0c;如何高效地将聚水潭平台上的电商店铺数据集成到金蝶云星辰V2系统中&#xff0c;成为了许多企业面临的重要挑战。本文将详细探讨一个实际运行的解决方案——“电商店铺->金蝶客户”&am…

(css)鼠标移入或点击改变背景图片

(css)鼠标移入或点击改变背景图片 html <div class"mapTip"><divv-for"(item, index) of legendList":key"index"class"mapTipOne":class"{ active: change index }"click"legendHandle(item, index)"…