通过 servletConfig的getServletContext获得
servlet技术中对象的生命周期
servlet ---> 项目启动期间一个servlet只有一个servlet实例
servletConfig ---> 一个servlet实例对应一个servletConfig对象
servletContext ---> 整个项目中,永远只有一个servletContext实例
request ---> 项目启动期间,request对象的数量,要看当前有多少个请求正在处理
response ---> 同上
servletContext的作用
1>封装了web.xml中的配置
2>ServletContext对应着Application(应用)域,利用一个项目中只有一个ServletContext实例的特点,在ServletContext中放置一个map用作数据通信.
这个Map就是域
关于域的操作有四个:
放入键值对 setAttribute(key,value)
通过键取值 getAttribute(key)
通过键删除 removeAttribute(key)
遍历所有键 getAttributeNames()
3>获取项目中资源
servletContext中的方法
getResourceAsStream(path) //path填写相对路径 “/” 相对于项目根目录(WEBRoot)
getRealPath(path) //path填写相对路径 “/”相对于项目根目录(WEBRoot)
Class中的方法 this.getClass()
getResourceAsStream(path) // 填“/” classes目录下
//不填“/” 当前class文件所在目录
ClassLoader中的方法 this.getClass().getClassLoader()
getResourceAsStream(path) // 无论填不填“/” 都相对于classes目录
注意: 使用类和类加载器加载资源文件时
//1 jvm运行期间只加载一次. 但是使用下面的代码可以解决这个问题.
String path = this.getClass().getClassLoader().getResource("xxx.xml").getPath();
File file = new File(path.substring(1, path.length()));
System.out.println(path);
//2 getClassLoader()原本是用来加载.class文件的, 所以缓存设计的很小.不要用他加载一些别较大的资源.