Session对象

session在网络中被称为会话,由于HTTP协议是以重无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该链接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,例如。Tomcat服务器默认为30分钟。不过这个时间可以通过编写程序进行修改。

创建及获取客户的会话

通过session对象可以储存或读取客户相关的信息,如用户名或购物信息等,这可以通过session对象的setAttribute()方法和getAttribute()方法实现。

1.setAtrribute方法

该方法用于将信息保存在session范围内。

session.setAtrribute(String name,Object obj);

name:用于指定作用域在session范围内的变量名。
obj:保存在session范围内的对象。
例如,将李四保存在session范围内的username变量中

session.setAttribute("username","李四");
2.getAttribute方法

该方法用于获取保存在session范围内的信息。

getAttribute(String name);

name:指定保存在session范围内的关键字。
例如要获取保存在session范围内的username变量的值。

session.getAttribute("username");

getAttribute()方法的返回值是Object类型,如果将获取到的信息赋值给String类型的变量,则需要进行强制类型转换活调用其toString()方法。

String user = (String)session.getAttribute("username");
String user = session.getAttribute("username").toString();

从会话中移动指定的绑定对象

对于储存在session会话中的对象,如果想将其从session会话中移除,可以使用session对象的removeAttribute()方法。

removeAttribute(String name);

name:用于指定作用域在session范围内的变量名。一定要保证该变量在session范围内有效,否则将抛出异常。
例如,将保存在session范围内的username对象移除。

session.removeAttribute("username");

销毁session

虽然当客户端长时间不向服务器发送请求后,session对象都会自动消失,但对于某些实时统计在线人数的网站,每次都等session过期后,才能统计出准确的人数,这是远远不够的。所以还需要手动销毁session。通过session对象的invalidate()方法可以销毁session。

session.invalidate();

session对象被销毁后,将不可以再使用该session对象了,如果在session被销毁后,再调用session对象的任何方法,都将报出Session already invalidated异常。

会话超时管理

在应用session对象时应该注意session的生命周期。一般来说,session的生命周期在20~30分钟之间。当用户首次访问时将产生一个新的会话,以后服务器就可以记住这个会话状态,当会话生命周期超时时,或者服务器端强制使会话失效时,这个session就不能使用了。在开发程序时应该考虑到用户访问网站时可能发生的各种情况,例如用户登录网站后在session的有效期外进行相应操作,用户会看到一张错误页面,这样的现象是不允许发生的。为了避免这种情况发生,在开发系统时应该对session的有效性进行判断。
在session对象中提供了设置会话生命周期的方法。

getLastAccessedTime();//返回客户端最后一次与会话相关联的请求时间。
getMaxInactiveInterval();//以秒为单位返回一个会话内两个请求最大时间间隔。
setMaxInactiveInterval()://以秒为单位设置session的有效时间。

例如,设置session的有效期为1000秒,超出这个范围session将失效。

session.setMaxInactiveInterval(1000);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值