3

のドキュメントを読んでいて、getRealPath(String s)このステートメントを読んで混乱しました

指定された仮想パスの実際のパスを含む文字列を返します。たとえば、パス/index.htmlは、サーバーのファイル システム上の絶対ファイル パスを返します。このパスは、 のリクエストによって処理されますhttp://host/contextPath/index.html。ここで、contextPath は、こ​​の ServletContext のコンテキスト パスです。

仮想パスとは何ですか? 私が自分の展開環境の中にいて、 getRealPath("index.html") と言うとき、これは通常 WEB-INF ディレクトリを指しているとしましょう? または、getRealPath() はルート ディレクトリ (Web アプリのフォルダー名内) の読み取りを開始しますか?

4

2 に答える 2

3

ServletContext.getRealPath(String s)実際のファイル システム パスを返します。入力文字列は、Web アプリケーションのコンテキスト パスに対して解釈されます。

たとえば Eclipse では、これは通常、WebContentWeb アプリケーション プロジェクト内のフォルダーです (カスタマイズ可能です)。プロジェクトからWARファイルを構築した後、フォルダーが消えたことに気付くでしょう。そのWebContentため、サーバーでは、入力文字列はWARファイルのフォルダー(または.warライブラリー-これは、WARを展開するかどうかによって異なります)に対して解釈されます。展開するかどうか)。

セキュリティ上の注意

このメソッドは、サーバー側のファイルにアクセスする場合にのみ使用する必要があります (必須ではありません)。典型的なシナリオは、起動時に構成ファイルを解析することです。アプリケーションの呼び出し元に、特定のリソースの実際のファイル システム パスを知らせないように注意してください。

于 2012-09-21T08:04:28.073 に答える