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

时间:2014-09-26 21:02:27

标签: spring-mvc

我很难理解配置文件中<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/" />

2 个答案:

答案 0 :(得分:2)

如果您放置资源,则不需要它。 Web应用程序(WebContent)的根目录中的所有内容(非WEB-INFMETA-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状态代码   适当的,避免不必要的资源开销   已经被客户端缓存