タグ(Spring 3.0.5)に問題があります。 Webアプリケーションに画像を追加したいのですが、機能しません。
以下は私のbean設定の一部です:
<mvc:annotation-driven/>
<mvc:default-servlet-handler default-servlet-name="ideafactory"/>
<mvc:resources mapping="/resources/**" location="/, classpath:/WEB-INF/public-resources/" cache-period="10000" />
Jspファイルに画像を追加しようとしています:
<img src="<c:url value="/resources/logo.png" />" alt="Idea Factory" />
まず、リソースをどこに保存すればよいかわかりません(src/main/resources/public-resources?src/main/webapp/WEB-INF/public-resources?)。第二に、この設定は機能せず、画像が表示されません。どうしましたか?
ありがとう!
編集:ここに与えられた解決策: 春のTomcatと静的リソースとmvc:resources も動作しません...成功せずに追加されました。
編集2:mvc:resourceタグを削除して、mvc:default-servlet-handler>のみを許可しようとしましたが、無限ループとstackoverflowを与えました... o_O( Spring 3で静的コンテンツを提供 )
エラーが見つかりました:
最終的なxxx-servlet.xml設定:
<mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/" />
Src/webapp/resources/logo.pngの画像
動作します!
<mvc:resources mapping="/resources/**"
location="/, classpath:/WEB-INF/public-resources/"
cache-period="10000" />
リソースをsrc/main/webapp/images/logo.png
の下に配置し、/resources/images/logo.png
を介してアクセスします。
war
では、images/logo.png
に配置されます。したがって、最初の場所(/
)フォームmvc:resources
はそれらを取得します。
classpath:/WEB-INF/public-resources/
の2番目の場所(mvc:resources
)(rooベースのテンプレートを使用したように見えます)は、ディレクトリ(WEB-INF/public-resources
jar。
$ {webappRoot}/resourcesディレクトリに静的リソースを提供することにより/ resources/**のHTTP GETリクエストを処理するためのリソースの推奨事項は、構成ファイルに次の行を追加するだけです。
<resources mapping="/resources/**" location="/resources/" />
それは私のために働いた。
ソース(Spring in Actionブックおよび http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html )
@Nancomによると
<mvc:resources location="/resources/" mapping="/resource/**"/>
わかりやすくするために、画像を
resources/images/logo.png"
タグのlocation属性は、提供する静的リソースのベースディレクトリの場所を定義します。 src/main/webapp/resources/images/
ディレクトリの下にある画像パスを使用できます。ロケーション値としてsrc/main/webapp/resources/images /の代わりに/ resources /のみを指定したのはなぜかと思うかもしれません。これは、リソースディレクトリをすべてのリソースのベースディレクトリと見なし、リソースディレクトリの下に複数のサブディレクトリを配置して、イメージやその他の静的リソースファイルを配置できるためです。
2番目の属性mappingは、このリソースディレクトリにマッピングする必要があるリクエストパスを示しています。この場合、マッピング値として/resources/**
を割り当てています。したがって、Web 要求が開始/resource
要求パスである場合、それはリソースディレクトリにマッピングされ、/**
記号はリソースファイルの再帰的な外観を示しますベースリソースディレクトリの下。
したがって、http://localhost:8080/webstore/resource/images/logo.png
のようなURLの場合。したがって、このWebリクエストを処理する間、Spring MVCは/resource/images/logo.png
をリクエストパスと見なします。そのため、/resource
をリソースベースディレクトリであるリソースにマップしようとします。このディレクトリから、URLの残りのパス(/images/logo.png
)を探します。 resourcesディレクトリの下にimagesディレクトリがあるため、Springはimagesディレクトリから簡単に画像ファイルを見つけることができます。
そう
<mvc:resources location="/resources/" mapping="/resource/**"/>
与えられた[リクエスト]-> [リソースマッピング]を提供します:
http://localhost:8080/webstore/resource/images/logo.png
-> resource/images/logo.png
で検索
http://localhost:8080/webstore/resource/images/small/picture.png
-> resource/images/small/picture.png
で検索
http://localhost:8080/webstore/resource/css/main.css
-> resource/css/main.css
で検索
http://localhost:8080/webstore/resource/pdf/index.pdf
-> resource/pdf/index.pdf
で検索
別の順序で動作させる:)
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:annotation-driven />
わたしにはできる:
<mvc:resources mapping="/static/**" location="/static/"/>
<mvc:default-servlet-handler />
<mvc:annotation-driven />
ディレクトリNetBeansのrsoucesディレクトリを保持できます:WebページEclipse:webapps
ファイル:dispatcher-servlet.xml
<?xml version='1.0' encoding='UTF-8' ?>
<!-- was: <?xml version="1.0" encoding="UTF-8"?> -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<context:component-scan base-package="controller" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
<mvc:resources location="/resources/theme_name/" mapping="/resources/**" cache-period="10000"/>
<mvc:annotation-driven/>
</beans>
ファイル:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>
</web-app>
JSPファイル内
<link href="<c:url value="/resources/css/default.css"/>" rel="stylesheet" type="text/css"/>
@ Nanocom の答えは私にとってはうまくいきます。行が最後にある必要があるか、次のようなbean
クラスの後でなければならない可能性があります。
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
<bean class="org.springframework.web.servlet.resource.ResourceHttpRequestHandler" />
<mvc:resources mapping="/resources/**"
location="/resources/"
cache-period="10000" />
以前にもこの問題に遭遇しました。私の状況は62個のSpring Frameworkのjarファイルすべてをlibファイルに入れなかった(spring-framework-4.1.2.RELEASEエディション)でした。そして、テストのために3.0.xsdを2.5または3.1に変更しましたが、すべてうまくいきました。もちろん、結果に影響する他の要因もあります。