ServLetContext
解决的问题:不同的用户使用相同的数据
就是不同的用户,访问网页的时候能看到某一个相同的数据,例如该网站被访问的次数
其他特征:
特点:服务器创建;用户共享
作用域:整个项目
生命周期:服务器启动到服务器关闭
如何使用:
三种创建方式:
ServletContext sc=this.getServletContext();
ServletContext sc1=this.getServletConfig().getServletContext();
ServletContext sc2=req.getSession().getServletContext();
注意:三种创建方式创建的是同一个对象,同一个项目下的所有Servlet中也是同一个对象
数据存储:
sc.setAttribute(String name, Object value);
例子:sc.setAttribute("name", "xiongdu!");
数据获取:
sc.getAttribute("name") 返回的是Object类型
注意:
不同的用户可以给ServletContext对象进行数据的存取。
获取的数据不存在返回null。
在项目中web.xml文件中的全局配置数据,
作用:将静态数据和代码进行解耦。
在xml中的配置方式:
<context-param>
<param-name>name</param-name>
<param-value>zhangsan</param-value>
</context-param>
注意:注意 一组<context-param>标签只能存储一组键值对数据,多组可以声明多个 <context-param>进行存储。
获取项目中web.xml文件中的全局配置数据
sc.getInitParameter(String name);
根据键的名字返回web.xml中配置的全局数据的值,返回String类型。
如果数据不存在返回null。
其他方法:
sc.getInitParameterNames();
返回键名的枚举
获取项目webroot下的资源的绝对路径:
String path=sc.getRealPath(String path);
获取的路径为项目资源的绝对路径,path参数为项目根目录中的路径
获取webroot下的资源的流对象
InputStream is = sc.getResourceAsStream(String path);
注意:此种方式只能获取项目根目录下的资源流对象,class文件的流对象需要使用类加载器获取。path参数为项目根目录中的路径