HTTP协议是一种无状态协议。
也就是说,当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就被关闭了,此时服务器端不保留连接的有关信息,
因此当下一次连接时,服务器已没有了以前的连接信息,此时将不能判断这一次连接和以前的连接是否属于同一客户。
为了弥补这一缺点,JSP提供了一个session对象,这样服务器和客户端之间的连接就会一直保持下去,
但是在一定时间内(系统默认在30min内),如果客户端不向服务器发出应答请求,session对象就会自动消失。
不过在编写程序时,可以修改这个时间限定值,使session对象在特定时间内保存信息。
保存的信息可以是与客户端有关的,也可以是一般信息,这可以根据需要设定相应的内容。
1 创建及获取客户的会话
JSP页面可以将任何对象作为属性来保存。session内置对象使用setAttribute()和getAttribute()方法创建及获取客户的会话。
setAttribute()方法用于是设置指定名称的属性值,并将其存储在session对象中,其语法格式如下:
session.setAttribute(String name,String value);
参数name为属性名称,value为属性值。
getAttribute()方法用于是获取与指定名字name相联系的属性,其语法格式如下:
session.getAttribute(String name);
参数name为属性名称。
JSP页面可以将任何已经保存的对象进行移除。session内置对象使用removeAttribute()方法将所指定名称的对象移除,
也就是说,从这个会话删除与指定名称绑定的对象。removeAttribute()方法的语法格式如下:
session.removeAttribute (String name);
参数name为session对象的属性名,代表要移除的对象名。
3 销毁session
JSP页面可以将已经保存的所有对象全部删除。
session内置对象使用invalidate()方法将会话中的全部内容删除。invalidate()方法的语法格式如下:
session.invalidate();
在一个Servlet程序或JSP文件中,确保客户会话终止的唯一方法使用超时设置。
这是因为Web客户在进入非活动状态时不以显示的方式通知服务器。
为了清除存储在session对象中的客户申请资源,Servlet程序容器设置一个超时窗口。
当非活动的时间超出了窗口的大小时,JSP容器将使session对象无效并撤销所有属性的绑定,从而管理会话的生命周期。
session对象用于管理会话生命周期的方法如下表所示:
getLastAccessedTime()返回客户端最后一次发送与这个会话相关联的请求时间;
getMaxInactiveInterval()以秒为单位返回一个会话内两个请求的最大时间间隔,Servlet容器在客户访问期间保存这个会话处于打开状态;
setMaxInactiveInterval(int interval)以秒为单位指定在服务器小程序容器使该会话无效之前的客户请求之间的最长时间,也就是超时时间session对象用于管理会话生命周期的方法如下表所示。