< mvc:resources />的作用

在Spring MVC框架中,针对静态资源的请求处理除了可以配置< mvc:default-servlet-handler />标签,通过容器来处理以外,还可以使用< mvc:resources />标签,在框架层面来处理。

从Spring MVC的XML Schema文件说明中可以知道,通过< mvc:resources />标签的配置可以使在Spring MVC框架中,配置一个Handler来处理静态资源,例如:图片,JS,CSS等文件,并通过配置Cache相关的Headers来使浏览器能够更有效的进行加载。同时,该配置允许将静态资源放在任何Spring MVC框架能够读取到的路径下。

< mvc:resources />的配置

< mvc:resources />主要有以下配置:

  1. mapping(必填,类型:string)基于当前Servlet上下文的URL匹配规则,例如:"/resources/**"。

  2. location(必填,类型:string)静态资源的放置路径,满足Spring资源的匹配规则,可以使用"classpath:"。当存在多个路径时,通过","来进行拼接,例如:"/, classpath:/META-INF/public-web-resources/"。

  3. cache-period(选填,类型:string)用来配置Handler类针对静态资源的缓存时间,以秒为单位。默认情况下不会发送任何缓存的Header,仅仅依赖last-modified参数的修改时间戳。当设置为0时,表示禁止进行资源缓存;当设置一个正整数时,表示资源缓存的最长有效时间。

  4. order(选填,类型:int)用来配置Handler类处理请求的顺序,默认为最低优先级的值-1。

ResourceHttpRequestHandler类的作用

在ResourceHttpRequestHandler类中通过解析标签中location对应的参数,来从服务器或jar包中获取静态资源。

同时,可以通过配置VersionResourceResolver类,GzipResourceResolver类,与CachingResourceResolver类等解析器类或CssLinkResourceTransformer类,AppCacheManifestTransformer类等转换器类,来提供针对静态资源添加版本号,Gzip压缩等自定义的处理过程。而默认仅使用PathResourceResolver类来根据URL查询静态资源。

在处理Request请求时,ResourceHttpRequestHandler类默认会针对Headers请求头中的Last-Modified参数进行计算,以此来判断是否返回请求码304,通知浏览器使用缓存数据,以此来提升请求响应效率。

< mvc:resources />与< mvc:default-servlet-handler />的异同

由于Spring MVC中框架处理的请求全部通过DispatcherServlet类来进行处理,因此,无法直接的针对静态资源请求进行很友好的兼容处理。于此,框架提供了两种处理策略来进行处理:

  1. 通过< mvc:default-servlet-handler />标签来转移请求处理过程,交由WEB容器进行高效的处理。可以更好的依赖容器自身的请求处理能力,承担静态资源请求的处理过程;

  2. 通过< mvc:resources />标签来配置对应的Resolver类和Transformer类来在框架层面进行静态资源请求的处理,以达到解耦容器的目的。并通过集成请求响应的优化处理逻辑,来满足业务与性能的需求。

转载于:https://my.oschina.net/u/1156626/blog/3097988

Spring MVC标签mvc:resources/小结相关推荐

  1. html5引入spring标签,[MVC]5 使用Spring标签库

    A.Spring标签库 Web项目若使用Spring Web MVC并使用JSP作为表现的话.从Spring2.0版本开始提供一套标签库可供使用. 使用标签库无非是易于开发,维护之类云云.这里就不阐述 ...

  2. 【Spring框架】mvc:default-servlet-handler/的作用

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  3. 在controller中调用指定参数给指定表单_第005课:Spring Boot 中MVC支持

    Spring Boot 的 MVC 支持主要介绍实际项目中最常用的几个注解,包括 @RestController. @RequestMapping.@PathVariable.@RequestPara ...

  4. Spring的Web MVC –重定向到内存泄漏

    他们说一块岩石会引起雪崩. 最近,我的一位同事Marcin Radoszewski给了我一块岩石. 您可能永远都不会猜测它是什么,但是有机会在许多Web应用程序中使用它. 请允许我向您介绍这块石头. ...

  5. mvc crud_Spring MVC Hibernate MySQL集成CRUD示例教程

    mvc crud We learned how to integrate Spring and Hibernate in our last tutorial. Today we will move f ...

  6. spring 自定义标签的实现

    在我们进行Spring 框架开发中,估计用到最多的就是bean 标签吧,其实在Spring中像<mvc/><context/>这类标签以及在dubbo配置的标签都是属于自定义的 ...

  7. 使用Spring Form标签探索Spring Controller

    在上一篇文章中 ,我向您展示了如何使用Spring控制器处理纯HTML表单. 但是处理表单的更强大的方法是使用Spring的@ModelAttribute及其spring:form标签. 我将向您展示 ...

  8. spring form标签的使用

    文章目录 前言 一.spring form 标签和JSRxxx数据格式验证 二.spring表单 标签分类.属性 1.标签类别 2.标签属性 三. JSRxxx约束 四.结合JSRXXX约束使用步骤 ...

  9. return error怎么定义_这一次搞懂Spring自定义标签以及注解解析原理

    自定义标签解析原理 在上一篇分析默认标签解析时看到过这个类DefaultBeanDefinitionDocumentReader的方法parseBeanDefinitions:拉勾IT课小编为大家分解 ...

最新文章

  1. IBM将收购Instana公司,持续推进其混合云和人工智能战略
  2. 干货|一文看懂美国共享出行3大领域8大头部玩家
  3. Docker虚拟化容器的使用
  4. 容器技术之二.Docker的安装和常见问题
  5. 延迟开学?这些教育读书公众号可以帮助孩子学习! 你都关注了吗?
  6. oracle数据库并行数限制,Oracle数据库并行处理技术详解(上)
  7. SQL 死锁分析(转贴)
  8. 更美好的未来展望:UE4 路线图更新
  9. 搭建视频网站的技术方案
  10. SAP License:SAP财务管理的认识
  11. 实验二 20145237 20155226 2015234 实验报告 固件程序设计
  12. Ubuntu 谷歌浏览器下载
  13. 杰奇 v1.7去限制版橙色模板小说源码
  14. [麻将] 麻将的一些概率计算
  15. C# 使用md5查找文件夹内重复的文件
  16. 如何在非简体中文版XP下面玩魔兽争霸
  17. Trips and Users
  18. tritonserver的metrics参数说明
  19. Oracle 实验一:Oracle11g的安装与管理工具
  20. linux升级系统内核

热门文章

  1. Eclipse中支持js提示
  2. 【ROS入门学习05|自定义话题消息,并且编程实现publisher和subscriber】
  3. 用.NET做DDNS动态域名解析和SSL证书申请
  4. 骁龙695是什么水平 骁龙695和骁龙778g哪个好
  5. 《暗时间》 读书感悟
  6. x264中码率控制(一)
  7. 从浏览器地址栏输入url到请求返回发生了什么(深问)
  8. 利用百度AI开放平台的语言处理基础技术(Python)
  9. Java压缩、解压zip文件
  10. 【软件构造】面向正确性和健壮性的软件构造小记