为什么要在配置文件中声明<mvc:resources>



我很难理解配置文件中<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-INFMETA-INF(都是公开可用的,Servlet 容器可以将其提供给任何客户端。

<mvc:resources ... /> 元素旨在提供WEB-INF内客户端无法直接使用的资源。它们必须由您的应用程序提供。

除了@Sotirios回答的内容之外,<mvc:resources/>可以从类路径资源(例如jar文件(解析静态资源。这开辟了将静态资源与业务逻辑一起打包在自包含的jar模块中的可能性(尽管很少有人在像Spring这样的基于命令的框架中使用这种方法 - 这在JSF等基于组件的框架中更为普遍(。除此之外,使用此处提到的此标签还有其他好处。我引用

缓存周期属性可用于设置远未来的过期时间 标题(1 年是优化工具的建议,例如 页面速度和 YSlow(,以便更有效地利用它们 由客户。处理程序还会正确评估上次修改时间 标头(如果存在(,以便 304 状态代码将返回为 适当,避免不必要的资源开销 已由客户端缓存

最新更新