状态管理技术~~Session

一、什么是session

session用于跟踪客户的状态

session指的是在同一段时间,单个客户与web服务器的一连串的交互过程

在一个session中,客户可能会多次请求访问同一个网页,也可能请求访问各种不同的服务器资源



二、session的工作原理

http:无状态 无连接

session被用于表示一个持续的连接状态,在网站访问中一般指代客户端浏览器的进程从开启到结束的过程。session其实就是网站分析的访问(visits)度量,表示一个访问的过程。

session的常见实现形式是会话cookie(session cookie),即未设置过期时间的cookie,这个cookie的默认生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。

实现机制是当用户发起一个请求的时候,服务器会检查该请求中是否包含sessionid,如果未包含,则系统会创造一个名为JSESSIONID的输出 cookie返回给浏览器(只放入内存,并不存在硬盘中),并将其以HashTable的形式写到服务器的内存里面;当已经包含sessionid是,服务端会检查找到与该session相匹配的信息,如果存在则直接使用该sessionid,若不存在则重新生成新的 session。

这里需要注意的是session始终是由服务端创建的,并非浏览器自己生成的。 但是浏览器的cookie被禁止后session就需要用get方法的URL重写的机制或使用POST方法提交隐藏表单的形式来实现


三、如何获取session

  • HttpSession session=request.getSession();

  • 唯一标记: session.getId()

  • 最后一次访问时间,毫秒:session.getLastAccessedTime()

  • 获取最大的空闲时间,单位秒:getMaxInactiveInterval()

  • 获取Session的创建,单位毫秒 :session.getCreationTime()

  • 使用session绑定对象: session.setAttribute(属性名,Object)

  • 删除session : session.invalidate()



四、session的超时

HttpSession的最后一程访问时间和当前时间的差距大于了指定的最大空闲时间,这时服务器就会销毁Session对象。

默认的空闲时间为30分钟



五、session失效的几种情况

1、超过了设置的超时时间
2、主动调用了invalidate方法
3、服务器主动或异常关闭
注意:浏览器关闭并不会让Session失效

发布了90 篇原创文章 · 获赞 111 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_42950079/article/details/102654661
今日推荐