2010-12-13 117 views
0

我在從我的servlet的webcontent文件夾中加載(.properties)文件時遇到了一些問題。 我找到的解決方案似乎不起作用。嘗試讀取文件時遇到異常。下面我的文件夾和包結構以及代碼部分。在webcontent文件夾中訪問.properties文件形式servlet項目

我在做什麼錯?

Webcontent文件夾的結構

WebContent 
- WEB-INF 
- languages 
    -- language.properties 
- .... 

封裝結構

package x.y.z.aa 
- Servlet.java 
package x.y.z.ab 
- PropertyLoader.java 

Servlet.java代碼

public void init(ServletConfig config) throws ServletException {  
    super.init(config); 
    servletContext = this.getServletContext(); 
    PropertyLoader = new PropertyLoader(servletContext); 
} 

PropertyLoader.java

public PropertyLoader(ServletContext context) { 
    super(); 
    try{ 
     properties.load(context.getResourceAsStream("/languages/language.properties")); 
     System.out.println(languages.get("test")); 
    } catch (Exception e){ 
     System.out.println("Error reading properties file"); 
     System.out.println(e.getMessage()); 
    } 
} 

對不起。我忘了實例化Properties實例變量。感謝有關HTTP訪問的提示,當它位於當前位置時。當我把它放在WEB-INF文件夾下時應該解決這個問題?

+2

什麼是例外? – JOTN 2010-12-13 12:48:57

+0

這將是一個微不足道的'NullPointerException'。 – BalusC 2010-12-13 13:15:19

+0

驗證'servletContext'是否爲空 – Bozho 2010-12-13 13:36:32

回答

0

你應該考慮改變你的屬性文件的位置。在當前位置,它的內容可以通過簡單的HTTP GET請求(如http://host:8080/AppContext/languages/language.properties)進行接受,這可能被認爲是一個安全問題。另外,如果你可以發佈你得到的異常,可以從更多的幫助中找到你的代碼發生了什麼。

+0

儘管如此,但這並不能回答這個問題。這應該作爲評論發佈。 – BalusC 2010-12-13 13:11:26

2

建議將這些文件放置在WEB-INF。然後,如果該文件在那裏(實際上它也應該在當前的設置中運行),則以下內容應該可以工作。只要確保文件格式正確 - 即它是一個真正的屬性文件。

properties.load(context 
    .getResourceAsStream("/WEB-INF/languages/language.properties")); 
0

是的,通常你把這樣的東西放在WEB-INF文件夾中。除非你真的希望它由於某種原因通過HTTP訪問。

相關問題