欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Session

程序员文章站 2024-03-20 18:02:58
...

1、什么是Session

     当人们去医院就诊时,就诊病人需要办理医院的就诊卡,该卡上只有卡号,而没有其他信息。但病人每次去该医院就诊时,只要出示就诊卡,医务人员便可根据卡号查询道病人的就诊信息。Session技术就好比医院发给病人的就医卡和医院为每个病人保留病历档案的过程。当浏览器访问Web服务器时,Servlet容器就会创建一个Session对象和ID属性,其中,Session对象就相当于病历档案,ID就相当于就诊卡号。当客户端后续访问服务器时,只要将标识号传递给服务器,服务器就能诊断出该请求是哪个客户端发送的,从而选择与之对应的Session对象为其服务。

     需要注意的是,由于客户端需要接收、记录和回送Session对象的ID,因此,通常情况下,Session是借助Cookie技术来传递ID属性的。

   

2、有了Cookie为什么还有Session

     * Cookie 是由大小和个数限制的。Session存到服务器端的技术,没有大小和个数的限制。

     * Cookie 相对于Session来讲不安全。

3、如何使用Session

     Session是与每个请求消息紧密相关的,为此,HTTPServletRequestd定义了用于获取Session对象的getSession()方法,该方法有两种重载形式,具体如下:

public HttpSession getSession(boolean create)

public HttpSession getSession()

     上面重载的两个方法都用于返回与当前请求相关的HttpSession对象。不同的是,第一个getSession()方法根据传递的参数来判断是否创建新的HttpSession对象,如果参数为true,则在相关的HttpSession对象不存在时创建并返回新的HttpSession对象,否则不创建新的HttpSession对象,而是返回null。第二个getSession()方法则相当于第一个方法参数为true时的情况,在相关的HttpSession对象不存在时总是创建新的HttpSession对象。

     要想使用HttpSession对象管理会话数据,不仅需要获取到HttpSession对象,还需要了解HttpSession对象的相关方法。

方法声明 功能描述
String getId() 获取sessionId
 long getCreationTime() 返回session的创建时间,返回值为当前时间的毫秒值
long getLastAccessedTime() 返回session的最后活动时间,返回值为当前时间的毫秒值
void setMaxInactiveInterval(int var1) 设置Session超时时间
boolean isNew() 该Session是否为新的
void invalidate() 销毁该Session
ServletContext getServletContext() 获取ServletContext对象
void setAttribute(String name, Object value 设置Session属性
void removeAttribute(String var1) 移除Session属性