URLの絶対パスを取得したい。たとえば、http://localhost:8080を指定すると、ルート ディレクトリで利用可能な tomcat ホームページが表示されます。Java でURL http://localhost:8080を指定して、Tomcat ルート ディレクトリの絶対パスを取得するにはどうすればよいですか。
同様の質問を見つけましたが、満足のいく答えが見つからなかったため、ここに問題を投稿しています。
URLの絶対パスを取得したい。たとえば、http://localhost:8080を指定すると、ルート ディレクトリで利用可能な tomcat ホームページが表示されます。Java でURL http://localhost:8080を指定して、Tomcat ルート ディレクトリの絶対パスを取得するにはどうすればよいですか。
同様の質問を見つけましたが、満足のいく答えが見つからなかったため、ここに問題を投稿しています。
を使用できますがjavax.servlet.ServletContext.getRealPath(java.lang.String)
、機能しない場合もあります。
APIドキュメントから:
指定された仮想パスに対応する実際のパスを取得します。
たとえば、
path
が に等しい場合、このメソッドは、この ServletContext のコンテキスト パスに対応するフォームのリクエストがマップされる/index.html
サーバーのファイル システム上の絶対ファイル パスを返します。http://<host>:<port>/<contextPath>/index.html
<contextPath>
返される実際のパスは、適切なパス セパレータを含め、サーブレット コンテナが実行されているコンピュータとオペレーティング システムに適した形式になります。
/META-INF/resources
アプリケーションのディレクトリにバンドルされた JAR ファイルのディレクトリ内のリソースは/WEB-INF/lib
、コンテナーがそれらを含む JAR ファイルからそれらをアンパックした場合にのみ考慮する必要があります。この場合、アンパックされた場所へのパスを返す必要があります。サーブレット コンテナが指定された仮想パスを実際のパスに変換できない場合、このメソッドは null を返します。
パラメータ:
path - 実際のパスに変換される仮想パス戻り値:
実際のパス、または変換を実行できない場合は null