3

シンプルなウェブアプリを持っています

webapp
   static
       images
            - a.gif
       pages
            - test.html
   WEB-INF
       pages
            - test.jsp

test.htmlには、

<img src="/static/images/a.gif"/>

問題は、URIをに変更するまで画像が表示されないことです

<img src="/web app name/static/images/a.gif"/>

しかし、私はURIでtest.htmlをロードしています

http://server/web app name/static/pages/test.html

web.xmlで静的リソースマッピングを次のように構成しました。

<servlet>
    <servlet-name>springWeb</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext-web.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springWeb</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>resourceServlet</servlet-name>
    <servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>resourceServlet</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>

私は何かが足りないのですか?これらの静的リソースをHTTPサーバーに移動するのではなく、アプリ内でDEVフェーズに保持したいと思います。

どうもありがとう。

4

2 に答える 2

6

このため、spring:urlタグまたはJSTL c:urlタグのいずれかを使用してURLをHTMLでラップすることをお勧めします。これらのタグは、コンテキストパスを自動的に追加します。

例えば:

<img src="<spring:url value='/static/images/a.gif'/>"/>

または、開発で「」のコンテキストパスを使用することもできます。そうすれば、URLは本番環境と一致します。これを行う方法は、サーブレットコンテナごとに異なります。たとえば、Tomcatの場合、アプリをwebapps/ROOTにデプロイします。

于 2011-02-21T13:59:22.190 に答える
2

もう少し一般的にする1つの方法は、

<img src="<%=request.getContextPath()%>/static/images/a.gif"/>

ディレクトリ構造がわかっている場合は、次のような相対URLを使用することもできます。

static/images/a.gif
../static/images/a.gif
于 2011-02-21T12:50:11.500 に答える