【Servlet】session

session:即会话,Web应用中,会话指的是在一段时间内,浏览器与服务器之间进行的请求和响应的交互过程。在一个会话中,用户可以访问该Web项目中的包括网页在内的多种资源
session解决了一个用户的不同请求之间的数据共享问题,只要session不失效,用户向服务器发送请求获得的都是同一个session

第一次向某Web项目发送请求

当用户通过浏览器向某Web应用服务器第一次发送请求时,服务器会为该用户创建一个唯一标识的session,该session会一直持续到本次访问结束(关闭浏览器),JSP使用使用session对象表示会话,将信息保存在session对象中,方便用户在这个会话中随时获取
在这里插入图片描述
我们可以看到,当第一次向该Web项目发送请求时,请求头中没有session,而响应头中有session,并且将其设置为了cookie

第二次向某Web项目发送请求

只要是该项目名,即使没有该文件,请求头中也会出现与第一次访问时响应头中相同ID的session,下图为第二次向该项目发送请求:
在这里插入图片描述

正常关闭Web服务器时

如果服务器正常关闭,则将对象序列化到tomcat根目录下的work文件夹中与刚才访问过的那个项目名同名的文件夹中的SESSION.ser文件内,如下:
在这里插入图片描述
服务器重新启动,则将该文件中session对象重新反序列化,此时上图的SESSION.ser文件将会被删除,再次访问该项目,此时的请求头中自动添加了与第一次访问时响应头中相同ID的session,如下图:
在这里插入图片描述

session的使用

创建session对象:

HttpSession hs = request.getSession();

设置session的有效时间:

hs.setMaxInactiveInterval(int seconds);

设置session强制失效,可用于退出账户:

hs.invalidate();

session对象添加数据:

hs.setAttribute(String name,Object value);

获取session对象数据(与session添加数据不在同一个servlet):

hs.getAttribute(String name);
session的失效

1、执行了invalidate方法后,session失效;
2、关闭浏览器后,该session失效;
3、如果没有设置session的时间,默认即使没有关闭浏览器,在浏览器页面停留30分钟,session也会失效;
4、如果设置了session的时间,则在设定的时间内没有向该服务器发送请求时,session失效;
5、session的超时计算是从上次向该服务器发送请求到本次请求之间的时间;
6、如果session失效,服务器端会再次生成一个新的session对象,并把其id响应给浏览器端,利用cookie存储在浏览器端。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值