您的位置 首页 java

java servlet笔记:图解session原理(用于判断登陆是否过期)

图解 Session 原理

前面讲了 Cookie 生成机制: java servlet笔记:图解cookie原理(比如登陆时的记住密码)

同时,也用cookie写了一个登陆时记住用户名和密码的小例子: java中用cookie实现登陆时记住密码(附源码)

今天来说说java servlet中一个非常非常重要的对象,那就是session。

一、健身房的储物柜

考虑这个场景:

李佳汜到健身房去练胸肌,首先领了钥匙,然后进了更衣间,把衣服,裤子,手机,钱包都放在盒子里面。

毛竞也到健身房,去练翘臀。首先领了钥匙,然后 进了更衣间,把衣服,裤子,手机,《Java 21天从入门到精通》也放在了一个盒子里,但是这个盒子是和李佳汜的是不同的。

健身房,就相当于服务器,盒子,就是会话Session。

切换到我们常见的购物网站的场景

李佳汜登陆天猫之后,在购物车里看到的物品是蜡烛和皮鞭

毛竞登陆天猫之后,在购物车里看到的物品是手铐和《Java 21天从入门到精通》

二、什么是session

Session对应的中文翻译是会话。

会话指的是从用户打开浏览器访问一个网站开始,无论在这个网站中访问了多少页面,点击了多少链接,都属于同一个会话。 直到该用户关闭浏览器为止,都属于同一个会话。

三、创建session

session.setAttribute(“name”, “teemo”);

session对象保存数据的方式,有点像Map的键值对(key-value)

“name”是键,”teemo” 是值

四、获取session

session.getAttribute(“name”);

通过session,根据”name” 取出对应的名称

五、session和cookie的关系

回到健身房的储物柜这一段:

李佳汜和毛竞都有自己的盒子,那么他们怎么知道哪个盒子是自己的呢?

通过钥匙就能找到自己的盒子了。

盒子对应服务器上的Session。

钥匙对应浏览器上的Cookie。

六、session原理示意图

七、如果没有cookie,session怎么工作

如果浏览器把cookie功能关闭,那么服务端就无法获取jsessionid,每一次访问,都会生成一个新的session对象。

为了解决这个问题,可以使用

response.encodeURL(“getSession.jsp”))

response.encodeURL方法会把getSession.jsp这个url转换为

getSession.jsp;jsessionid=22424AEA86ADBE89F335EEB649D997A8

通过这个方式,提交jsessionid到服务器。 服务器根据这个jsessionid匹配到对应的session. 与session相关的功能,就可以正常工作了。

八、session的有效期

比如登录一个网站,登录后,在短时间内,依然可以继续访问而不用重新登录。

但是较长时间不登录,依然会要求重新登录,这是因为服务端的session在一段时间不使用后,就失效了。

这个时间,在 Tomcat 默认配置下,是30分钟。

可以通过 d:/tomcat/conf/web.xml 中的session-config 配置进行调整

感谢你长得这么漂亮还来看我的文章,喜欢就点关注哦!

文章来源:智云一二三科技

文章标题:java servlet笔记:图解session原理(用于判断登陆是否过期)

文章地址:https://www.zhihuclub.com/186949.shtml

关于作者: 智云科技

热门文章

网站地图