一篇看懂什么是cookie、session以及二者联系

本文介绍了Cookie和Session的概念,并通过生活例子帮助理解。Cookie是客户端技术,保存在浏览器,用于记录用户信息;Session是服务端技术,用于保持会话状态。文章详细阐述了它们的创建、工作原理及限制,并对比了两者的区别,强调Cookie用于存储非敏感信息,而Session适用于存储更重要的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、生活例子

二、为什么需要cookie与session?

三、Cookie

四、Session

五、Session和Cookie的区别 

一、生活例子

session与cookie是一种会话技术,session会话,cookie小饼干。常用在用户登录,身份识别,数据传输等。我们去超市购物,出示会员卡才能够获取优惠,那怎么能证明我们这个会员卡是有效的,收银员输入卡号到系统中,系统根据这个卡号去查找,查询到了就证明了这个会员卡有效。这个会员卡就相当于cookie,是放在我们手里的,我们是客户。会员卡号相当于sessionid是存储在cookie中。

我们想注册会员,所以我们去超市让工作人员给我们办了一个会员卡,这个会员不仅我们要知道我是会员还要让这个超市知道我是会员,所以工作人员在超市会员系统中登记了我们的信息,相当于session,然后给我们一个会员卡相当于cookie,告诉我们下次来购物带着这张卡就行了,但是怎么能证明我们这个会员卡是有效的,会员卡有一个卡号,在创建会员的时候就存到了会员卡中,就是sessionid。

二、为什么需要cookie与session?

http传输协议是无状态的,浏览器发出一个请求,服务器接受到请求,然后响应给浏览器,这时浏览器与服务器建立了一个连接,等到浏览器收到就断开连接了。但是等下次我们在去发送请求又重新建立一个连接,比如我们登录淘宝,我们下单或者提交购物车时又得重新登录,然后可能登录完购物车的东西也没了,然后又下单重新登录,如此繁琐压根不能满足我们的需求。http协议无状态就是无记忆,就是我们需要前面的东西还得重传,为了弥补这种不足,产生两个记录http状态的技术,一个叫cookie,一个叫session。

三、Cookie

小饼干,保存在浏览器,是客户端技术,怎么发到客户端呢?通过响应。客户端怎么发给服务端呢,只能通过请求。一个Cookie只能保存一个信息,因为我们new Cookie( String ,String)
一个web站点可以给浏览器发送多个cookie,每个站点最多存放20
cookie大小有限制4kb
浏览器上限300个
删除cookie
不设置有效期,关闭浏览器,会话失效
设置有效期时间为0

运行原理

客户端向服务端发送一个http请求

服务端发给客户端一个cookie

Cookie cookie = new Cookie("lasttime", System.currentTimeMillis()+"");
resp.addCookie(cookie);

下一次请求时带着这个cookie

//Cookie 服务端从客户端获取,从req获取
Cookie[] cookies = req.getCookies(); //返回数组,说明cookie可能存在多个

 

四、Session

一次会话,打开和关闭浏览器的一次过程,服务端技术,一个session独占一个浏览器.

常见场景:
网站你登陆,第二次不用再登录。
用户登录之后,整个网站都可以访问,不用每个页面都得登录。-->保存用户的信息,保存购物车的信息
整个网站中经常会使用的数据保存在session中。
SessionId是放在cookie里面的,
session不仅能存字符串,还能存对象等更强大的东西
之前我们说共享数据可以用ServletContext现在我们可以用Session 实现不同的Servlet共享数据

运行原理:

1.客户端向服务端发送http请求

2.服务端根据设置的session创建指令,在服务端创建一个编号为sessionid的文件,里面的值就是session具体的值(组成部分 变量名 | 类型 :长度:值).

HttpSession session = req.getSession();

3.服务端将创建好的sessionid编号响应给客户端,客户则将该编号存在cookie中

4.当下一次请求时,客户端将这个sessionid携带在请求中,发送给服务端,服务端根据这个sessionid来做一些业务判断.

 

五、Session和Cookie的区别 


Cookie是把用户的数据写给浏览器,浏览器保存(可以保存多个)
Session把用户的数据写到用户独占的session中,服务器端保存(保存重要的信息,减少服务器资源的浪费)
Session对象由服务器创建,一打开浏览器就自动创建了1一个Session对象,Cookie是由服务器生成,发送给浏览器,浏览器以k-v形式保存,下次请求同一网站带着cookie发给服务器。
ServletContext后面叫Application比如统计在线人数,多个用户共享的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值