session, sessionId, cookie, JSESSIONID区别和联系

48 篇文章 0 订阅
47 篇文章 0 订阅

Summary

  • 各自是什么
  1. session
    客户端和服务器之间的会话。多个session对象都存储在server的内存中。
  2. sessionId
    session对象的标识符。
    server用sessionId来区分内存中多个不同的session对象。
    每个客户端要知道自己是谁,叫啥名字(就是这个sessionId)
  3. cookie
    客户端的备忘录,存储一些键值对。其中包括存储sessionId的键值对。
  4. JSESSIONID
    传输sessionId的值时,得起个名字,然后传输JSESSIONID=xxx。也可以叫hellosessionId,传输hellosessionId=xxx
  • 用一段话阐述关系:
    session是存储在服务器内存中的,与客户端<-->服务器这种关系一一对应的对象。
    每个session对象有一个唯一的标识符(即sessionId),以做区分。
    Cookie是在客户端存储一些键值对的文本/容器。这个容器中存啥都行,开发人员说了算。
    其中一个键值对:JSESSIONID=xxxxxx,其中的就是JSESSIONID(这个名字叫啥由web服务器的开发者说了算)。

Intro

下面按照从服务端管理到客户端配合管理的方向,按流程进行叙述。

  1. session
    会话。会话是客户端和服务器之间的一次对话
    客户端A对server说:给我个index.jsp(或其他的东西),会话开始。中间各种操作。
    然后A一直不说话,等了30分钟,这个会话就会死(这个30分钟的session-timeout可以在web.xml中配置)
    或者是A在说话,但是后端代码里执行session.invalidate(),这个会话也会死
    会话存储在server端(所以有时会说:太多的会话对象会给server造成负担)。
    比方说:有10个客户端都在和Server交流,对每个客户端来说,都只和一个人说话。
    但是对server来说:我可是同时在和10个人说话啊。。。
    所以在server端会保存10个session对象。每个session对象里会有多个属性attribnute,存储server和对应的客户端的一些小秘密(key-value对存储)。
    很想画个图,不太方便。略过。。。

    server端的这10个session对象,每个对应1个客户端。
    那server就想了,我怎么区分一下我这里的10个session对象呢,不然等会万一有1000个session怎么办呢。
    对了,搞个ID吧/我给每个Session对象贴一个(唯一的)标识符。
    这个ID,就是sessionId

  2. sessionId
    sessionId在server这边,是为了区分多个不同的session。
    而每个客户端也需要搞清楚自己的定位,自己发请求的时候,要知道自己是谁,并且告诉server自己是谁(自己的ID)
    新人怎么办呢,只要你发请求的时候不说清楚:你的ID是多少。那我一律按照萌新处理。
    对于第一次过来的萌新,我会给你起个名字(定一个唯一的标识符)。并在响应的时候把这个标识符。
    以后你们这些知道自己名字的客户端,和我聊天请顺便说名字(不说的都按萌新处理)。

    我们说,server运行期间,是在内存中实例化好多session对象的。sessionId就标在session对象额头上,以区分多个session。
    而每个客户端也要知道自己的sessionId。
    但问题是,客户端的sesionId怎么保存/记忆?
    这就有了客户端的cookie

  3. cookie
    cookie,是客户端存储的小段文本信息。
    毕竟,客户端也是有需求的,也需要存储一些键值对的数据(比如sessionId=wuyujin1997)。
    cookie中也可以存储其他东西,比如客户端A的用户密码,比如其他。

    这一份cookie中存储了多个键值对/名值对。
    我想问一个核心的:那个sessionId的值,叫什么名字?

    JSESSIONID就是tomcat传输sessionId时,起的名字。

  4. JSESSIONID
    Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了。

Links

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值