我很难理解配置文件中<mvc:resources mapping="..." location=".."/>
部分的用途。
我的项目结构......
--WebContent
-----META-INF
-----static
-----------images
------------js
------------css
-----WEB-INF
--------jsps
--------spring-configs
--------web.xml
即使我没有在spring servlet配置文件中指定此部分,我也可以访问images,js和css文件夹下的文件。那我为什么要指定这个?它究竟用于什么目的?
对于记录,这是我在配置文件中的内容。
<mvc:resources mapping="/static/**" location="/static/" />
答案 0 :(得分:2)
如果您放置资源,则不需要它。 Web应用程序(WebContent)的根目录中的所有内容(非WEB-INF
或META-INF
)都是公开可用的,Servlet容器可以将其提供给任何客户端。
<mvc:resources ... />
元素用于提供WEB-INF
范围内的资源,这些资源不能直接供客户使用。它们必须由您的申请提供。
答案 1 :(得分:0)
添加到@Sotirios
已回答的内容,<mvc:resources/>
可以解析来自Classpath资源的静态资源(例如,jar文件)。这开启了将静态资源打包在一个独立的jar模块中的可能性以及业务逻辑(尽管很少有人在像Spring这样的基于命令的框架中使用这种方法 - 这在基于组件的框架(如JSF)中更为普遍)。
除此之外,使用此标记还有其他好处here。我引用了
cache-period属性可用于设置远期到期 标题(1年是优化工具的推荐,如 Page Speed和YSlow)以便更有效地利用它们 由客户。处理程序还可以正确评估Last-Modified 标头(如果存在),以便返回304状态代码 适当的,避免不必要的资源开销 已经被客户端缓存