首先来说前两者与后者的性质不同,sesstion与application是作用域,
所谓"作用域"就是"信息共享的范围",也就是说一个信息能够在多大的范围内有效。
Web交互的最基本单位为HTTP请求。每个用户从进入网站到离开网站这段过程称为一个HTTP会话,一个服务器的运行过程中会有多个用户访问,就是多个HTTP会话。
session
当访问服务器否个网页的时候,会在服务器端的内存里开辟一块内存,这块内存就叫做session,而这个内存是跟浏览器关联在一起的。这个浏览器指的是浏览器窗口,或者是浏览器的子窗口,意思就是,只允许当前这个session对应的浏览器访问,就算是在同一个机器上新启的浏览器也是无法访问的。而另外一个浏览器也需要记录session的话,就会再启一个属于自己的session
当用户发送一个http请求到服务器端时,服务器会先检查请求中是否含有sessionid(存在cookie中或者在url中),这是独一无二的号码,是浏览器和服务器中的session一一对应的。
session的常用方法
1、 getAttribute(String name)
2、 getAttributeNames()
3、 getCreationTime()
4、 getId()
5、 getLastAccessedTime()
6、 getMaxInactiveInterval()
7、 removeAttribute(String name)
8、 setAttribute(String name , java.lang.Object value)
application
application对象用于保存应用程序中的共有数据。他在服务器启动时自动创建,在服务器停止时销毁。
当application对象存在时,所有用户都可以共享该application对象。与session相比application对象生命周期更长,范围更大,类似于系统的全局变量。
application对象的主要方法:
1、 getAttribute(String name)
2、 getAttributeNames()
3、 getInitParameter(String name)
4、 getServletInfo()
5、 setAttribute(String name , Object object)
ServletContext
ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象。
它是一个域对象,也就是可作为上面介绍的两个的对象。
方法:
1、setAttribute(name,value);name是String类型,value是Object类型;往域对象里面添加数据,添加时以key-value形式添加
2、getAttribute(name);根据指定的key读取域对象里面的数据
3、removeAttribute(name);根据指定的key从域对象里面删除数据
4、getServletContext().getInitParameter(name);//根据指定的参数名获取参数值
5、getServletContext().getInitParameterNames();//获取所有参数名称列表
6、getServletContext().getRealPath(path),根据相对路径获取服务器上资源的绝对路径
7、 getServletContext().getResourceAsStream(path),根据相对路径获取服务器上资源的输入字节流
8、getServletContext().getContextPath();获取当前工程名字