2012-03-02 46 views
2

Webアプリケーションから静的ファイルを(。webappの/静的/計器用)へのアクセス応用。私が達成しようとしているのは、アプリケーションから静的ディレクトリにアクセスすることです。しかし、一度サーバーにデプロイされると、そのディレクトリは "失われている"ように見えます。相対パス(​​)でもクラスパス(新しいClassPathResource())でもアクセスできません。私はディレクトリがtargetディレクトリにないことがわかりましたが、これはおそらく正しいですが、私はそれについて何ができるのか分かりません。私は次のような構造を持つWebアプリケーションを持っている

ありがとうございました。

  1. 編集は多分それは明確ではないが、ディレクトリstaticは、WEB-INFの兄弟ではなく、その子です。

  2. 静的ディレクトリには2 GBのイメージが含まれている場合があります。そのため、アプリケーションがデプロイされるたびにこのディレクトリをコピーする必要はありません(クラスパスに入れるのは良い考えではありません)。
  3. 私はこのディレクトリにアクセスすることを許可するDefaultServletの動作を見つけることができません。それは他の場所のすべてのものをコピーしますか?それとも絶対パスでアクセスしますか?

答えて

2

WEB-INFがクラスパスに表示されないことは間違いありませんが、webappフォルダに入れておく必要があります。もっと良いのは、mvc:resourcesタグを使うことです。

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html

検索MVC:、について説明のための資源。

EDIT

あなたはSRC /メイン/リソースにリソースを配置する場合、彼らはClassPathResource

+0

うん、明らかにそうではありません.Webappディレクトリ全体がターゲットディレクトリに置かれていないので(クラスパスにはありません)しかし、私は実行中のアプリケーションからそれへの参照を見つけることができません... –

+0

src/resourcesディレクトリに必要なリソースを配置するには、classpathresourceオブジェクトからアクセスできます。 – dardo

+0

私の編集内容をお読みください、ありがとうございます。 –

1

に利用可能であるべきであるWEB-INFの下に格納されたファイルにアクセスするための標準化方法はありません。 WEB-INFフォルダの精神は、フレームワーク(コンテナ/サーバ)が読み込むデータが含まれていることです。これは、コンテナ(あなた)のユーザーが直接読み取ったデータの場所とは見なされません。使用しているコンテナのソフトウェア(およびバージョン)(TomcatとJBoss対WebSphereとWebLogicなど)によっては、WEB-INFに入ることができますが、コンテナ間で移植することはできません。私はそれをお勧めしません。

WEB-INFではないクラスパスやwebappのサブフォルダなど、別の場所にファイルを置くことを検討してください。

+0

私の編集内容をお読みください。ありがとうございます。 –

関連する問題