目录
session域
- 定义:Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间存储客户的数据,客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间,一次会话期间只会创建一个Session。
- 工作原理:
1、客户首次访问服务器的一个页面时,服务器就会为该用户分配一个session对象,同时为这个session指定唯一的ID,并且将该ID发送到客户端并写入到cookie中,使得客户端与服务器的session建立唯一对应的关系;
2、当客户端继续访问服务器端的其它资源时,服务器不再为该客户分配新的session对象,直到客户端浏览器关闭、超时或调用session的invalidate()方法使其失效,客户端与服务器的会话结束。
3、当客户重新打开浏览器访问网站时,服务器会重新为客户分配一个session对象,并重新分配sessionID。 -
常用的方法:
session.setAttribute(String name,Object obj); //用于设定指定名字的属性值,并把它存储在session中 session.getAttribute(String name); //根据属性名获取属性值 session.removeAttribute(String name); //移除指定的session属性
-
生命周期:创建:第一次执行request.getSession()时创建
销毁:(1)客户端:关闭浏览器的时候
(2)服务器端:关闭服务器、session过期
(3)手动销毁:session.invalidate()
作用范围:所有的Servlet
application域
- 定义:application的作用域是最广的,它代表着整个Web应用的全局变量,对每一个页面,每一个Servlet都是有效的。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。
- 工作原理:具有application范围的对象被绑定到javax.servlet.ServletContext中,在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象。
- 常用的方法:
application.setAttribute(String name, Object value); //用value来初始化application对象摸个属性(name指定)的值。如果指定的属性不存在,则新建一个;如果已存在,就改变name属性的值。 application.getAtrribute(String name); //获取name指定名称的application对象属性值,其返回是一个Object对象。因此对返回对象要用强制转换的方式将其转换成此对象原来的类型,如果属性不存在,则返回NULL。
-
生命周期:创建:当Web应用被加载进容器时创建代表整个web应用的application对象
销毁:当服务器关闭或Web应用被移除时,application对象跟着销毁
作用范围:所有的Servlet
session域与application域的区别
- 两者的作用范围不同:session对象是用户级的对象,application对象是应用程序级对象。
一个用户一个session对象,每个用户的session对象不同,在用户所访问网站的多个页面之间共享同一个session对象。
一个Web应用程序一个application对象,每个Web应用程序的application对象不同,但一个Web应用程序的多个用户之间共享同一个application对象。
在同一个网站下每个用户的session对象不同而所用用户的application对象相同。 - 两者的生命周期不同:
session对象的生命周期:用户首次向服务器发送请求时创建,当用户关闭服务器或者超过会话的活动周期时销毁。
application对象的生命周期:启动Web服务器时创建,关闭Web服务器或Web应用被移除时销毁。