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 サイトの他の関連記事を参照してください。