java session 和cookie的区别

java session 和cookie的区别

一个简单的表格是这么创建的:

特性CookieSession
数据安全性较低,数据存储在客户端,容易被篡改或窃取较高,数据存储在服务器,客户端只保存一个 session ID
生命周期可以设置过期时间,即使关闭浏览器也能保留默认情况下,浏览器关闭后 session 失效(可通过配置延长生命周期)
浏览器关闭时是否会被销毁不会(如果设置了过期时间)会(如果没有设置过期时间,即会话级 Cookie) 会(默认情况下,session 依赖于会话级 Cookie,浏览器关闭后 session ID 丢失)
存储大小限制单个 cookie 大小通常限制在 4KB 左右,每个域名下的 cookie 数量也有限制理论上没有大小限制,但受服务器内存限制
适用场景存储少量不敏感的数据,如用户偏好设置、记住登录状态等存储敏感数据或大量数据,如用户登录信息、购物车数据等
实现方式通过 HttpServletResponse 的 addCookie 方法设置通过 HttpServletRequest 的 getSession 方法获取或创建 session
代码示例java
Cookie cookie = new Cookie(“key”, “value”);
response.addCookie(cookie);
java
HttpSession session = request.getSession();
session.setAttribute(“key”, “value”);
读取方式java
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equals(“key”)) {
String value = cookie.getValue();
}
}
java
HttpSession session = request.getSession();
String value = (String) session.getAttribute(“key”);
删除方式java
Cookie cookie = new Cookie(“key”, “”);
cookie.setMaxAge(0);
response.addCookie(cookie);
java
HttpSession session = request.getSession();
session.removeAttribute(“key”);
// 或 session.invalidate();

补充说明:

Cookie 的销毁:

如果设置了 setMaxAge(过期时间),即使浏览器关闭,Cookie 也会保留,直到过期。

如果没有设置 setMaxAge,Cookie 是会话级的,浏览器关闭后会被销毁。

Session 的销毁:

默认情况下,Session 依赖于一个会话级的 Cookie(JSESSIONID)来维护会话状态。

浏览器关闭后,会话级 Cookie 会被销毁,导致服务器无法识别客户端的 Session ID,Session 也会失效。

可以通过配置(如设置 Session 的超时时间)来延长 Session 的生命周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值