Session是一个用来跟踪与一个用户交互过程及其状态的对象,其特点是可以为每个用户保存信息。Session的信息保存在服务器端,Session的id保存在客户机的cookie中。如果客户机禁止cookie,Session id就必须附加在URL后面。一般可以在服务器上设置一个Session过期时间,当客户停止活动超过这个时间后,Session对象自动失效。
用户登录系统后,必须有一个表示用户登录身份的标志,通常的方法就是在用户登录成功时,随即将其用户名保存在Session对象中,在用户的整个会话过程中它都将有效,因此,需要用户登录后才能访问的地方,都能通过检查Session中是否有uid属性来判断用户是否已经登录过。
Session对象主要有以下方法:
getAttribute(String name)方法,返回指定名称的属性。如果该名称的属性不存在,返回结果为null。
getId()方法,返回当前的Session编号。服务器为每个登录系统的用户分配一个惟一的编号,用来区分用户。
getAttributeNames()方法,返回Session对象中存储的每一个属性的名称,返回值是一个枚举对象。
getCreationTime()方法,返回Session对象创建的时间。
getLastAccessTime()方法,返回当前Session对象最近访问的时间。
removeAttribute(String name)方法,删除Session对象中指定的属性,属性值和属性名将全部删除。
setAttribute(String name,Object obj)方法,设定或更新Session对象中指定名称的属性值。
getMaxInactiveInteral()方法,返回Session对象的生存时间。
其中最常用的方法是getAttribute(String name)和setAttribute(String name,Object obj),其次就是removeAttribute(String name)。通过这几个方法,就可以完成用户私有信息的存储和删除。Session中保存和检索的信息不能是基本数据类型(primitive data types)如(int, double)等,而必须是Java的相应的Object(对象)如(Integer, Double)。
在用户成功登录后,只需要将用户名uid放入Session对象即可。设置uid属性比较简单:
session.setAttribute(“uid”, uid) ; |
此语句旨在将当前登录用户的uid放入Session对象。Session对象中有uid属性表示该用户已经登录,如果没有uid属性,表示尚未登录。
Session不仅仅能用于保存用户的登录信息,通常也将一些用户会话期间需要暂时保存的信息保存在其中,例如一个购物网站,就可以将购物车的内容保存在Session内,待提交时再进行写回数据库等其他操作。
在需要登录后才能访问的页面中,只要读取Session对象中的uid属性即可知道用户是否已经登录。读取Session对象属性的方法库:
String uid = (String)session.getAttribute(“uid”) ; |