一尘不染

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

spring-mvc

我在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
配置(这对我来说很清楚),但是前几行到底是什么?

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


阅读 456

收藏
2020-06-01

共1个答案

一尘不染

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

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

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

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

2020-06-01