繁体   English   中英

这些声明到Spring MVC应用程序的servlet-context.xml中的mvc:resources映射标记是什么意思?

[英]What means these mvc:resources mapping tags declared into the servlet-context.xml of a Spring MVC application?

我在Spring中还很陌生,正在研究Spring MVC应用程序。

servlet-context.xml配置文件中,我找到了以下行:

<!-- resources exclusions from servlet mapping -->
<mvc:resources mapping="/assets/**" location="classpath:/META-INF/resources/webjars/"/>
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/img/**" location="/img/"/>
<mvc:resources mapping="/js/**" location="/js/"/>

评论说servlet映射中的资源排除

这些行到底是什么意思? 我知道这个servlet-context.xml应该包含处理MVC行为的DispatcherServlet配置(这对我来说很清楚),但是前几行到底是什么?

您能详细解释一下我的意思和以前的语法吗?

如果考虑将所有请求都映射到DispatcherServlet的spring mvc配置,则可以将这些请求归为对静态和动态资源的请求。

对动态资源的请求与您在控制器方法中编程的内容相匹配,它们是典型框架处理的主题,例如路径匹配,内容协商,验证,绑定,转换,格式化,参数解析。

对静态资源的请求是对.js,.css或其他尚未创建但已经与应用程序一起部署的其他资源的请求。 它们不是由程序控制器方法处理,而是由ResourceHttpRequestHandler ,仅因为它们与动态请求相比(除了路径匹配)具有完全不同的处理动作集。 您可以为给定映射定义静态文件的位置(可以是类路径,其他webapp文件夹或文件系统),资源的缓存策略,转换(例如CSS中的modyfing链接,将LESS转换为CSS)

因此,并不是您不希望servlet处理静态资源,实际上,这样做可以带来很多可能性和灵活性,例如, 处理静态Web资源就是静态和动态请求是不同类型的操作的主题,通过使用mvc:resources标记,您可以通过映射指定将哪些请求作为静态请求处理

由于像图片,css,javascript等资源不应由servlet处理,而应由Dispatcherservlet专门处理,因此spring提供了一种使用以下方法指定资源的方法

MVC:资源

标签。 如果未使用上述标记映射此类资源,则调度程序servlet将使用请求的路径来查找具有匹配请求映射的控制器。 但是使用该标记,spring会查看标记的location属性以查找并返回资源,如果找不到该资源,则返回HTTP状态代码404。

其他有用的答案

  1. 标签的位置属性的详细说明

  2. 弹簧-3- mvcresources和标签的mvcresources

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM