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获取范围多大?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习之超分辨率算法——SRCNN

网络为基础卷积层 tensorflow 1.14 scipy 1.2.1 numpy 1.16 大概意思就是针对数据,我们先把图片按缩小因子照整数倍进行缩减为小图片,再针对小图片进行插值算法,获得还原后的低分辨率的图片作为标签。 main.py 配置文件 from model im…

Javaweb 在线考试系统

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…

Qt for Python (PySide6)设置程序图标和任务栏图标

环境 使用Qt for Python开发Windows应用程序。 Python版本:3.12 Qt版本:PySide6 前言 先上一个简单的测试程序 from PySide6.QtWidgets import QMainWindow,QLabel,QApplication from PySide6 import QtGui import sysclass MainWindow(QMainWindow)…

【C#】实现Json转Lua (Json2Lua)

关键词: C#、JsonToLua、Json2Lua、对象序列化Lua 前提需引入NewtonsofJson,引入方法可先在Visual Studio 2019 将Newtonsoft.Json.dll文件导入Unity的Plugins下。 Json格式字符串转Lua格式字符串,效果如下: json字符串 {"1": &q…

Windows平台C++部署 vcpkg 安装protobuf + gRPC实现图像传输

vcpkg 安装 https://github.com/microsoft/vcpkg.git.\bootstrap-vcpkg.bat vcpkg --version参考:Windows安装vcpkg教程(VS2022) protocbuf 安装与编译 vcpkg install grpc:x64-windowsprotocbuf 安装与编译 vcpkg install protobuf proto…

ScottPlot学习的常用笔记-02

ScottPlot学习的常用笔记-02 写在前面Why&Target:这里记一些杂项。上下文&背景 先记一下这几个小时的新收获先说一下,为什么可开发可视工具缩放的问题ScottPlot5.0起步.net Core: WinExe.Net Framework也是可以的 写在前面 Why&Target&…

CTF_1

CTF_Show 萌新赛 1.签到题 <?php if(isset($_GET[url])){system("curl https://".$_GET[url].".ctf.show"); }else{show_source(__FILE__); }?> 和 AI 一起分析 1.if(isset($_GET[url]))检查GET请求中是否存在名为url的参数。 curl 2.curl…

【Spring】Spring框架之-AOP

目录 1. AOP的引入 2. AOP相关的概念 2.1 AOP概述 2.2 AOP的优势 2.3. AOP的底层原理--目前先不具体阐述&#xff0c;后面讲 3. Spring的AOP技术-配置文件方式 3.1 AOP相关的术语 3.2 基本准备工作 3.3 AOP配置文件方式的入门 3.4 切入点的表达式 3.5 AOP的通知类型 …

我的2024年度总结

称着这个周末&#xff0c;写一篇2024年度总结&#xff0c;主要记录我过去一年的成长经历以及自己的一些收获。 过去一年的经历&#xff0c;可谓刻骨铭心&#xff0c;一个是24考研惨败&#xff0c;一个是毕设的准备&#xff0c;一个是省考的陪考&#xff0c;一个是找工作的焦虑…

Java 中的字符串

目录 Java 中的字符串字符串的创建字符串的比较字符串的拼接如何定义一个空的字符串 Java 中的字符串 字符串的创建 在 Java 中&#xff0c;可以通过以下几种方式创建字符串&#xff1a; 1.使用字符串字面量&#xff1a; String str "Hello, World!";2.使用 new…

数说故事聚焦“卖车”场景,推出AI汽车销售转化解决方案

没错&#xff0c;“卖车”我们也在行&#xff0c;为某车企“保住”了新车上市的订单。 深耕汽车行业多年&#xff0c;该车企10月份刚发布一款新能源车&#xff0c;其前期已经拥有了大量的保有客户和线上多渠道获取的潜在客户&#xff0c;然而&#xff0c;仍面临两大难题&#x…

javaEE-多线程编程-3

目录 java 常见的包 : 回调函数: 什么是线程: 第一个线程: 验证多线程执行: 内核: 调用sleep()方法: 执行结果分析: 线程创建的几种方式: 1.继承Thread类,重写run()方法. 2.实现Runnable接口,重写run()方法. 3.继承Thread类,重写run()方法.但使用匿名内部类 4.实现…

FFmpeg 框架简介和文件解复用

文章目录 ffmpeg框架简介libavformat库libavcodec库libavdevice库 复用&#xff08;muxers&#xff09;和解复用&#xff08;demuxers&#xff09;容器格式FLVScript Tag Data结构&#xff08;脚本类型、帧类型&#xff09;Audio Tag Data结构&#xff08;音频Tag&#xff09;V…

芯片级IO (Pad) Ring IP Checklist

SoC top顶层数字后端实现都会涉及到IO Ring &#xff08;PAD Ring&#xff09;的设计。这里面包括VDD IO,VDDIO IO, Signal IO, Corner IO&#xff0c;Filler IO&#xff0c;IO power cut cell等等。 数字后端零基础入门系列 | Innovus零基础LAB学习Day2 数字IC后端实现TOP F…

圣诞快乐(h5 css js(圣诞树))

一&#xff0c;整体设计思路 圣诞树h5&#xff08;简易&#xff09; 1.页面布局与样式&#xff1a; 页面使用了全屏的黑色背景&#xff0c;中央显示圣诞树&#xff0c;树形由三层绿色的三角形组成&#xff0c;每一层的大小逐渐变小。树干是一个棕色的矩形&#xff0c;位于三角…

Linux应用开发————mysql数据库表

mysql数据库表操作 查看表的结构 mysql> desc / describe 表名; 或者&#xff1a; mysql> show create table 表名; 常见数据库引擎&#xff1a; innodb, myISAM... 删除表 mysql> drop tabl…

移动网络(2,3,4,5G)设备TCP通讯调试方法

背景&#xff1a; 当设备是移动网络设备连接云平台的时候&#xff0c;如果服务器没有收到网络数据&#xff0c;移动物联设备发送不知道有没有有丢失数据的时候&#xff0c;需要一个抓取设备出来的数据和服务器下发的数据的方法。 1.服务器系统是很成熟的&#xff0c;一般是linu…

Unity中的委托和事件(UnityAction、UnityEvent)

委托和事件 &#x1f392;什么是委托&#xff0c;委托的关键字是Delegate&#xff0c;委托是一种函数的容器&#xff0c;运行将函数做为变量来进行传递 通过Delegate关键字我们声明了一个无参无返回的委托&#xff0c;通过这个委托我们可以存储无参无返回的函数 public deleg…

基于SpringBoot的“交流互动系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“交流互动系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能图 管理员登录界面图 个人信息界面图 个人…

LeetCode hot100-93

https://leetcode.cn/problems/longest-palindromic-substring/description/?envTypestudy-plan-v2&envIdtop-100-liked 5. 最长回文子串 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。状态定义 我们用一个二维数组 dp[i][j] 表示子串 s[i…j] 是否是回文&…