簡體   English   中英

屬性文件不起作用

[英]Property File doesnt work

我正試圖找到一種方法,如何在我的Java Servlet中使用屬性文件(擴展http-servlet)。 我已經嘗試使用ClassLoader#getResourceAsStream()ServletContext#getResourceAsStream() 但無論我在做什么,什么都NullPointerException總有一個NullPointerException

database.properties文件:

Driver=org.postgresql.Driver
Protokoll=jdbc:postgresql://
Speicherort=localhost/
Datenbank=Ticketshop
User=postgres

碼:

p = new Properties();
p.load(getServletContext().getResourceAsStream("/WEB-INF/properties/database.properties"));
protokoll = p.getProperty("Protokoll");
speicherort = p.getProperty("Speicherort");
user = p.getProperty("User");
driver = p.getProperty("Driver");
password = p.getProperty("Password");
database = p.getProperty("Datenbank");

文件樹:

Java Resources
  |-- src
     |-- login
        |-- Login.java
WebContent
  |-- WEB-INF
     |-- properties
        |-- database.properties

為什么不使用ResourceBundle 它使用起來非常簡單。 將屬性文件放在源文件夾中 ,然后

import java.util.MissingResourceException;
import java.util.ResourceBundle;

public class DatabaseConstantsAccessor
{
    // don't include .properties extension, just specify the name without extension
    private static final String BUNDLE_NAME = "database";

    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);

    private ConstantsAccessor()
    {
    }

    public static String getString(String key)
    {
        try
        {
            return RESOURCE_BUNDLE.getString(key);
        }
        catch (MissingResourceException e)
        {
            return '!' + key + '!';
        }
    }
}

在您要訪問屬性的位置,請使用以下代碼:

String driverString=DatabaseConstantsAccessor.getString("Driver");
Integer intProp=Integer.valueOf(DatabaseConstantsAccessor.getString("SomeIntProperty"));

檢查所有名字。 你的代碼工作正常。

嘗試這個

編輯

p.load(getServletContext().getClassLoader().getResourceAsStream("properties/database.properties"));

順便說一句,你需要move the database.properties/WEB-INF/classes文件夾才能使用

文件夾結構應該是

WEB-INF
  | classes
      |properties
       database.properties

我同意“dj aqeel”但要獲得ResourceBundle,這必須在類目錄中。

因此,我將文件放在“/ WEB-INF / classes /properties/database.properties”中。 顯然,您必須將文件放在src目錄中,編譯器會自動移動到那里。

馬科斯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM