0

我想从名为 jdbc.properties 的属性文件中读取一行。它位于src\main\webapp\WEB-INF\db\jdbc.properties. 我应该使用什么路径?这是我的方法:

Properties prop = new Properties();

        try {
            // load a properties file
            prop.load(new FileInputStream("jdbc.properties"));

            System.out.println(prop.getProperty("password"));

        } catch (IOException ex) {
            ex.printStackTrace();
        }
4

3 回答 3

6

如果您将属性文件移动到src/main/resources,假设您的项目由 maven 管理,那么您可以通过执行来检索它

Properties prop = new Properties();

try {
    // load a properties file
    prop.load(YourClass.class.getResourceAsStream("/jdbc.properties")); // note the leading /

    System.out.println(prop.getProperty("password"));

} catch (IOException ex) {
    ex.printStackTrace();
}

YourClass这段代码在哪里。

Maven 将您编译的类的类文件和所有资源放在src/main/resources只有WEB-INF/classes您的应用程序可以访问它们的位置。

如果将文件放入src/main/resources/someFolder,则需要从

prop.load(YourClass.class.getResourceAsStream("/someFolder/jdbcProperties"));

您提供给上述方法的路径是相对于您所在类的包的,除非您指定前导正斜杠,在这种情况下,它将相对于类路径的根目录,即classes文件夹。

于 2013-08-14T19:22:36.700 回答
2

您需要指定FileInputStream. 您可以通过调用获取路径servletContext.getRealPath("/WEB-INF/db/jdbc.properties")

如果您没有servletContext可用的(通过.getServletContext()),那么您应该将它(或应用程序根目录的绝对路径)传递给上面的代码。

于 2013-08-14T18:52:38.990 回答
0

是否为 TOMCAT_HOME 设置了环境变量,如果没有设置。

现在你可以使用

<tomcat_home>/webapps/<yourapp>/web-inf/db/jdbc.properties

要获取环境变量的值,请使用以下代码:

Map<String, String> env = System.getenv();

干杯!!

于 2013-08-14T19:05:31.553 回答