假设存在一个 xxx.properties 文件
首先看该文件放置的位置
a.如果文件放在src目录下面,这文件的路径名就写成:“WEB-INF/classes/资源文件名”
b.如果文件放在src目录下面的某个包中,则文件的路径名写成:“WEB-INF/classes/ 包路径/资源文件名”
c.如果文件放在webRoot文件下,则文件的路径名写成:“/资源文件名”
方法一:用getServletContext()方法来实现
InputStream in = this.getServletContext().getResourceAsStream("WEB-INF/classes/xxx.properties");
//获取资源文件的输入流
Properties pro = new Properties();
prop.load(in);//加载xxx.properties文件
prop.getProperties("属性名");//获取对应值
方法二:获取绝对路径,用传统读取文件的方式读取文件
String path = this.getServletContext().getRealPath("文件路径名");
FileInputStream in=new FileInputStream(path);
Properties pro = new Properties();
prop.load(in);//加载xxx.properties文件
prop.getProperties("属性名");//获取对应值
方法三:
如果读取资源文件的程序不是servlet的话,就只能通过类加载器读取
定义一个UserDao类在servlet doGet()方法中调用UserDao 中的meh()方法
public class UserDao(){
public void meth(){
InputStream in = UserDao.class.getClassLoader().getResourseAsStream("资源文件名"); //注意在此处的资源文件名就不需要加上“WEB-INF......”===
Properties pro = new Properties();
prop.load(in);//加载xxx.properties文件
prop.getProperties("属性名");//获取对应值
}
}
此方法读取文件后,如打开网页过后再改动资源文件,就不能读取到更新过后的内容,对此有以下解决方法
通过类装载的方法获取资源文件的绝对位置,在用传统的文件读取方法读取文件,这样就能获取到更新过后的文件
String path = UserDao.class.getClassLoader().getSource("资源文件名").getPath();
FileInputStream in=new FileInputStream(path);
Properties pro = new Properties();
prop.load(in);//加载xxx.properties文件
prop.getProperties("属性名");//获取对应值
getSource("资源名")得到该文件的绝对路径,返回时一个URL类型
本文详细解释了如何在Web应用中通过不同路径加载配置文件,并提供了三种加载方法,包括使用getServletContext()方法、获取绝对路径的传统读取方式和通过类加载器读取资源文件。此外,还讨论了在网页更改后更新配置文件的解决方案。

375

被折叠的 条评论
为什么被折叠?



