我是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 配置(这对我来说非常清楚)但是前面的行究竟是什么呢?
你能详细解释一下我的意思和以前的语法吗?
答案 0 :(得分:2)
如果考虑将所有请求映射到DispatcherServlet
的spring mvc配置,则可以将这些请求分类为对静态和动态资源的请求。
动态资源请求与您在控制器方法中编程的内容相匹配,它们是典型框架处理的主题,例如路径匹配,内容协商,验证,绑定,转换,格式化,参数解析。
对静态资源的请求是对.js,.css或其他一些未创建的资源的请求,而这些资源已经部署在您的应用程序中。它们不是由程序控制器方法而是由ResourceHttpRequestHandler
处理,仅仅因为它们与动态请求相比具有完全不同的处理动作集(除了路径匹配)。您可以为给定的映射定义静态文件的位置(这可以是类路径,其他一些webapp文件夹或文件系统),资源的缓存策略,转换(例如css中的modyfing链接,将LESS转换为CSS)< / p>
所以,实际上你并不希望servlet处理静态资源,实际上你可以通过这样做获得很多可能性和灵活性,例如检查handling static web resources它只是那个静态和动态请求是不同类型操作的主题,通过使用mvc:resources
标记,您可以通过映射指定哪些请求将作为静态请求处理
答案 1 :(得分:1)
由于图像,css,javascript等资源不应由servlet处理并由Dispatcherservlet特定,因此spring提供了一种使用
指定它们的方法MVC:资源
标签。如果未使用上述标记映射此类资源,则调度程序servlet将使用请求的路径来查找具有匹配请求映射的控制器。 但是使用标记,spring查找标记的location属性以查找并返回资源,如果找不到资源,则返回HTTP状态代码404。
其他有用的答案