栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Cookie 和 Session

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Cookie 和 Session

目录
    • `HttpServletRequest` 类中的相关方法
    • `HttpSession` 类中的相关方法
    • Cookie 类中的相关方法
    • HttpServletResponse 类中的相关方法
    • 代码示例: 实现用户登陆

在Servlet中,对于Cookie和Session都有很好的支持,此处就可以基于这个API来完成会话管理的操作。
比如去医院时候的就诊卡:去医院的挂号处,就会先获得到一个就诊卡,就诊卡上就包含了当前患者的关键信息(就相当于cookie ),在各个科室都能刷就诊卡,刷就诊卡的时候,就可以通过医院的服务器,来获取到当前患者的一系列信息,(不只是身份信息,还有以往病例之类的)。
这个机制最主要的用处就是帮助服务器来识别用的身份。
就诊卡就是cookie,医院的数据服务器上就保存着用户的信息也就是通过session 的方式来保存的。

HttpServletRequest 类中的相关方法
方法描述
HttpSession getSession()在服务器中获取会话. 参数如果为 true, 则当不存在会话时新建会话; 参数如果为 false, 则当不存在会话时返回 null
Cookie[] getCookies()返回一个数组, 包含客户端发送该请求的所有的 Cookie 对象. 会自动把Cookie 中的格式解析成键值对

getSession方法,既能用于获取到服务器上的会话,也能用于创建会话.具体行为,取决于参数.
如果参数为true:会话不存在,则创建会话;存在,则获取。
如果参数为false:会话不存在,则返回null;会话存在,则获取。

在调用getSession的时候具体要做的事情:

  1. 创建会话
    首先先获取到请求中cookie里面的sessionld字段(相当于会话的身份标识),判定这个sessionld是否在当前服务器上存在。如果不存在,则进入创建会话逻辑创建会话,会创建一个HttpSession对象,并且生成一个sessionld(是一个很长的数字,通常是用十六进制来表示,能够保证唯一性)
    接下来就会把这个sessionld 作为 key.把这个 HttpSsession对象作为value,把这个键值对,给保存到服务器内存的一个“哈希表”这样的结构中。(实际的实现不一定真是Hash表但是一定是类似的能够存储键值对的结构并且这个数据是在内存中的!)
    再然后,服务器就会返回一个HTTP响应,把sessionld通过 Set-Cookie 字段返回给浏览器.浏览器就可以保存这个sessionld 到Cookie 中了.
  2. 获取会话
    先获取到请求中的cookie里面的sessionld字段(也就是会话的身份标识)
    判定这个sessionld是否在当前服务器上存在(也就是在这个哈希表中是否有),如果有,就直接查询出这个 HttpSession对象,并且通过返回值返回回去.
HttpSession 类中的相关方法

一个 HttpSession 对象里面包含多个键值对. 我们可以往 HttpSession 中存任何我们需要的信息(存储任意的键值对数据(key必须是String, value是一个Object))

方法描述
Object getAttribute(String name)该方法返回在该 session 会话中具有指定名称的对象,如果没有指定名称的对象,则返回 null
void setAttribute(String name, Object value)该方法使用指定的名称绑定一个对象到该 session 会话
boolean isNew()判定当前是否是新创建出的会话

Cookie 类中的相关方法

Cookie[] getCookies():获取到请求中的Cookie数据
返回值是Cookie类型的数组,每个元素是一个Cookie对象.
每个Cookie对象又包含了两个属性:name, value(还是键值对)

HTTP请求中的cookie字段就是按照键值对的方式来组织的。
这里的这些键值对,大概的格式,使用;来分割多个键值对,使用=来分割键和值。这些键值对都会在请求中通过cookie字段传给服务器.服务器收到请求之后,就会进行解析,解析成上述看到的Cookie[]这样的形式.
每个 Cookie 对象就是一个键值对.

HttpServletResponse 类中的相关方法
方法描述
void addCookie(Cookie cookie)把指定的 cookie 添加到响应中

响应中就可以根据addCookie这个方法,来添加一个Cookie信息到响应报文中.
这里添加进来的键值对,就会作为HTTP响应中的Set-Cookie字段来表示。

代码示例: 实现用户登陆

实现简单的用户登陆逻辑
这个代码中主要是通过 HttpSession 类完成. 并不需要我们手动操作 Cookie 对象。

先约定前后端交互接口
两组交互:登录+获取主页

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号