Session介绍,Session常用API

什么是Session:Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器,这就是Session.

如果说Cookie是检查用户身上的”通行证“来确认用户的身份,那么Session就是通过检查服务器上的”客户信息明细表“来确认用户的身份的。Session相当于在服务器中建立了一份“客户信息明细表”。

为什么要使用Session技术?

Session比Cookie使用方便,Session可以解决Cookie解决不了的事情【Session可以存储对象,Cookie只能存储字符串】。

Session API

long getCreationTime();【获取Session被创建时间】

String getId();【获取Session的id】

long getLastAccessedTime();【返回Session最后活跃的时间】

ServletContext getServletContext();【获取ServletContext对象】

void setMaxInactiveInterval(int var1);【设置Session超时时间】

int getMaxInactiveInterval();【获取Session超时时间】

Object getAttribute(String var1);【获取Session属性】

Enumeration getAttributeNames();【获取Session所有的属性名】

void setAttribute(String var1, Object var2);【设置Session属性】

void removeAttribute(String var1);【移除Session属性】

void invalidate();【销毁该Session】

boolean isNew();【该Session是否为新的】

Session有着request和ServletContext类似的方法。其实Session也是一个域对象。Session作为一种记录浏览器状态的机制,只要Session对象没有被销毁,Servlet之间就可以通过Session对象实现通讯.

通过Session简单实现Serclet之间的通信

在另一个Servlet获得Session数据

控制台输出:

一般来讲,当我们要存进的是用户级别的数据就用Session,那什么是用户级别呢?只要浏览器不关闭,希望数据还在,就使用Session来保存.

Session的生命周期

第一种方式:在tomcat/conf/web.xml文件中设置,时间值为10分钟,所有的WEB应用都有效.

第二种方式:在单个的web.xml文件中设置,时间值为10分钟,对单个web应用有效,如果有冲突,以自己的web应用为准。·

第三种方式:通过setMaxInactiveInterval()方法设置

Session的有效期

Session的有效期是指不活动的时间,如果我们设置是60s,在60s之前,没有访问Session,

Session属性失效,若你在60s再次访问过Session,则重新计时。

如果重启了tomcat,reload web应用,或者关机了,Session也会失效。如果希望某个Session失效,可以使用removeAttribute()设置。

Cookie的生命周期按累计的时间来计算的。

Session在用户第一次访问服务器Servlet,JSP等动态资源时就会被自动创建,Session对象保存在内存里,这也就为什么上面的例子可以直接使用request对象获取得到Session对象。

如果访问HTML,IMAGE等静态资源Session不会被创建。

Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,无论是否对Session进行读写,服务器都会认为Session活跃了一次。

由于会有越来越多的用户访问服务器,因此Session也会越来越多。为了防止内存溢出,服务器会把长时间没有活跃的Session从内存中删除,这个时间也就是Session的超时时间。

Session的超时时间默认是30分钟。有三种方式可以对Session的超时时间进行修改。

第一种方式:在tomcat/conf/web.xml文件中设置,时间值为10分钟,所有的WEB应用都有效.

第二种方式:在单个的web.xml文件中设置,时间值为10分钟,对单个web应用有效,如果有冲突,以自己的web应用为准。·

第三种方式:通过setMaxInactiveInterval()方法设置

Session的有效期

Session的有效期是指不活动的时间,如果我们设置是60s,在60s之前,没有访问Session,

Session属性失效,若你在60s再次访问过Session,则重新计时。

如果重启了tomcat,reload web应用,或者关机了,Session也会失效。如果希望某个Session失效,可以使用removeAttribute()设置。

Cookie的生命周期按累计的时间来计算的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181111G18X4400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券