javaweb基础之服务器状态管理技术---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失效

猜你喜欢

转载自blog.csdn.net/weixin_42496678/article/details/82192554
今日推荐