Spring MVC mvc:资源位置属性

时间:2011-03-21 14:29:17

标签: spring spring-mvc

伙计我也有加载静态资源的问题。

我想我已经正确设置了一切。但我不理解 mvc:resources 位置属性。它的用途是什么?

如果我在静态资源位置VAADIN / themes / theme / ...(在几个子文件夹,图像,css,js中),那么位置和映射属性的正确值应该是什么?

我在配置中有以下内容:

<mvc:resources location="/VAADIN/" mapping="/VAADIN/**"/>

它不起作用。我想日志的以下部分是相关的:

17:15:02.897 [http-8080-2] DEBUG o.s.w.s.m.a.DefaultAnnotationHandlerMapping - Rejected bean name 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#6': no
 URL paths identified

我收到了 HTTP状态404 ,例如http://127.0.0.1/VAADIN/themes/theme/css/style.css

4 个答案:

答案 0 :(得分:5)

location是放置资源的文件夹的位置。 XSD docs写道:

  

从Spring资源模式指定的服务静态内容的资源位置。       每个位置都必须指向一个有效的目录。可以将多个位置指定为以逗号分隔的列表,       并按指定的顺序检查给定资源的位置。例如,值为       “/,classpath:/ META-INF / public-web-resources /”将允许从Web应用程序提供资源       root和来自包含/ META-INF / public-web-resources /目录的类路径上的任何JAR,       使用Web应用程序根目录中的资源优先。

另一方面,mapping属性为:

  

当前Servlet上下文中的URL映射模式,用于从此处理程序提供资源,例如“/ resources / **”

所以mapping指定在网上可以访问哪些资源,而location指定这些资源在磁盘上的位置。

答案 1 :(得分:1)

我的猜测是你没有正确引用这个位置。

  • 你的VAADIN文件夹是否在 WAR的顶级目录(其中 案例location="/VAADIN/"是 正确的)
  • 或者是WEB-INF / classes(其中 必须是这样的 location="classpath:/VAADIN/")?

答案 2 :(得分:0)

也许你已经配置了一些在resourcehttprequestresolver(或其所谓的)之前启动的handlermapping 检查您是否没有使用订单属性停止映射链的AbstractUrlHandlerMapping或任何其他处理程序映射。 或者使用订单配置资源解析程序:&lt; mvc:resources ... order =“1”/&gt;

<!-- Maps all other request URLs to views -->
<bean id="viewMappings" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="defaultHandler">
        <!-- Selects view names to render based on the request URI: e.g. the "/Home" URL would map to the view named "Home" -->
        <bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
    </property>
    <!-- This will prevent the mvc:resources to handle requests. Unless, of course, you specify an order in the mvc:resources order attribute
    <property name="order" value="3" /  Removing this will place this just after The ResourceHttpRequestHandler-->
</bean>

答案 3 :(得分:0)

设置用于提供静态内容的处理程序。映射属性 设置为/ resources / **,其中包含一个Ant样式的通配符以指示该路径 必须以/ resources开头,但可以包含其任何子路径。位置属性 表示要提供的文件的位置。如此配置,任何请求 其路径以/ resources开头的路径将自动从/ ​​resources提供 应用程序根目录下的文件夹。因此,我们所有的图像,样式表, JavaScript和其他静态内容需要保存在应用程序的/资源中 文件夹中。