• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > spring boot 静态资源处理方法

spring boot 静态资源处理方法

作者:liuxg2013 字体:[增加 减小] 来源:互联网 时间:2017-05-28

liuxg2013 通过本文主要向大家介绍了spring boot 静态资源,spring boot教程,spring boot,spring boot是什么,spring boot入门等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

spring boot 秉承约定优于配置,spring boot在静态资源的处理上就已经默认做了处理。

1.默认资源映射

映射”/**”的路径到 /static (或/public、/resources、/META-INF/resources), ”/webjars/** 映射到 classpath:/META-INF/resources/webjars/

这里写图片描述

<script type="text/javascript" src="${request.contextPath }/js/index.js"></script>
</div>

注:若在freemarker获取request对象,在spring boot 在application.properties可以这么配置

spring.freemarker.request-context-attribute=request
</div>

2.如何自定义静态资源映射

spring boot有默认的资源映射,如果你觉得有需求需要,需要自己映射资源,可以在application.properties配置资源映射

#资源映射路径为/content/**
spring.mvc.static-path-pattern=/content/**
#资源映射地址为classpath:/content/
spring.resources.static-locations=classpath:/content/ 
</div>

配置了之后,默认资源映射失效,若要让默认的资源也有效的话,可以基于Java来配置

@Configuration
public class MvcConfiguration extends WebMvcConfigurerAdapter {

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
   registry.addResourceHandler("/myres/**").addResourceLocations("classpath:/myres/");
    super.addResourceHandlers(registry);
  }

}
</div>

这里不要用@EnableWebMvc,如果用了@EnableWebMvc,那sping boot默认关于webmvc的配置都会失效,你需要自己去配置每一项

3.配置webjars

webjars能允许我们利用java打包的方式,把web的资源文件打包成jar文件,并利用maven进行版本控制http://www.webjars.org/,在pom.xml中jQuery依赖

<dependency>
  <groupId>org.webjars</groupId>
  <artifactId>jquery</artifactId>
  <version>1.11.3</version>
</dependency>
</div>

这里写图片描述

引入成功之后,自动把资源放到classpath://META-INFO/resources/webjars目录下,我们可以通过/webjars/** 来访问

<script type="text/javascript" src="${request.contextPath }/webjars/jquery/1.11.3/jquery.js"></script>
</div>

4.webjars资源版本控制

既然引入maven进行版本控制,当有新版本的web资源的时候,当然不希望一个个的去客户端修改资源版本号,我们利用WebJarAssetLocator来处理,首先在pom.xml引入依赖

<dependency>
  <groupId>org.webjars</groupId>
  <artifactId>webjars-locator</artifactId>
</dependency>
</div>

然后定义一个controller进行拦截

@Controller
public class WebJarsController {

  private final WebJarAssetLocator assetLocator = new WebJarAssetLocator();

  @ResponseBody
  @RequestMapping("/webjarslocator/{webjar}/**")
  public ResponseEntity<?> locateWebjarAsset(@PathVariable String webjar, HttpServletRequest request) {
    try {
      String mvcPrefix = "/webjarslocator/" + webjar + "/"; // This prefix must match the mapping path!
      String mvcPath = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
      String fullPath = assetLocator.getFullPath(webjar, mvcPath.substring(mvcPrefix.length()));
      return new ResponseEntity<>(new ClassPathResource(fullPath), HttpStatus.OK);
    } catch (Exception e) {
      return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }
  }
}

</div>

在页面上,就这么调用,不需要写具体版本号

<script type="text/javascript" src="${request.contextPath }/webjarslocator/jquery/jquery.js"></script>
</div>

5.使用ResourceUrlProvider对自定义的静态资源进行管理

在使用第三方库,我们可以是使用WebJarAssetLocator的方式进行版本管理,但是使用自己写css和js,建议使用ResourceUrlProvider进行版本管理,并避免在版本发生改变时,由于浏览器缓存而产生资源版本未改变的错误

首先我们定义一个controller将路径信息推到前端

@ControllerAdvice
public class ResourceUrlProviderController {

  @Autowired
  private ResourceUrlProvider resourceUrlProvider;

  @ModelAttribute("urls")
  public ResourceUrlProvider urls() {
    return this.resourceUrlProvider;
  }

}

</div>

前端页面上,我们这么引入

<script type="text/javascript" src="${request.contextPath }/${urls.getForLookupPath('/js/index.js')}"></script>
</div>

而实际上,在生成的html页面上,已加上md5的后缀

<script type="text/javascript" src="/demo//js/index-a789359d91ae435bc45489c5e6978b34.js"></script>
</div>

由于ResourceUrlProvider监听了ApplicationListener<ContextRefreshedEvent>
所以在项目refresh的时候,在产生一个新的md5,这样客户端的资源路径就发生改变,回去服务器重新获取。

这就是spring boot的静态资源处理

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Spring boot 默认静态资源路径与手动配置访问路径的方法
  • spring boot中的静态资源加载处理方式
  • spring boot 静态资源处理方法
  • Spring boot 默认静态资源路径与手动配置访问路径的方法
  • spring boot中的静态资源加载处理方式

相关文章

  • 2017-05-28Java 中的CharArrayReader 介绍_动力节点Java学院整理
  • 2017-05-28java 算法之希尔排序详解及实现代码
  • 2017-05-28浅谈java中的一维数组、二维数组、三维数组、多维数组
  • 2017-05-28详解java 单例模式及方法总结
  • 2017-05-28java后台利用Apache poi 生成excel文档提供前台下载示例
  • 2017-10-21Java中多线程通信实例:生产者消费者模式
  • 2017-07-23详述SpringMVC框架中拦截器Interceptor的使用方法
  • 2017-05-28Java Web之限制用户多处登录实例代码
  • 2017-05-28mybatis中oracle实现分页效果实例代码
  • 2017-05-28SpringBoot下的值注入(推荐)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • JVM 方法调用之静态分派(详解)
    • 深入讲解java线程与synchronized关键字
    • Java实现在不同线程中运行的代码实例
    • Java中char[]输出不是内存地址的原因详解
    • 详解spring整合shiro权限管理与数据库设计
    • Java集合删除元素ArrayList实例详解
    • HashSet工作原理_动力节点Java学院整理
    • 数据库阿里连接池 druid配置详解
    • java 文件大数据Excel下载实例代码
    • Java序列化和反序列化_动力节点Java学院整理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有