浅析Session机制

首先在了解session机制前,我们先搞懂什么是会话?

会话对应的英语单词:session

用户打开浏览器,进行一系列操作,然后最终将浏览器关闭,这一整个过程叫做一次会话。会话在服务器端会生成一个对象,这个对象就是session对象。一次会话中包含多次请求。

session对象的主要作用就是:保存会话状态。

那么为什么要用session对象保存会话状态呢?

    因为HTTP协议是一种无状态协议,可以理解为在一次请求中,浏览器与服务器是处于连接状态,但是当请求结束后,这种连接就会断开。当初设计这种协议的目的就是为了降低服务器端的压力,你试想一下如果连接不断开的话,随着用户的请求不断增加,没有释放连接,服务器就会冒烟。而且当我们关闭浏览器时(断开连接)服务器是不知道这件事的。

session的底层实现原理:

当我们使用session机制时,也就是当我们在servlet类中有这么一段代码时(HttpSession session=request.getSession),服务器就会创建一个session对象,其对应有一个域,称之为"会话域",我们从请求中得到的数据就放在这个域中,这里要区分的是还有两个域,“请求域”和“应用域”,不要搞混了,他们的大小关系为应用域>会话域>请求域。当我们创建了这个session对象后与之同时还生成了一个东西,这个东西叫做JSESSIONID就是一个session对象的id(本质上是cookie),服务器就会将这个JSESSIONID传回给浏览器,一般存储在浏览器的运行内存中和硬盘软件中,在下一次请求中,就会带着这个JSESSIONID一起到服务器,进行session对象的匹配,关闭浏览器结束对话时就会这个cookie销毁,session销毁(实际上并没有马上销毁,只不过是session对象有一个生命周期,生命周期结束自动销毁罢了)

总结:session就是一个存储于服务器的对象,通过session可以实现数据共享,session有一个JSESSIONID,这个是session的唯一标识,使用它可以查找到session。session是会话级别的,对于每一个客户端来说是独享它所拥有的session的,我们使用session在进行页面跳转时,服务端可以利用session进行数据共享。session由服务器进行控制。session的创建和销毁都是服务器进行管理的。服务器会为每一个客户端创建一个session。

详情可以看这篇文章:

https://blog.csdn.net/m0_51545690/article/details/123384986?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167808237616800184151321%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167808237616800184151321&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123384986-null-null.142^v73^insert_down3,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=session&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值