jsp内置对象(四)-----session对象

一、什么是session数组

session表示客户端与服务器的一次会话 Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所通过的这段时间,也就是用户浏览这个网站所花费的时间 从上述定义中能够看到,session其实是一个特定的时间概念浏览器

(1)session是JSP的一个内置对象,是HttpSession类的实例。服务器

(2)从客户打开浏览器并链接到服务器开始,到客户关闭浏览器窗口断开与服务器的链接,这一过程成为一个会话。session

(3)当客户在同一个网站的不一样页面之间进行切换并访问时,服务器是经过session来判断这些请求是否来自同一个客户。jsp

(4)session通常有时间限制,长时间不操做可能会致使session失效。session失效后原session中保存的属性值会所有丢失。网站

(5)setMaxInactiveInterval(int i)  该方法可直接设定session的生存时间,超过该时间session会从新建立。(单位:秒)对象

-------------------------------生命周期

二、session对象的经常使用方法有:ci

long getCreationTime() : 返回session的建立时间;资源

public String getId() : 返回session的惟一ID号(该ID在session生成时,由JSP引擎建立)

public Object setAttribute(String name,Object value) : 按照键值对的方式在该session会话中保存一个属性(该属性是一个对象类型)

public Object getAttribute(String name) : 返回指定名称的属性的值(若是该名称的属性不存在,则返回null)

String[] getValueNames() : 返回一个(包含在此session中全部可用属性)的数组。

int getMaxInactiveInterval() : 返回一个时间,该时间表示当前session间隔多少时间以后会失效(单位:秒)。

 

三、session死亡发生在如下状况:

1.session的持有者(即客户端浏览器)在最大无活动等待时间(MaxInactiveInterval)内无任何响应或请求 2.session被调用invalidate()方法强制弊了 3.jsp服务器重起或发生中断(此时应该是全部session都当了)

用户关闭浏览器后标志着

a.session将再也不发送请求到服务器 b.该session将不会有人调用他的invalidate()方法

因此,此时只能等待session本身超时死亡,若是设置了该session的MaxInactiveInterval为-1,那么这个session只有在第3种状况下才能死了.能够经过判断seccion的ID编号来肯定是否为同一我的

 

四、Session的生命周期

分为三个阶段.

首先是建立阶段 当客户端第一次访问某个jsp或者Servlet时候,服务器会为当前会话建立一个sessionID,不一样会话都会有一个特定的sessionID,每次客户端向服务器发送请求时,即客户端要访问别的超连接网页时,都会将此sessionID携带过去,服务端会对此sessionID进行校验,来判断此session对象是属于哪一个会话的.由于session对象是保存在服务器端的.

而后是活动阶段 某次会话当中经过超连接打开新页面属于同一次会话. 只要当前会话页面没有所有关闭,从新打开新的浏览器窗口访问同一项目资源时属于同一次会话. 除非本次会话全部页面都关闭后再从新访问某个jsp或者Servlet将会建立新的会话.但要注意的是尽管建立了新的会话,但原有会话仍然存在,只是这个旧的sessionID仍然存在于服务器端,即session对象还在服务器端,只不过再也没有客户端会携带sessionID交予服务端校验,等到超时session对象将会销毁.即:建立了新的会话,并不意味着原有的会话就结束了,它还存在服务器端,等到设定的时间事后(即超时),便自动销毁

最后是销毁阶段 Session的销毁只有三种方式

1.调用session对象的invalidate()方法

2.Session过时(session超时意味着被销毁)

3.服务器从新启动

相关文章
相关标签/搜索