/*
作用: 解决不同的用户使用相同的数据的问题
特点: 由服务器创建, 用户共享
作用域: 整个项目内
生命周期: 服务器启动到服务器关闭
使用:
// 获取 ServletContext 对象
// 第一种方式
ServletContext sc = this.getServletContext();
// 第二种方式
ServletContext sc = this.getServletConfig().getServletContext();
// 第三种方式
ServletContext sc = req.getSession().getServletContext();
// 数据存储
sc.setAttribute(key, value);
// 数据获取
sc.getAttribute(key);
注意: 不用的用户可以给ServletContext对象进行数据的存取
获取的数据不存在, 则返回null
// 获取项目中 web.xml 文件中的全局配置数据
String paramValue = sc.getInitParameter(name);
注意: 如果数据不存在, 则返回null
web.xml中的写法:
<context-param>
<param-name></param-name>
<param-value></param-value>
</context-param>
注意: 一组<context-param>标签只能存储一组键值对数据
多组数据可以配置多个<context-param>进行存储
// 获取项目WebRoot下的资源的绝对路径(获取的路径为项目的根目录,参数为项目根目录中的路径)
String path = sc.getRealPath(String path);
// 获取项目WebRoot下的资源的流对象, 参数为项目根目录中的路径
sc.getResourceAsStream(String path);
注意: 这种方式只能获取项目根目录下的资源流对象, class文件的流对象需要用类加载器获取
*/