web实操8-cookie

server/2024/12/23 5:57:18/

会话技术

会话:

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

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

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

功能

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

解释:
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.ppmy.cn/server/152420.html

相关文章

POI-TL插件开发-表格分组插件

POI-TL版本:1.12.2 改造于:LoopRowTableRenderPolicy 模板设计: 分组之前: 分组之后: 代码实现: public class LoopRowGroupTableRenderPolicy implements RenderPolicy {private String prefix;privat…

设计模式の命令访问者迭代器模式

文章目录 前言一、命令模式二、访问者模式三、迭代器模式 前言 本篇是关于设计模式中命令模式、访问者模式、以及迭代器模式的学习笔记。 一、命令模式 命令模式是一种行为型设计模式,其核心目的在于将命令的发送者和接受者解耦,提供一个中间层对命令进行…

android recycleview 中倒计时数据错乱

原因 recyceleview 当页面划出屏幕外后,默认会有两条进入缓存区,这些item的结构会被保存,数据被清除,方便其他新进入屏幕的数据复用item,超过两条外的item会进入缓存池被完全销毁重用。 如果我们的页面上有editText 或…

经典系统重塑(sql层)

内容 这个音乐门户网站是我一直在写的一个项目,因为周期较长,虽然功能都给予了大体实现,但是确实无论是sql层面还是业务层面都有很大缺陷。 先看最主要的music表,这music字段指的是音乐地址,名字需要改一下&#xff0…

【批量生成WORD和PDF文件】根据表格内容和模板文件批量创建word文件,一次性生成多个word文档和批量创建PDF文件

如何按照Word模板和表格的数据快速制作5000个word文档 ? 在与客户的合作的中需要创建大量的合同,这些合同的模板大概都是一致的,是不是每次我们都需要填充不一样的数据来完成? 今天用表格数据完成合同模板的填充,批量…

分类模型的预测概率解读:3D概率分布可视化的直观呈现

背景 在分类模型中,预测概率不仅是结果,更是模型决策的关键依据。为了更直观地理解这些概率分布,3D可视化提供了一种生动的展示方式,本文通过3D概率分布图,直观展示分类模型的预测概率 代码实现 基于时间序列的3D分…

RBF分类-径向基函数神经网络(Radial Basis Function Neural Network)

RBF分类详细介绍 源码 什么是RBF分类? RBF分类(径向基函数分类)是一种基于**径向基函数神经网络(Radial Basis Function Neural Network, RBFNN)**的分类算法。RBF神经网络是一种前馈神经网络,广泛应用于…

城市灾害应急管理集成系统——系统介绍

1 项目概述 1.1选题背景 城市灾害已经成为影响我国发展的重要因素,近年来我国高度重视城市灾害应急研究。其中洪涝、团雾、火灾和地面塌陷等多种灾害是当前影响人民群众生产生活的主要灾害。中共中央提出,在第十四个五年计划期间要提升城市治理水平,加强城市治理中的风险防…