2010-12-13 13 views
0

サーブレットのwebcontentフォルダから(.properties)ファイルを読み込む際に問題があります。 私が見つけた解決策は機能していないようです。ファイルを読み込もうとすると例外が発生します。私のフォルダとパッケージの構造とコードの部分の下。webcontentフォルダの.propertiesファイルにアクセスするサーブレットプロジェクト

私は間違っていますか?

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

+0

これは簡単な 'NullPointerException'でした。 – BalusC

+0

'servletContext'がnullでないかどうかを確認します – Bozho

答えて

0

プロパティファイルの場所を変更することを検討する必要があります。現在の場所では、セキュリティ上の問題と考えられる単純なHTTP GETリクエスト(http://host:8080/AppContext/languages/language.propertiesなど)でコンテンツにアクセスできます。

また、例外が表示された場合は、コードの状況をさらに詳しく調べることができます。

+0

真実ですが、これは質問に答えません。これはコメントとして投稿されているはずです。 – BalusC

2

WEB-INFにそのようなファイルを配置することをお勧めします。ファイルが存在する場合は、次のように動作します(実際には現在の設定でもうまくいきます)。ファイルが整形式であること、つまりそれが実際のプロパティファイルであることを確認するだけです。

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

はい、通常、このようなことをWEB-INFフォルダに入れます。それが何らかの理由でHTTP経由で実際にアクセスできるようにしたいのでない限り。

関連する問題