一、session简介
session 在网络中称之为对话。由于http协议是一种无状态协议,也就是一个客户向服务器发送请求,服务器接收请求,并返回响应后,该连接就结束了了,而服务器并保存相关信息。为了弥补这一缺点,http协议提供了Session。通过session可以在应用程序的web页面进行间接跳转时,保存用户的状态,使整个会话一直存在下去,知道关闭浏览器。但是一个会话中,客户端长时间不向服务器发出请求,session对象将会自动消失。这个时间取决于服务器,例如:tomcat服务器默认为30分钟。这个时间可以在程序中修改。
可以将会话理解为打一次电话的过程。通话从拿起电话起或手机拨号开始,一直到挂断电话结束,在这个过程中,可以与对方聊很多话题,甚至重复的话题。
1.1、创建以及获取客户的会话
通过session对象可以存储或读取客户的信息,如用户信息以及购物信息。
1.1.1、存储session对象 语法:
session.setAttribute(String name ,Object obj);
name:用于指定作用域在session范围内的变量
obj:保存session范围内的对象
1.1.2、获取session 语法
session.getAttribute(String name);
name:指定保存session对象范围内的关键字
1.1.3、从会话中移动指定的绑定对象
对于存储在session会话中的对象,如果想将其从session对象会话中移除,可以使用session对象中的removeAttribute()方法,语法:
session.removeAttribute(String name);
name : 用于指定作用域在session范围内的变量名。一定要保证该变量在session范围内有效否则会抛出异常。
1.2、销毁session对象
虽然客户端长时间不向服务器发送请求后,session对象会自动消失,但对于某些时时统计在线人数的网站,每次等session过期后,才能统计出正确的数据,这是远远不够的,所以需要手动进行session销毁,语法:
session.invalidate();
1.3、会话超时管理
在应用session对象时应该注意session的生命周期。一般来说session的生命周期为20~30 分钟
。当用户首次访问时将产生一个新的会话,以后服务器会记住这个会话状态,当会话生命周期超时或服务器强制是会话失效时,这个session就不能使用了。
常用的会话超时的方法:
getLastAccessedTime():返回客户端最后一次与会话相关联的请求时间。
getMaxInactiveInterval();以秒为单位返回一个会话内两个请求最大的时间间隔
SetMaxInactiveInterval();设置session对象的有效时间。
二、application对象
application对象用于保存所有应用程序中的公有数据。他在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享application对象。与session对象相比application对象的生命周期更长,类似于系统的全局变量。
2.1、访问应用程序初始化参数
application对象提供了对应用程序初始化参数的访问方法。应用程序初始化参数在web.xml文件中进行设置,web.xml文件位于web应用所在目录下大雾WEB-INF子目录中。在web.xml文件中通过<content-param>标记配置应用程序初始化参数。
application提供两种访问应用程序初始化参数的方法:
application.getInitParameter(String name); 该方法返回已命名的参数值
name:用于指定的参数名
application.getAttributeNames(); 该方法返回所有已定义的应用程序初始化参数名的枚举
2.2、管理应用程序环境属性
与session对象相同,也可以在application对象中设置属性。与session对象不同的是,session只是在当前客户的会话范围内有效,当超过保存时间,session对象会被收回;而application对象在整个应用区域中有效,常用的方法如下:
getAttributeNames() 获取到application对象所有的属性名。
getAttribute(String name) 从application 对象中获取指定的对象名
setAttribute(String key,Objrct obj) 使用指定名称和指定对象在application对象进行关联
removeAttribute(String name)从application 对象中去掉指定的名称的属性。