Session

Session

什么是Session

  1. Session就是一个接口(HttpSession)
  2. Session就是会话,它是用来维护一个客户端和服务器之间关联的一种技术
  3. 每个客户端都有自己的一个Session会话
  4. Session会话中,我们经常用来保存用户登录之后的信息

Cookie保存在客户端,而Session则保存在服务器端

如何创建Session和获取(id号,是否为新)

如果创建和获取Session,它们的API是一样的

request.getSession()

第一次调用是:创建Session会话

之后调用都是:获取前面创建好的Session会话对象

isNew():判断是不是刚创建出来的(新的)

true 表示刚创建

false 表示获取之前创建

每个会话都有一个身份证号,也就是ID值,而且这个ID值是唯一的

getId()得到Session的会话id值

Session生命周期控制

setMaxInactiveInterval(int interval)方法,该方法可以指定Servlet容器使此会话失效之前客户端请求之间的时间间隔,以秒为单位,负数事件指示会话永远不会超时,超过指定时长,session就会被销毁

<session-config>    
	<session-timeout>20</session-timeout>
</session-config>

可以通过xml配置文件修改超时时长,注:这个方法会设置全部的session会话默认超时时长

getMaxInactiveInterval() 可以获取Session会话超时时间,默认超时时长30分钟

session的超时,指的是,客户端两次请求的最大间隔时长,如果超出这个时长,上次会话的记录就会被删除,再次发送请求,就会创建新的session对象,之前的数据就不存在了

.invalidate() 方法会让当前session会话马上超时

Session会话的id是存在于cookie中,Tomcat创建的储存sessionid的cookie名为JSESSIONID,每次浏览器关闭Session会话并不会删除,但是我们又访问不到session的数据,原因是,储存着sessionid的cookie被删除,导致sessionid丢失,也就找不到上次访问的会话了,这就造成了数据丢失,关闭session的方法只有,会话超时或者 .invalidate() 方法

每次客户端发送请求获取session会话的时候,都会把自己的Cookie发送给服务器,当服务器拿到响应的Cookie之后,发现其中的sessionid信息,就可以找到之前的对象,从而得到之前的信息,但是如果没有这个cookie,在获取会话的时候,服务器找不到对象,就会重新创建一个session对象返回给客户端,这就导致了数据的丢失

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZBrhwrpl-1624329122599)(C:\Users\Administrator\Desktop\笔记\session会话.png)]

也就是说Session技术,底层是基于Cookie技术实现的

也就是说Session技术,底层是基于Cookie技术实现的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值