ServletContext笔记和servlet和传统方法读取资源文件
ServletContext域:
1.这是一个容器
2.ServletContext域说明了这个容器的作用范围,也就是应用程序范围
application在jsp里就相当于是Servlet里的ServletContext
数据存储在ServletCOntext有线程问题
当服务器启动时为每个web应用程序创建一个ServletContext对象,
当服务器停止运行或者web应用程序被移除时,ServletContext对象被销毁
读取资源文件方法
1通过ServletContext来读取,这是Servlet程序
2通过类装载去读取,这是非Servlet程序
用类装载器得到文件的位置,再用原始方法FileInputStream读取,同时使用Properties类
读取properties文件,这种方法适合资源文件内容随时发生改变,假如资源文件不会发生改变,就直
接用类装载器获得资源文件的InputStream,而不用得到资源文件的位置,
但是需要得到资源文件的名字就还是需要使用得到资源文件的位置的方法
Servlet获取资源文件并获得资源文件名称的示例代码:
String path =this.getServletContext().getRealPath("/WEB-INF/classes/db.Properties");
String filename = path.subString(path.lastIndexof("\\")+1);
FileInputStream in = new FileInputStream(path);
Properties p = new Properties;
p.load(in);
String url = p.getProperty("url");
只获得资源文件的InputStream示例代码:资源文件内容不发生改变
//资源文件在classes目录下
Properties p = new Properties();
InputStream in = UserDao.class.getCLassLoader().getResourceAsStream("db.Properties");
p.load(in);
String url = p.getProperty("url");
获得资源文件位置示适合资源文件内容随时发生改变 代码:
//资源文件在classes目录下
String path =UserDao.class.getCLassLoader().getResource("db.Properties").getPath();
FileInputStream in = new FileInputStream(path);
Properties dbconfig = new Properties();
dbconfig.load(in);
String url = p.getProperty("url");