JSP Session及其生命周期

@什么是Session:
1、session表示客户端与服务器的一次会话
2、Web中的session指:用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览网站所花费的时间。
3、在服务器的内存中保存着不同用户的session,一个用户对应一个session
4、从上述定义中可以看到,session实际是一个【特定的时间概念】


(1)session是JSP的一个内置对象,是HttpSession类的实例。
(2)从客户打开浏览器并连接到服务器开始,到客户关闭浏览器窗口断开与服务器的连接,这一过程成为一个会话。
(3)当客户在同一个网站的不同页面之间进行切换并访问时,服务器是通过session来判断这些请求是否来自同一个客户。
(4)session一般有时间限制,长时间不操作可能会导致session失效。session失效后原session中保存的属性值会全部丢失。
(5)setMaxInactiveInterval(int i)  该方法可直接设定session的生存时间,超过该时间session会重新创建。(单位:秒)
-------------------------------
session对象的常用方法有:
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.创建:当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将此SessionId携带过去,服务端会对此SessionId进行校验
2.活动:
①某次会话当中通过超链接打开的新页面属于同一次会话
②只要当前会话页面没有全部关闭,重新打开的浏览器窗口访问同一个项目资源时属于同一次会话
③除非本次会话的所有页面都关闭后在重新访问某个JSP或者servlet将会创建新的会话
注意:注意原有会话还存在,只是这个旧的Session仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验
3.销毁:三种方式
①调用了session.invalidate()方法
②Session过期(超时)、
	配置XML文件
	<session-config>
	<session-timeout>xxx</session-timeout>
	<session-config>
③服务器重新启动

上一篇:上传文件


下一篇:nginx的http模块开发--一个验证url参数的例子