ホームページ >Java >&#&チュートリアル >`ServletContext.getRealPath('/')` は何をするのでしょうか?また、なぜ最新の Java EE アプリケーションでの使用を避けるべきなのでしょうか?

`ServletContext.getRealPath('/')` は何をするのでしょうか?また、なぜ最新の Java EE アプリケーションでの使用を避けるべきなのでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-22 13:11:10704ブラウズ

What does `ServletContext.getRealPath(

servletcontext.getRealPath("/") の意味といつ使用する必要がありますか?

はじめに

Java サーブレット アプリケーションでは、 ServletContext#getRealPath() メソッドは、Web コンテンツの相対パスをディスク ファイル システムの絶対パスに変換するために使用されます。指定するパスは、Web コンテンツ内のファイルまたはディレクトリのいずれかです。ただし、このメソッドは注意して使用する必要があり、最新の Java EE 開発では一般に推奨されません。

getRealPath("/") の使用

/ getRealPath("/") は、Web コンテンツ ディレクトリのルートを表します。これは、Web アプリケーションの web.xml ファイルを含むディレクトリへのファイル システムの絶対パスです。たとえば、次のプロジェクト構造では:

YourWebProject/
    src/
    :
    web/
        META-INF/
        WEB-INF/
        index.jsp
        login.jsp
        :

getRealPath("/") を実行すると、Web ディレクトリへのファイル システム パス (/path/to/server/work など) が返されます。 /folder/some.war/web.

注意と制限事項

getRealPath() は特定の状況では便利ですが、いくつかの制限があり、次の理由により通常は推奨されません。

  • 書き込みは禁止されています。 persistent: getRealPath() を使用して書き込まれたファイルへの変更は、WAR の再デプロイ中に失われますfile.
  • 展開の依存関係: getRealPath() の信頼性は、WAR ファイルを展開するためのサーバーの構成に依存します。 WAR がディスク ファイル システムに展開されていない場合、getRealPath() は不正なパスまたは null パスを返す可能性があります。
  • 移植可能な使用例はありません: 通常、getRealPath を使用するより移植性が高く信頼性の高い代替手段があります。 ().

の代替案getRealPath()

getRealPath() を使用する代わりに、次の代替案を検討してください:

  • Web 内のリソースの InputStream を取得するには、ServletContext#getResourceAsStream() を使用します。 content.
  • ServletContext#getResourcePaths() を使用して取得します利用可能なリソース パスのリスト。
  • リソースの URL を取得するには、ServletContext#getResource() を使用します。
  • ファイルのアップロードまたは一時ファイルの作成については、以下の「関連項目」リンクを参照してください。 .

関連項目

  • [getResourceAsStream() と FileInputStream](https://stackoverflow.com/questions/4212943/resource-as-inputstream-in-java-best-practice)
  • [推奨される方法アップロードされたファイルをサーブレットに保存するapplication](https://stackoverflow.com/questions/5797716/recommended-way-to-save-uploaded-files-in-a-servlet-application)
  • [再デプロイ時にデータを保持する簡単な方法Java EE 7 Webアプリケーション](https://stackoverflow.com/questions/11736935/simple-ways-to-keep-data-on-redeployment-of-java-ee-7-web-application)

以上が`ServletContext.getRealPath('/')` は何をするのでしょうか?また、なぜ最新の Java EE アプリケーションでの使用を避けるべきなのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。