session是服务器端上网用户数据的访问区,和application不同的是,session中存放的是用户的个别数据。每个session都是独立的,并且其中的数据互不相干,因此对不同的用户来说,网页读取的数据也不同。
当服务器为某个用户创建session后,会给session一个识别的字符串,此字符串数据还会发送到客户端并记录在浏览器的Cookies中。当用户提出请求时,此字符串数据会一起发送,服务器接收到字符串数据后,与各个session的标识字符串逐一比对,即可知道用户拥有的session数据。
session和application一样,都不会永久存在,当以下情况发生时,session和其中的数据就会消失:
- 用户关闭目前正在使用的浏览器程序。
- 关闭网页服务器。
- 用户未向服务器提出请求超过默认时间,Tomcat服务器默认为30分钟。
- 执行程序结束session.
访问session的数据
- 创建session变量
session.setAttribute("变量名",变量值);
- 返回session中的变量
session.getAttribute("变量名");
- 返回所有session中的变量名
Enumeration<String> names = session.getAttributeNames();
- 移除session中的变量
session.removeAttribute("变量名");
- 结束session
session.invalidate();
其他session对象的常用方法
方法 | 说明 |
---|---|
getCreationTime() | 返回session创建时间,返回值为格林尼治时间自1970年1月1日开始算起到session创建的毫秒数 |
getId() | 返回一个session的标识符串 |
getLastAccessedTime() | 返回客户端对服务器端提出请求,到处理session中数据最后的时间,若为新创建的session,则返回 -1 |
getMaxInactiveInterval() | 返回客户端未对session提出请求而session开始停滞到自动消失之间所间隔的时间,返回值以秒为单位 |
isNew() | 返回布尔值表示是否为新建的session |
setMaxInactiveInterval(int interval) | 设置客户端未对session提出请求而session开始停滞到自动消失之间所间隔的时间为interval,以秒为单位 |