Servlet & JSP - HttpSession
关于 Session 的内容,参考 HTTP - Session 机制
创建和检索 HttpSession
通过 HttpServletRequest.getSession 方法可以获取 HttpSession 实例。HttpServletRequest 有两个重载的 getSession 方法:
public HttpSession getSession(); public HttpSession getSession(boolean create);
无参数的 getSession 方法返回当前的 HttpSession 实例对象,如果当前不存在 HttpSession 实例的话,则创建一个新的 HttpSession 实例。如果当前不存在 HttpSession 实例的话,getSession(false) 方法不会创建新的 HttpSession 实例;getSession(true) 作用与 getSession() 相同。
设置和获取属性
setAttribute 方法可以在 HttpSession 实例上设置属性值。HttpSession 的属性值不仅可以是 String 类型,还可以是任意实现了 java.io.Serializable 的类型。这样当服务器的内存不足时,Servlet 容器可以将 session 序列化至文件或数据库。如果 HttpSession 的属性值不是可序列化的,那么当 Servlet 容器试图序列化 session 时会抛出异常。
getAttribute 方法可以获取 HttpSession 实例的属性值,getAttributeNames 方法则是获取 HttpSession 实例所有属性的名称。
其他方法
getId: 返回包含分配给此会话的唯一标识符的字符串。标识符是由 Servlet 容器分配的,并且是与实现相关的。
getCreationTime: 返回创建此会话的时间。
getLastAccessedTime: 返回客户端上一次发送与此会话关联的请求的时间。
getMaxInactiveInterval: 返回此会话的闲置时间,以秒为单位。
setMaxInactiveInterval: 设置此会话的闲置时间,以秒为单位。
invalidate: 使此会话无效,然后取消对任何绑定到它的对象的绑定。
isNew: 判断此会话是否为新建的。