Java 实战介绍 Cookie 和 Session 的区别_天天视讯
HTTP 是一种不保存状态的协议,即无状态协议,HTTP 协议不会保存请求和响应之间的通信状态,协议对于发送过的请求和响应都不会做持久化处理。
无状态协议减少了对服务压力,如果一个服务器需要处理百万级用户
的请求状态,对服务器的压力无疑的是巨大的。
无状态的 HTTP 由于其简单和易用性,应用比较管广泛。而且早期的 Web 服务对于状态的需求也很低,所以应用场景也比较广泛。
(相关资料图)
随着 Web 的不断发展,越来越多的服务需要记录用户的登录状态,比如购物、聊天、论坛服务,请求都是无状态的服务,服务器就无法识别是 HTTP 请求的用户信息,所以就需要一种技术保存用户的状态,也就 Cookie 技术,有了 Cookie 的 HTTP 协议通信,就能保存状态了。
Cookie在无状态协议不受影响的基础上,通过引入 Cookie 来记录状态,这样既不会影响原有的功能,也可以解决请求状态问题。Cookie 是当你浏览网页,通过服务器记录你的用户名,密码等网页信息。
Cookie 是由服务端创建,客户端向服务发送请求后,服务端通过响应报文的Set-Cookie 字段将 Cookie 信息返回给客户端,客户端自动保存 Cookie。Cookie 会标记来源、有效期、路径等信息。客户端再次请求该服务端时,会自动将 Cookie 添加到请求报文中(Request Header),服务端就能通过传递的 Cookie 识别客户端的信息。
1.没有 Cookie 信息的请求:
2.再次(有了Cookie信息后)发送请求:
Cookie 简单实践使用 Spring Boot 创建简单的 Controller,当客户端传递的参数 a 有值时,服务端才添加 Cookie:
@GetMapping("/cookie")@ResponseBodypublic String cookie(String a, HttpServletRequest request, HttpServletResponse response) { if (a != null) { Cookie cookie = new Cookie("name",a); response.addCookie(cookie); } return "ok";}
首先使用 Chrome 浏览器发送请求http://localhost:8080/cookie
:
返回结果没有 Cookie。
再发送带有 a 参数的请求http://localhost:8080/cookie?a=jeremy
:
返回 Cookie 都存在 Set-Cookie 字段中,客户端会自动保存 Cookie。
再次发送相同的请求http://localhost:8080/cookie?a=jeremy
:
请求会将客户端的 Cooike 自动添加到请求报文中,此时服务端也能接收到 Cookie信息:
SessionSession 是服务端保存用户状态的一种机制,当用户访问网站时,服务端会为每个用户创建唯一个会话标识,并根据用户登录请求创建和存储会话信息,客户端再次请求时,就能从服务端获取会话信息了。
Session 简单实践在 Java 中的 Servlet 提供 HttpSession 的接口来操作会话信息,只要有以下几个方法:
public HttpSession getSession() 获取会话信息,如果不存在就创建会话信息。public String getId() 获取唯一的会话 id。public void invalidate() 将会话信息失效,一般注销时候使用。HttpSession 接口通过 getAttribute() 和 setAttribute() 来获取和设置会话信息,下面创建两个方法,session() 方法获取会话判断用户是否登录,login() 方法添加会话信息。
@GetMapping("/session")@ResponseBodypublic String session(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); Boolean login =(Boolean) session.getAttribute("login"); String loginInfo; if (login == null) { loginInfo = "未登录"; } else { loginInfo = "已登录"; } return "session id :" + session.getId() + ":" + loginInfo;}@GetMapping("/login")@ResponseBodypublic String login(HttpServletRequest request) { HttpSession session = request.getSession(); session.setAttribute("login",true); return "ok";}
先请求 http://localhost:8080/session
,返回如下信息:
session id :F3C560208A54E3D5B465CDEBE7419817:未登录
多次发送请求,session id 是一致的,说明 session id是在会话周期之内(浏览器不关闭)都是不变的。
然后请求登录接口 http://localhost:8080/login
,设置了会话信息之后,再请求 http://localhost:8080/session
:返回如下信息:
session id :F3C560208A54E3D5B465CDEBE7419817:已登录
Cookie 和 Session 的区别同一个用户请求,服务端会创建唯一的会话,在请求的生命周期之内,会话 id 一直不改变。session 会话由服务端添加后,后续请求就能获取到会话信息,会话信息只存储在服务端。
Cookie 是存储在客户端上小型文本,是由服务端创建,然后通过响应报文的 Set-Cookie 字段返回给客户端。客户端每次请求服务端吗,浏览器都会将 Cookie 信息发送给服务端,服务端根据 Cookie 来识别用户的会话信息。Cookie 有如下几个特点:
存储在客户端可以被客户端修改和删除数据比较小,例如用户基本信息、购物信息可以设置过期时间。Session 是服务端存储会话信息,当客户端请求服务端时,服务端会被每个用户创建一个唯一的会话(Session id)标识,并在服务端设置和存储会话信息,并在后续的请求,可以获取到会话信息,主要有如下特点:
存储在服务端,客户端无法修改和删除数据比较大,比如用户的信息,登录记录。通常依赖 Cookie 和客户端进行数据交换。Cookie 和 Session 的主要区别:
储存位置:Cookie 存储在客户端,Session 存储在服务端上。数据大小:Cookie 通常比较小,Session 通常存储较大的数据。安全性:Cookie 可以通过 js 设置和修改,也可能通过抓包工具修改,可以轻易的被修改,Cookie 安全性差,很多浏览器也禁用了 Cookie,Cookie 使用也不多。Session 的设置和修改都在服务端,安全性相对 Cookie 高很多。在实际的使用场景上,Cookie 和 Session 也会结合使用,服务端使用Session记录用户的会话信息,而将会话信息存储在 Cookie 中,这样可以减少服务端的压力。
标签:
精彩推送
新神U要来了!AMD官网发现Threadripper 7900X/PRO 7905WX系列处理器 今日视点
据消息源@momomo_us透露,在AMD官网的OPN部分发现了尚未发布的Threadri
RK3588-MIPI屏幕调试笔记:RK3588-MIPI-DSI之LCD上电初始化时序
RK3588-MIPI屏幕调试笔记:RK3588-MIPI-DSI之LCD上电初始化时序
新闻快讯
X 关闭
X 关闭
新闻快讯
- Java 实战介绍 Cookie 和 Session 的区别_天天视讯
- 5月四川物流业景气指数52.0% 较上月回升3.9个百分点
- 2023年06月13日07时48分美元/人民币汇率最新报价
- 速读:六神丸有什么功效?
- 建德市属于杭州哪个区_建德市属于什么市 天天聚看点
- 许志安被取消资格_这到底是个什么梗
- 全球看热讯:伊朗政变美国_伊朗政变
- 房地产会计工作内容有哪些要求_房地产会计工作内容
- 纸浆反弹动能不足金十期货6月12日讯,综上所述,考虑到2023年全球阔叶浆产能增速近10%,而需求端在欧美加息大背景下呈现疲软态势,海外供应格局转向宽松
- 环球播报:大反转!周琦去美国真正原因揭晓,4大强队送一口气,辽篮还有戏
- 梁子湖区旅游协会成立 “一部手机游梁子湖”小程序正式上线|当前快看
- 【天天报资讯】起亚EV6将于6月份开启盲订 8月成都车展期间上市
- 警营开放日 听取“哇”声一片 上海机场边检站举办“红领巾进国门 厚植爱国情怀”主题活动 全球快播报
- 一光伏企业高管在慕尼黑下飞机后被带走|世界快看
- 当前视讯!6月12日大成消费精选股票A净值上涨0.29%
- 自卫队宣布与美国在东海搞“三航母同框”军演,日媒炒作“针对中国”
- 世界通讯!《食品流通许可证》_食品流通许可证和经营许可证的区别
- 全球速讯:《崩坏星穹铁道》6.12日兑换码分享
- [快讯]鹏信科技公布2022年年度分红实施方案 动态焦点
- 昆明端午节旅游攻略景点大全_独家
- 每日报道:国家级非遗项目莫家拳主题微电影首映
- 微资讯!常山北明6月12日盘中涨幅达5%
- 壮族文字怎么写_壮族文字
- 债市早报:5月CPI延续低通胀状态,PPI通缩加剧;银行间主要利率债收益率普遍下行
- 永清环保于衡阳新设光伏发电科技子公司 全球快报
- 环球焦点!加强教育强国建设 全面提高人口素质
- 魏家凉皮逃离美团外卖,这只是一个开始_观察
- 每日视点!肯尼亚外汇储备进口覆盖天数重回4个月
- 电子质量管控系统厂家_电子质量
- 环球新动态:欣兰冻膜效果怎么样_欣兰冻膜怎么样
- contactyoursystemadmin关机蓝屏_contact your system admin
- 每日一猜6月10日:哪款能重塑眼镜人士新体验|全球快看点
- 2023福布斯全球2000强放榜,中国平安再进一步!_百事通
- 上海发布冰雹黄色预警,目前冰雹+大风+雷电“三黄”预警高挂 焦点热讯
- 18岁月经来了10天还没干净(月经来了10天还没干净)
- 2023年6月11日十二星座运势快送
- 今日热闻!原腾讯QQ空间负责人,T13专家,黄希彤被爆近期被裁员,裁员原因令人唏嘘。。
- 防冻剂掺量一般是多少(水泥砂浆防冻剂的一般掺量是多少)
- 坚守“可靠”坦克Hi4-T 当下新能源越野的更优解
- 世界热头条丨吉愿罐、定胜糕、考神咖……快消企业“高考”营销寻增量
- 世界信息:七八分熟的羊肉不宜吃的原因是?|滚动
- 发繁体 满江红(发繁体)|环球焦点
- 6月10日起,12306网站试行在线选铺服务|天天通讯
- 【全球时快讯】mnd+官网(mnd)
- 董事长、独董突然辞职!
- 点燃全场!贵州“村超”再次惊现世界波 环球看热讯
- 火车计次票、定期票 如何购买使用 每日讯息
- 环球热门:让文明交融之光照耀未来
- 湖北省地方金融监督管理局党组书记、局长段银弟接受审查调查
- 全球最新:热血飞车传奇官网在哪下载 最新官方下载安装地址