指定静态资源路径

当SpringMVC的DispatcherServlet配置的映射路径是/时,所有的请求都将被SpringMVC拦截,如果我们想访问某个路径下的静态资源其实是不能直接访问的。基于这种情况,SpringMVC提供了<mvc:resources/>配置来告诉SpringMVC,哪些请求是针对静态资源的。它需要指定两个参数,location用来指定静态资源对应的实际路径,可以通过classpath:META-INF/static/这种方式指定类路径下的资源,如果有多个路径,可以通过英文逗号分隔。mapping用来指定哪些请求会被认为是在请求静态资源。下面的配置就指定了格式满足/static/**的请求路径被认为是在请求静态资源,会相应的到/static/路径下寻找对应文件。所以当请求路径是/static/css/default.css时会响应/static/css目录下的default.css文件。

<mvc:resources location="/static/" mapping="/static/**" />

实际上当SpringMVC的DispatcherServlet配置的映射路径是/时,所有的请求都将被SpringMVC拦截。如果配置了<mvc:default-servlet-handler/>,则当一个请求路径SpringMVC找不到处理器时将会把它交给容器本身处理,也就说这种情况下是可以正常访问静态资源的。

静态资源缓存

<mvc:resources/>还可以通过cache-period属性指定静态资源的缓存时间,单位是秒。这样浏览器在指定的cache-period时间内需要访问静态资源时会优先使用浏览器本地缓存的内容。

有的时候我们希望能强制更新浏览器缓存的内容,这个时候我们可以给静态资源加入一个版本的概念。大概意思是在URL中加入一个版本,每次有更新的时候都更新版本号,这样每次更新后请求的静态资源路径都不一样,浏览器也就会重新从服务端获取静态资源进行缓存了。SpringMVC对此也提供了支持,我们可以通过<mvc:fixed-version-strategy/>来定义一个固定的版本号,这样我们的请求路径需要重写为加上版本号,比如按照之前静态资源的配置,原本请求路径是/static/css/common.css,加上版本号之后就是/static/1.0/css/common.css,因为我们配置的请求路径映射是/static/**,即只需要在**前加上版本号作为一级目录。SpringMVC接收到请求/static/1.0/css/common.css会自动提取出版本号1.0,并把请求版本号与当前版本号比较,能匹配则响应去掉版本号的内容,否则就是404了。

    <mvc:resources location="/static/" mapping="/static/**" cache-period="600"><!-- 指定静态资源缓存,有版本更新时通过版本号来更新 --><mvc:resource-chain resource-cache="true"><mvc:resolvers><mvc:version-resolver><mvc:fixed-version-strategy version="1.0" patterns="/**" /></mvc:version-resolver></mvc:resolvers></mvc:resource-chain></mvc:resources>

(注:本文是基于Spring4.1.0所写)

SpringMVC指定静态资源路径相关推荐

  1. SpringBoot 指定静态资源路径

    可单独指定Mapping,不动用default配置. 1.配置类代码实现(常见) 低版本 @Configuration public class WebMvcConfig extends WebMvc ...

  2. SpringMVC 中静态资源的处理

    web项目中web.xml配置 在一个使用springmvc的web项目中,必然在web.xml中要配置前端控制器DispatcherServlet <servlet><servle ...

  3. SpringMVC中静态资源的处理

    web项目中web.xml配置 在一个使用springmvc的web项目中,必然在web.xml中要配置前端控制器DispatcherServlet <servlet><servle ...

  4. SpringMVC拦截静态资源的解决方法

    本文中的各软件版本简要信息: IDE:Myeclise17 JDK:1.8.0_111 spring:5.1.8 springMVC:5.1.8 mybatis:3.2.2 Tomcat:9.0 在使 ...

  5. springboot 请求路径有后缀_SpringBoot中配置Web静态资源路径的方法

    介绍: 本文章主要针对web项目中的两个问题进行详细解析介绍:1- 页面跳转404,即controller转发无法跳转页面问题:2- 静态资源文件路径问题. 项目工具: Intelij Idea, J ...

  6. springMVC对静态资源访问的处理

    在restful  风格下springMVC会进行如下配置 <servlet> <servlet-name>mvc</servlet-name><servle ...

  7. SpringMVC访问静态资源

    鸣谢:http://blog.163.com/koko_qiang/blog/static/207213184201382091154584/ ---------------------------- ...

  8. vue修改打包后静态资源路径

    使用vue-cli生成的项目,打包方式是直接执行package.json里配置的脚本 npm run build// 这步其实是去执行build下的build.js脚本文件 node build/bu ...

  9. 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )

    文章目录 I . CMake 简介 II . Android Studio 中 CMake 引入静态库流程 III . 指定 CMake 最小版本号 IV . 导入函数库 ( 静态库 / 动态库 ) ...

最新文章

  1. php导出excel列数太多,php生成excel列名,超过26列大于Z问题解决办法
  2. linux日志文件备份,linux配置文件、日志文件全备份
  3. MySQL高级 - SQL技巧 -日期函数与聚合函数
  4. MyBatis 架构分层与模块划分
  5. LAMP源代码编译整理
  6. 无公网ip远程访问调试-内网穿透工具
  7. JS-复习回调构造函数对象
  8. 是什么还让你停留在 iOS 平台?是这些理由吗
  9. 婴幼儿体重在线计算机,宝宝身高体重标准计算器
  10. Centos7虚拟机的镜像下载及创建
  11. Fedora 14 x64 试用手记
  12. 7个开源好用的管理系统,建议收藏加转载
  13. excel冻结指定行和列
  14. 网易云课堂计算机专业,网易云课堂“计算机专业课程”开课
  15. Transformer BEV perception
  16. 线性代数A矩阵乘以A的转置的含义或者几何意义
  17. 数据库delete语句菜鸟_MySQL视图
  18. Unity 打包快手
  19. java poi写入excel_Java使用POI读取和写入Excel指南
  20. 数据与知识管理属于计算机科学研究方向中,基于知识的应用生命周期管理研究-计算机科学与技术专业论文.docx...

热门文章

  1. HOJ 2739 网络流【带权有向图上的中国邮路问题】
  2. 绝对布局,setLayout(null)
  3. chkconfig安装
  4. 如何控制上网行为,空明云上网行为管理软件可以做什么?
  5. OPPO手机不再是全部自主设计制造,部分来自于ODM
  6. 人脸识别项目openface
  7. 处理oracle坏块
  8. pandas 数据类型之 Series
  9. m3u8及TS文件下载解密:m3u8文件下载及分析(三)
  10. VMware虚拟机分辨率