Spring框架:mvc:resources不起作用

时间:2018-07-12 14:03:32

标签: spring spring-mvc

在我的Spring Web Application项目中,我已经配置了mvc:resources标签,以便从DispatcherServlet映射中排除CSS,JS,图像...

现在,我还需要排除foobar.txt,并且像其他静态资源一样放置在/webapp目录下,但是...这不起作用。

这是我的代码段

<mvc:resources mapping="/assets/**" location="/assets/" />
<mvc:resources mapping="/foobar.txt" location="/foobar.txt" />

我的文件夹结构是:

   /webapp
    /webapp/assets
    /webapp/foobar.txt
    /webapp/...

似乎第一个mvc:resources标记(资产)有效,而第二个(version.txt)无效。

我得到404页。

这些是控制台日志中的区别。

2018-07-12 13:58:25,093 DEBUG [http-nio-8080-exec-6] (DispatcherServlet.java:845) - DispatcherServlet with name 'dispatcher' processing GET request for [/mscbackend/foobar.txt]
2018-07-12 13:58:25,093 DEBUG [http-nio-8080-exec-6] (AbstractHandlerMethodMapping.java:297) - Looking up handler method for path /foobar.txt
2018-07-12 13:58:25,096 DEBUG [http-nio-8080-exec-6] (AbstractHandlerMethodMapping.java:305) - Did not find handler method for [/foobar.txt]
2018-07-12 13:58:25,097 DEBUG [http-nio-8080-exec-6] (AbstractUrlHandlerMapping.java:123) - Mapping [/foobar.txt] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[ServletContext resource [/foobar.txt]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@66894a78]]] and 1 interceptor

2018-07-12 14:08:27,165 DEBUG [http-nio-8080-exec-7] (DispatcherServlet.java:845) - DispatcherServlet with name 'dispatcher' processing GET request for [/mscbackend/assets/css/style.css]
2018-07-12 14:08:27,165 DEBUG [http-nio-8080-exec-7] (AbstractHandlerMethodMapping.java:297) - Looking up handler method for path /assets/css/style.css
2018-07-12 14:08:27,169 DEBUG [http-nio-8080-exec-7] (AbstractHandlerMethodMapping.java:305) - Did not find handler method for [/assets/css/style.css]
2018-07-12 14:08:27,169 DEBUG [http-nio-8080-exec-7] (AbstractUrlHandlerMapping.java:168) - Matching patterns for request [/assets/css/style.css] are [/assets/**]

奇怪的是,在另一个类似的项目中,相同的配置可以正常工作。

预先感谢您的支持。

2 个答案:

答案 0 :(得分:0)

尝试以下配置。

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

或者如果您想为特定位置提供类路径,请在下面使用。

<mvc:resources location="/, classpath:/META-INF/web-resources/" mapping="/resources/**"/>

答案 1 :(得分:0)

尝试此配置。

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

我不知道为什么,但是有时候它能起作用。你可以试试看。