jsp学习笔记(七)内置对象Session(续)

(一)Session对象
a.什么是session
(1)session用于跟踪客户状态,一般每个用户登录网站,系统就为之生成一个session对象,用来保存该用户的信息,你可以把session想象成为该用户与网站一系列交互的总和。
Session机制是一种服务端的机制,服务器使用一种类似散列表的结构来保存信息。
(2)当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端里的请求里是否已包含了一个session标识–sessionID,如果已经包含一个sessionID,则说明以前已经为此客户端创建过session,服务器就按照sessionID把这个session检索出来使用,如果客户端请求不包含sessionID,则为此客户端创建一个session并且声称一个与此session相关联的sessionID。
(3)sessionID的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串(服务器会自动创建),这个sessionID将被在本次响应中返回给客户端保存。
(4)如果说Cookie是检查用户身上的”通行证“来确认用户的身份,那么Session就是通过检查服务器上的”客户信息明细表“来确认用户的身份的。Session相当于在服务器中建立了一份“客户信息明细表”。
b.session常用方法
session.setAttribute(“name”,“admin”);
session.getAttribute(“name”);
用于创建及获取客户的会话。
Session.removeAttribute(“name”);
用于从会话中移除指定对象。
session.invalidate();
用于销毁session。
c.session的主要作用
jsp学习笔记(七)内置对象Session(续)
d.session对象的生存期限
jsp学习笔记(七)内置对象Session(续)
PS: Session的有效期是指不活动的时间,如果我们设置是60s,在60s之前,没有访问Session,Session属性失效,若你在60s再次访问过Session,则重新计时。
如果重启了tomcat,reload web应用,或者关机了,Session也会失效。如果希望某个Session失效,可以使用removeAttribute()设置。
Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,无论是否对Session进行读写,服务器都会认为Session活跃了一次。
由于会有越来越多的用户访问服务器,因此Session也会越来越多。为了防止内存溢出,服务器会把长时间没有活跃的Session从内存中删除,这个时间也就是Session的超时时间。
Session的超时时间默认是30分钟。