2

C:\avadirなどのディレクトリにコンテンツ(ユーザーアバター)を保存するアプリがあります。私のアプリではSpringMVCを使用しています。ユーザー定義のアバターを表示する必要があります。このために、この外部ディレクトリを使用するように Tomcat を構成する必要があります。ROOT.xml にそのようなオプションがあり、 % CATALINA_HOME %\conf\Catalina\localhostに配置されています。

<Context path="/ava" docBase="c:/avadir" debug="0" reloadable="true" crossContext="true" />

my の次の設定servlet-context.xml:

<resources mapping="/ava/**" location="/ava/" />

この設定をセットアップした後、URL localhost:8080/ava/file.jpgでC:\avadir\file.jpgに配置されたファイルにアクセスできません。見逃したものはありますか?

4

1 に答える 1

6

ROOT.xml ファイルを変更しなくても、目的を達成できます。これにより、アプリケーションの管理が少し簡単になります。

まず、ROOT.xml から Context 定義を削除します。

次に、現在の Spring MVC 構成を変更して、画像を Spring MVC アプリケーションの一部として提供します。あなたが提案したパスを使用して、 <resources> 定義を次のように更新します。

<mvc:resources mapping="/ava/**" location="file:///C:/avadir"/>

これは基本的に、Tomcat で構成した 2 番目のコンテキストに依存するのではなく、ファイルシステムから直接リソースを提供するように Spring MVC 実装を構成することです。

また、Spring MVC リソースのマッピングは、Web アプリケーションのコンテキストに対して相対的であることを覚えておく必要があります。たとえば、アプリケーションがhttp://example.com:8080/myAppにデプロイされている場合、URL http://example.com:8080/myApp/ava/file.jpegでアクセスすると、/ava マッピングが実際に一致します。

于 2013-08-21T16:27:07.700 に答える