前瞻环节
大家好,我是程序员无尽冬,欢迎大家来到我的专栏。本篇我们将给大家讲解java会话技术的相关知识 同时也会将它整理为我的个人八股分享给大家 希望大家可以喜欢。
首先我们先了解一下什么是会话技术
会话技术概述
用户打开浏览器,访问站点服务器,连续操作(连续的访问站点服务器web资源),直到关闭浏览器,这个整个过程就叫做会话。会话技术是一种在网络通信中用于跟踪用户状态的机制,它可以让服务器在处理用户请求时保持特定用户的状态信息,从而实现个性化的服务和用户体验。
会话技术的发展历程
HTTP 协议是一种无状态协议,每个请求都是相互独立的,服务器无法直接识别来自同一个用户的连续请求。这导致了一些问题,例如无法跟踪和管理用户状态信息、无法提供个性化服务等。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动
的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。于是会话技术就应运而生了。
为了解决这些问题,人们开始探索如何实现会话管理。最初的方案是基于 Cookie 的会话管理。Cookie 是一种在客户端存储数据的机制,服务器可以在响应中设置 Cookie,然后在后续的请求中读取 Cookie。通过将会话标识符(Session ID)存储在 Cookie 中,服务器能够识别特定用户的请求并保持其状态信息。Cookie 在浏览器中存储,可以设置过期时间,也可以通过设置路径和域名来限制 Cookie 的范围。
为了更好地管理会话,开发人员开始使用服务器端的会话存储来替代完全依赖于 Cookie。这就是 Session-Based Session 技术(Session技术)。服务器会为每个会话分配一个唯一的 Session ID,并将该 ID 存储在服务器端的会话存储中,而不是直接依赖于客户端的 Cookie。客户端的 Cookie 只包含 Session ID,服务器通过 Session ID 来查找对应的会话数据。这样可以增加对会话的控制和安全性,但需要在服务器端维护会话存储。
随着移动设备和分布式系统的兴起,无状态会话管理变得更加重要。Token-Based Session 技术(Token技术)应运而生。在这种技术中,服务器使用 Token(令牌)来表示会话状态。当用户登录成功后,服务器生成一个加密的 Token,并将其发送给客户端。客户端在后续的请求中将 Token 带上,服务器通过解析和验证 Token 来识别和管理会话。由于 Token 是无状态的,服务器不需要维护会话存储,可以更好地适应分布式环境。
所以接下来我们了解一下会话的跟踪技术
Cookie
什么是Cookie
Cookie是一种在客户端(通常是Web浏览器)和服务器之间传输的小型文本文件。它由服务器通过HTTP响应的头部设置,并存储在客户端的浏览器中。当客户端发送后续请求时,会将该Cookie信息包含在HTTP请求头中发送给服务器。
Cookie怎么应用
设置Cookie - GET /cookie/set - 设置示例Cookie
获取所有Cookie - GET /cookie/get - 获取所有Cookie
获取指定Cookie - GET /cookie/get/{name} - 根据名称获取Cookie
删除Cookie - GET /cookie/delete/{name} - 删除指定Cookie
自定义设置Cookie - POST /cookie/set - 自定义参数设置Cookie
清空所有Cookie - GET /cookie/clear-all - 清除所有Cookie
代码示例
cookie的优缺点
Session
什么是Session
Session是一种在Web应用程序中跨请求保持用户状态的机制。
Session是一段服务器上的存储区域,用于存储用户信息和状态。当用户第一次访问Web应用程序时,服务器会创建一个Session,并给它分配一个唯一的标识符(session ID),然后将该标识符发送给客户端。客户端收到session ID后,通常会将其存储在cookie中,以便后续请求时将其发送回服务器。服务器通过session ID可以找到对应的Session,并从中读取或修改用户信息和状态。session 是基于 cookie 实现的,session 存储在服务器端,sessionId 会被存储到客户端的cookie 中
session的具体实现
设置Session - GET /session/set - 设置示例Session数据
自定义设置Session - POST /session/set?key=xxx&value=xxx - 自定义键值对
获取所有Session - GET /session/get - 获取Session全部信息
获取指定Session属性 - GET /session/get/{key} - 根据key获取
删除Session属性 - GET /session/remove/{key} - 移除指定属性
销毁Session - GET /session/invalidate - 销毁整个Session
设置超时时间 - GET /session/timeout?seconds=3600 - 设置过期时间
检查是否存在 - GET /session/exists/{key} - 检查key是否存在
代码示例
sessoin的优缺点
总结环节
本期我们学习了会话技术的基本知识 还有一些会话跟踪技术像cookie和session 并融合为自己的八股
我是程序员无尽冬感谢你的观看 如果对你有帮助 请一键三连支持一下
最后分享一首歌给大家 https://music.163.com/song?id=1843026858&uct2=U2FsdGVkX1+wmPMP2hAqmkfOEO8MpPsLfcATrin8XZ4=