我很难理解配置文件中<mvc:resources mapping="..." location=".."/>
部分的目的。
我的项目结构...
--WebContent
-----META-INF
-----static
-----------images
------------js
------------css
-----WEB-INF
--------jsps
--------spring-configs
--------web.xml
即使我没有在 spring servlet 配置文件中指定此部分,我也可以访问图像、js 和 css 文件夹下的文件。那么为什么我需要指定这个呢?它到底有什么作用?
作为记录,这是我的配置文件中的内容。
<mvc:resources mapping="/static/**" location="/static/" />
如果这是您放置资源的地方,则不需要它。Web 应用程序 (WebContent( 根目录下的所有内容(未WEB-INF
或META-INF
(都是公开可用的,Servlet 容器可以将其提供给任何客户端。
<mvc:resources ... />
元素旨在提供WEB-INF
内客户端无法直接使用的资源。它们必须由您的应用程序提供。
除了@Sotirios
回答的内容之外,<mvc:resources/>
可以从类路径资源(例如jar文件(解析静态资源。这开辟了将静态资源与业务逻辑一起打包在自包含的jar模块中的可能性(尽管很少有人在像Spring这样的基于命令的框架中使用这种方法 - 这在JSF等基于组件的框架中更为普遍(。除此之外,使用此处提到的此标签还有其他好处。我引用
缓存周期属性可用于设置远未来的过期时间 标题(1 年是优化工具的建议,例如 页面速度和 YSlow(,以便更有效地利用它们 由客户。处理程序还会正确评估上次修改时间 标头(如果存在(,以便 304 状态代码将返回为 适当,避免不必要的资源开销 已由客户端缓存