2011-01-26 4 views

答えて

5

多くの環境では、アプリケーションユーザーはデプロイメントディレクトリ外のファイルを読み取ることができません。これは主にセキュリティ上の目的で行われます。例えば、誰かがあなたのアプリケーションをハックすると、パスワードファイルを読むことができなくなります。

専門的に管理された環境では、開発者はアプリケーションが配置されるディレクトリを言うことができません。

プロパティ、イメージ、証明書などのファイルを読み込む必要がある場合は、アプリケーションディレクトリ(または.warファイル)に配置して、getRealPath( "")を使用してロードする必要があるパスを取得します。

代わりに、外部ファイルをクラスパスに配置することもできますが、時にはこれに問題があります。大きなファイルの場合、ほとんどのアプリケーションサーバーはファイル全体をメモリにロードし、クラスパス上にある場合はキャッシュします。

1

にアプリケーションがデプロイされているが表示されるので、私はこれを使って画像やその他のデータファイルを保存しました。たとえば、EclipseとTomcatは、Eclipseプロファイル内のどこかに埋め込まれた一時的なフォルダを作成し、そこにアプリをデプロイします。

1

これはファイルシステムの実際のパスです。 Javadocのより

サーブレットコンテナが適切なパスセパレータを含む、実行されているコンピュータとオペレーティングシステムに適した形態であることが返される実際のパス。何らかの理由でサーブレットコンテナが仮想パスを実際のパスに変換できない場合(コンテンツが.warアーカイブから利用可能になった場合など)、このメソッドはnullを返します。

非常に明確だと思います。なぜ私たちはこれが必要なのですか? Webアプリケーションがファイルシステムで何らかの操作を行うことがあります。たとえば、ファイルからの読み物、ファイルの書き込みなどです。このAPIを使用すると、JSPや他のものが実際に格納されている場所にアクセスできます。

2

getRealPath()は、呼び出しのパラメータで指定されたファイルに至る絶対パス(ファイルシステム上)を指定します。 OS固有の形式でパスを返します。 一方、getContextPath()はURIまたはリソースへの相対パスを返します。