SessionId详解

SessionId详解1 客户端用 cookie 保存了 sessionId 客户端用 cookie 保存了 sessionId 当我们请求服务器的时候 会把这个 sessionId 一起发给服务器 服务器会到内存中搜索对应的 sessionId 如果找到了对应的 sessionId 说明我们处于登录状态 有相应的权限 如果没有找到对应的 sessionId 这说明 要么是我们把浏览器关掉了 后面会说明为什么 要么 session 超时了

1、客户端用cookie保存了sessionId

客户端用cookie保存了sessionId,当我们请求服务器的时候,会把这个sessionId一起发给服务器,服务器会到内存中搜索对应的sessionId,如果找到了对应的 sessionId,说明我们处于登录状态,有相应的权限;如果没有找到对应的sessionId,这说明:要么是我们把浏览器关掉了(后面会说明为什 么),要么session超时了(没有请求服务器超过30分钟),session被服务器清除了,则服务器会给你分配一个新的sessionId。你得重 新登录并把这个新的sessionId保存在cookie中。
在没有把浏览器关掉的时候(这个时候假如已经把sessionId保存在cookie中了)这个sessionId会一直保存在浏览器中,每次请求的时候都会把这个sessionId提交到服务器,所以服务器认为我们是登录的;当然,如果太长时间没有请求服务器,服务器会认为我们已经所以把浏览器关掉了,这个时候服务器会把该sessionId从内存中清除掉,这个时候如果我们再去请求服务器,sessionId已经不存在了,所以服务器并没有在内存中找到对应的 sessionId,所以会再产生一个新的sessionId,这个时候一般我们又要再登录一次。

2、客户端没有用cookie保存sessionId

这 个时候如果我们请求服务器,因为没有提交sessionId上来,服务器会认为你是一个全新的请求,服务器会给你分配一个新的sessionId,这就是 为什么我们每次打开一个新的浏览器的时候(无论之前我们有没有登录过)都会产生一个新的sessionId(或者是会让我们重新登录)。
当我们一旦把浏览器关掉后,再打开浏览器再请求该页面,它会让我们登录,这是为什么?我们明明已经登录了,而且还没有超时,sessionId肯定还在服 务器上的,为什么现在我们又要再一次登录呢?这是因为我们关掉浏览再请求的时候,我们提交的信息没有把刚才的sessionId一起提交到服务器,所以服 务器不知道我们是同一个人,所以这时服务器又为我们分配一个新的sessionId,打个比方:浏览器就好像一个要去银行开户的人,而服务器就好比银行, 这个要去银行开户的人这个时候显然没有帐号(sessionId),所以到银行后,银行工作人员问有没有帐号,他说没有,这个时候银行就会为他开通一个帐 号。所以可以这么说,每次打开一个新的浏览器去请求的一个页面的时候,服务器都会认为,这是一个新的请求,他为你分配一个新的sessionId。







版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213631.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:56
下一篇 2026年3月18日 下午5:56


相关推荐

  • java heap和stack区别_heap和stack有什么区别?

    java heap和stack区别_heap和stack有什么区别?1 Java 中对象都是分配在 heap 堆 中 从 heap 中分配内存所消耗的时间远远大于从 stack 产生存储空间所需的时间 a 每个应用程序运行时 都有属于自己的一段内存空间 用于存放临时变量 参数传递 函数调用时的 PC 值的保存 这叫 stack b 所有的应用可以从一个系统共用的空间中申请供自己使用的内存 这个共用的空间叫 heap c stack 中的对象或变量只要定义好就可使用了 应用程序结束时会自

    2026年3月19日
    1
  • dotnettextbox在服务器上问题

    dotnettextbox在服务器上问题br dotnettextbo 作为网页后台的文本编辑器在我的 3 5 版程序上正常 但放到服务器上 2 0 不支持 3 5 就报没有 EnvDTE DLL 的错误 br nbsp br Couldnotload EnvDTE Version 8 0 0 0 Culture neutral PublicKeyTok b03f5f7f11d5 oroneofitsde 系统找不到指定的文件 br nbsp br

    2026年3月26日
    2
  • epoll使用具体解释(精髓)

    epoll使用具体解释(精髓)

    2021年12月7日
    66
  • 线性代数五阶行列式计算(行列式的计算方法)

    由于线程代数的学习主要是为H.264算法的学习做铺垫,所以行列式的计算法就过多展开,详细请查看【线性代数(5)】等和,三叉型,反对称行列式计算及python代码辅助验证例1:化为上三角(就硬算)巧妙使用展开式例3:反对称行列式反对称行列式描述:主对角线全为0,上下位置对应成相反数(aij=−ajia_{ij}=−a_{ji}aij​=−aji​)对称行列式描述:主对角线没有要求,上下位置相等(aij=ajia_{ij}=a_{ji}aij​=aji​)定理:

    2022年4月9日
    971
  • 图解回溯算法

    图解回溯算法回溯算法是什么 回溯法 探索与回溯法 是一种选优搜索法 又称为试探法 按选优条件向前搜索 以达到目标 但当探索到某一步时 发现原先选择并不优或达不到目标 就退回一步重新选择 这种走不通就退回再走的技术为回溯法 而满足回溯条件的某个状态的点称为 回溯点 可以解决什么问题 排列 组合 子集 幂集 字符全排列 在传值时 对于排列问题 是要删掉单个用过的元素 组合问题 是删掉前面所有的元素 数组 字符串 给定一个特定的规则 尝试搜索迭代找到某个解 二维数组下的 DFS 搜索 八皇后 黄金矿工 数独

    2026年3月20日
    3
  • pycharm中mysql连接失败_pycharm连接mysql数据库连接不上[通俗易懂]

    pycharm中mysql连接失败_pycharm连接mysql数据库连接不上[通俗易懂]代码其实很简单,只有一小段,是在pycharm上运行的,所用的python版本为2.7,mysql版本为5.7.21#-*-coding:UTF-8-*-importreimportMySQLdbif__name__==’__main__’:#打开数据库conn=MySQLdb.connect(host=’localhost’,port=3306,user=’root’,pa…

    2025年6月21日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号