下面的代码是客户端在访问servlet时,在servlet中调用数据库操作层UserDao对象中的update方法,haha.properties资源文件在src中,也就是在web应用的WEB-INF/classes目录下,但是在访问servlet时,会抛出java.io.FileNotFoundException: C:\Program%20Files\Apache%20Software%20Foundation\Tomcat%206.0\webapps\haohao3\WEB-INF\classes\haha.properties (系统找不到指定的路径。)这个异常。
public void update() throws IOException {
//通过类加载器得到资源文件的路径
String path = UserDao.class.getClassLoader().getResource("haha.properties").getPath();
//通过普通的读取流读取到properties集合中
FileInputStream fis = new FileInputStream(path);
Properties dbconfig = new Properties();
dbconfig.load(fis);
//获取properties集合中的url数据
String url = dbconfig.getProperty("url");
System.out.println(url);
}
如果通过下面这种方式就没有问题:
public class UserDao {
private static Properties dbconfig = new Properties();
static{
//通过类加载器得到.properties资源数据的流对象
InputStream in = UserDao.class.getClassLoader().getResourceAsStream("haha.properties");
try {
//将读取流加载到properties集合中
dbconfig.load(in);
} catch (IOException e) {
//抛出Error
throw new ExceptionInInitializerError(e);
}
}
public void update() {
String url = dbconfig.getProperty("url");
System.out.println(url);
} |