19

WEB-INFWeb アプリケーションにプレーンな Java クラスがあり、フォルダーの下にある構成ファイルを読みたいと考えています。WEB-INF/classesクラスパス(フォルダー)にある場合、ファイルにアクセスする方法を知っています。WEB-INF/classesフォルダーはファイル用であるため、構成ファイルをフォルダー .classの下にのみ保持したいと考えています。WEB-INF

Javaクラスからアクセスする方法を誰か教えてもらえますか?

4

4 に答える 4

21

ServletContext.getResourceAsStream()は、WAR ファイルのルートからの相対パスからファイルをロードします。何かのようなもの:

ServletContext ctx;
InputStream configStream = ctx.getResourceAsStream("/WEB-INF/config.properties");

ここでの主な問題は、これを行うにはサーブレット コンテキストにアクセスする必要があることです。サーブレットまたはフィルターにはそれがありますが、アプリケーションのさらに奥にある非 Web コンポーネントにはありません。いくつかのオプションがあります:

  • アプリケーション スコープの変数、インジェクション、またはその他の方法を介して、サーブレット コンテキストを Web レイヤーからサービス レイヤーで使用できるようにします。
  • リソースをロードするコードを Web 層に配置し、それをサービス層に公開します
  • 構成を Web 層にロードし、それをサービス層に渡します
于 2012-10-14T16:26:43.830 に答える
2

getRealPath()メソッドを使用してサーブレットの絶対パスを取得し、取得したパスServletContextに追加WEB-INFできます。これは非常に基本的なことだと思いますが、他にもいくつかの答えがあるかもしれません。

于 2012-10-14T15:56:19.823 に答える
1

「new FIleInputStream( Utility.class.getClassLoader().getResource(keyFileName).getPath() )」がうまくいきました。

ここで、「Utility」は、コードがこの行を呼び出しているクラス名です。「keyFileName」は、開く必要があるファイルです。

于 2014-03-10T11:33:59.397 に答える