「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ServletContext を使用して WAR/WEB-INF ディレクトリ内のリソースにアクセスするにはどうすればよいですか?

ServletContext を使用して WAR/WEB-INF ディレクトリ内のリソースにアクセスするにはどうすればよいですか?

2024 年 12 月 21 日に公開
ブラウズ:860

How to Access Resources in the WAR/WEB-INF Directory with ServletContext?

ServletContext を使用した WAR/WEB-INF ディレクトリ内のリソースへのアクセス

はじめに:

Java Web アプリケーションは、多くの場合、重要なリソースを WAR/WEB-INF ディレクトリ内に保存します。これらのリソースにアクセスするには、開発者は ServletContext API を利用できます。

質問:

WAR/WEB-INF にあるリソースへの正しいパスを作成するにはどうすればよいですか?フォルダーなど"/war/WEB-INF/test/foo.txt"?

答え:

WAR/ 内のリソースへのパスを構築するには、主に 2 つの方法があります。 ServletContext:

1 を使用する WEB-INF ディレクトリ。 getRealPath() メソッド:

WAR ファイルが一連のファイルに展開されている場合は、getRealPath() メソッド:

ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/test/foo.txt");

これにより、リソースへの完全なシステム パスが返されます。

2. getResource() または getResourceAsStream() メソッド:

これらのメソッドは、WAR ファイルが展開されているかどうかに関係なく使用できます。

ServletContext context = getContext();
URL resourceUrl = context.getResource("/WEB-INF/test/foo.txt"); // for URL
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/test/foo.txt"); // for input stream

補足:

  • サンプル コードで言及されている getContext() メソッドはアプリケーション固有です。 JSP ページでは「コンテキスト」として使用できますが、サーブレットでは初期化中に ServletConfig から取得されます。
  • サーブレット コンテナが WAR ファイルを抽出しない場合、getRealPath() メソッドは機能しない可能性があります。
  • getResource() メソッドと getResourceAsStream() メソッドは信頼性が高く、すべての展開シナリオで機能します。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3