Web应用状态管理(Session)

Session

Session对象的原理在于,服务器可以为客户端创建并维护一个Session对象,用于存放数据。在创建Session对象的同时,服务器将会为该Session对象产生唯一编号,这个编号称之为SessionID,服务器以Cookie的方式将SessionID存放在客户端。当浏览器再次访问该服务器时,会将SessionID作为Cookie信息待带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问。需要注意的是,此时Cookie中仅仅保存了一个SessionID,而相对较多的会话数据保存在服务器端对应的Session对象中,由服务器统一维护,这样一定程度保证了会话数据的安全性,但增加了服务器端的内存开销。
存放在客户端的用于保存SessionID的Cookie会在浏览器关闭时清除。我么把用户打开一个浏览器访问某个应用开始,到关闭浏览器为止的交互过程成为一个”会话“在一个”会话“过程中,可能会向同一个应用发出了多次请求,这些请求将共享一个Session对象,因为这些请求携带了相同的SessionID信息。
Session工作流程

Session会话跟踪机制
当客户端第一个发送请求到服务器时通过
HttpSession session = request.getSession();
为客户端创建一个Session对象。
如何判断是否是一个新会话呢?使用isNew()方法。
getSession(false)方法使用已经存在的会话,而不必创建新会话,默认为true。

当用户请求之后服务器将SessionID设置在Cookie中返回给客户端,如:
Set-Cookie: JSESSIONID=3453597CE6EA6B4F948C09D67530F2C0;

客户端再次发送请求的时候:cookie就将SessionID作为请求头的信息发送到服务器,如:
Cookie: JSESSIONID=3453597CE6EA6B4F948C09D67530F2C0

HttpSession接口:
HttpSession接口常用的一些方法
setAttribute(java.lang.String, java.lang.Object):在Session对象中用一个名字绑定一个对象。
getAttribute(java.lang.String):通过名字获取Session对象中保存的对象。
removeAttribute(java.lang.String):在Session中删除与一个名字对应的对象。
getCreationTime():返回第一次创建会话的时间。
getLastAccessedTime():返回容器最后一次得到该会话ID的请求时间。
setMaxInactiveInterval(int interval):对于会话指定客户请求的最大间隔时间,以秒为单位。-1表示永不过期
getMaxInactiveInterval(int interval):返回客户请求的最大间隔时间。
invalidate():会话结束,当前存在在会话中的所有会话属性也会解除绑定。
getId():此方法返回每个session唯一的标识

会话超时管理

销毁会话可以采用如下三种简单的方式
设置会话超时。
在Session对象上调用invalidate()方法。
应用结束(崩溃或取消部署)
在web.xml文件中配置
< session-config >

< session-timeout >15(以分钟为单位)</ session-timeout >

< /session-config>

Application与Session域范围的属性比较

在web应用上下文域范围和Session域范围中,都可以用一个名字来绑定一个对象,从而在域范围内进行访问
绑定在Session范围内的对象仅仅在一个持续的会话期间被维护
绑定在Application(应用上下文)中的对象,在整个Web应用程序运行过程中都被维护。
都使用相同的方法:setAttribute() getAttribute()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值