Session机制

      Servlet可以通过三个不同的作用域来存储对象:Session对象、Request对象、servletContext对象。

      Session是用户的会话对象,当浏览器向服务器发送请求时,就产生了一个session对象;

      Request是有关客户端所发出的请求对象;

      servletContext是Servlet上下文的环境变量。这三个对象都提供了对于属性操作相同的方法:

 

setAttribute(String name,Object o)    调用此方法可以设置指定名字的对象(其中所有的名字都是String类型,而值是Object类型)

getAttribute(String name)      调用该方法可以取得指定名字的对象
removeAttribute(String name)    该方法可以移除指定名字的对象

 

     当Session(Request ,servletContext)对象调用getAttribute(String name,Object o)设置了属性后,在另一个地方调用getAttribute(String name)方法得到了开始设置的o,要注意的是:两次调用方法的对象必须是同一个对象。灵活运用getAttribute(String name,Object o)和getAttribute(String name)方法,会给传递参数的时候带来方便。

保存这三个对象范围内的数据,它们的生命周期是不同的:

     Session中的数据对应客户机的浏览器进程,即浏览器不关闭,服务器Session中数据就有效;

     Request中的数据,仅在一个请求应答的流程中有效;

     servletContext中的数据,只要web服务器不关闭,就一直有效。

 

     Session对象中存放的数据是名值对,其中所有的名字都是String类型,值是Object对象,这种存放数据的方式,跟Map对象以键值的方式存放数据类似。在服务器端的一个Session对象,对应了一个客户端的进程——客户的浏览器,当用户第一次通过,浏览器访问服务器时,服务器端会创建一个Session对象,并生成与该对象相对应的唯一的ID,服务器在应答浏览器时,将生成的ID一并送回给浏览器;浏览器将这个ID放到缓存中,当再次访问服务器时,这个ID会连同发送的请求一并发送给服务器,服务器就通过比对ID识别两次发送请求的是不是同一浏览器。但这个ID是有时间周期的,Session默认的时间周期是半小时(浏览器在第一次发送请求后,三十分钟内再没有向服务器发送请求),如果你想设置这个时间周期,可以通过Session对象调用setMaxInactiveInterval(int seconds)方法,传入一个以秒为单位的值设置时间周期;也可以在web.xml中设置会话的时间周期,如下面设置10分钟的会话的时间周期:

<session-config>
     <session-timeout>10</session-timeout>
</session-config>

     这样设置后,如果浏览器在十分钟内,未向服务器发送任何请求,先前生成的ID就自动销毁了,当再次向服务器发送请求的时候,服务器端会生成另外的一个ID。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值