关闭浏览器后,session是否还存在?

session是基于cookie的一种会话技术,  数据存放存放在服务器端。客户端在cookie携带JSESSIONID(tomcat服务器生成),来访问服务端,获取对应JSESSIONID的session数据。

session创建和销毁

创建:调用request.getSesion创建 
    
销毁:服务器关闭 , 会话超时(30分)

setAttribute 存放的值, 在浏览器关闭后,还有没有。  有!,就算客户端把电脑砸了也还有。

 

为何关闭浏览器后,再次访问会觉得session失效了呢,这里的失效意思是session的数据丢失了?

其实这里session数据并没有丢失,只是关闭浏览器后,因为默认的cookie生命周期为浏览器的内存,即关掉浏览器之后cookie就失效了,此时JSESSIONID也就没有了。再次访问后,服务器又生成一个新的JSESSIONID,此时request.getSession()通过JSESSIONID获取到的session就不是之前的session了。

 

解决:设置客户端 JSESSIONID  cookie的时间  

            Cookie[] cookies = request.getCookies();
            Cookie cookie = CookieUtils.findCookieByName(cookies, "JSESSIONID");
            cookie.setMaxAge(60*60);
            response.addCookie(cookie);

  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值