点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾讯等大厂offer。
另外,原创文章首发在我的个人博客:blog.ouyangsihai.cn,欢迎访问
原文链接:blog.ouyangsihai.cn >> 玩转springboot:默认静态资源和自定义静态资源实战

在web开发中,静态资源的访问是必不可少的,如:图片、js、css 等资源的访问。
spring Boot 对静态资源访问提供了很好的支持,基本使用默认配置就能满足开发需求

一、默认静态资源映射

Spring Boot 对静态资源映射提供了默认配置

Spring Boot 默认将 /** 所有访问映射到以下目录:

classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources

如:在resources目录下新建 public、resources、static 三个目录,并分别放入 a.jpg b.jpg c.jpg 图片

浏览器分别访问:

http://localhost:8080/a.jpg
http://localhost:8080/b.jpg
http://localhost:8080/c.jpg

均能正常访问相应的图片资源。那么说明,Spring Boot 默认会挨个从 public resources static 里面找是否存在相应的资源,如果有则直接返回。

二、自定义静态资源访问

静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取。

在Springboot中默认的静态资源路径有:classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,从这里可以看出这里的静态资源路径都是在classpath中(也就是在项目路径下指定的这几个文件夹)

试想这样一种情况:一个网站有文件上传文件的功能,如果被上传的文件放在上述的那些文件夹中会有怎样的后果?

  • 网站数据与程序代码不能有效分离;
  • 当项目被打包成一个.jar文件部署时,再将上传的文件放到这个.jar文件中是有多么低的效率;
  • 网站数据的备份将会很痛苦。

此时可能最佳的解决办法是将静态资源路径设置到磁盘的基本个目录

第一种方式

1、配置类

*** @author 欧阳思海* @date 2018/7/25 15:42*/
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {//将所有C:/Users/gzpost05/Desktop/springboot博客/ 访问都映射到/myTest/** 路径下registry.addResourceHandler("/myTest/**").addResourceLocations("file:C:/Users/gzpost05/Desktop/springboot博客/");}
}

上面的意思就是://将所有C:/Users/gzpost05/Desktop/springboot博客/ 访问都映射到**/myTest/**** 路径下

2、重启项目

例如,在**C:/Users/gzpost05/Desktop/springboot博客/**中有一张1.png图片

在浏览器输入:http://localhost:8080/myTest/1.png 即可访问。

第二种方式

首先,我们配置application.properties

application.properties配置文件

web.upload-path=C:/Users/gzpost05/Desktop/test/spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\classpath:/static/,classpath:/public/,file:${web.upload-path}

注意:

web.upload-path:这个属于自定义的属性,指定了一个路径,注意要以/结尾;

spring.mvc.static-path-pattern=/**:表示所有的访问都经过静态资源路径;

spring.resources.static-locations:在这里配置静态资源路径,前面说了这里的配置是覆盖默认配置,所以需要将默认的也加上否则static、public等这些路径将不能被当作静态资源路径,在这个最末尾的file:${web.upload-path}之所有要加file:是因为指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量

编写测试类上传文件

/*** @author 欧阳思海* @date 2018/7/25 16:17*/
@SpringBootTest
@RunWith(SpringRunner.class)
public class FileUploadTest {@Value("${web.upload-path}")private String path;/** 文件上传测试 */@Testpublic void uploadTest() throws Exception {File f = new File("C:/Users/gzpost05/Desktop/springboot博客/1.png");FileCopyUtils.copy(f, new File(path+"/aaa.png"));}@Testpublic void listFilesTest() {File file = new File(path);for(File f : file.listFiles()) {System.out.println("fileName : "+f.getName());}}
}

注意:这里将C:/Users/gzpost05/Desktop/springboot博客/1.png上传到配置的静态资源路径下。

可以到得结果:

说明文件已上传成功,静态资源路径也配置成功。

参考:
https://blog.csdn.net/zsl129/article/details/52906762

最后,再分享我历时三个月总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及春招的总结,已经拿到了大厂offer,整理成了一本电子书,拿去不谢,目录如下:

现在免费分享大家,在下面我的公众号 程序员的技术圈子 回复 面试 即可获取。

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

1、老铁们,关注我的原创微信公众号「程序员的技术圈子」,专注于Java、数据结构和算法、微服务、中间件等技术分享,保证你看完有所收获。

2、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我继续写作,嘻嘻。

3、另外,原创文章首发在我的个人博客:blog.ouyangsihai.cn,欢迎访问。

点赞是对我最大的鼓励
↓↓↓↓↓↓

玩转springboot:默认静态资源和自定义静态资源实战相关推荐

  1. 玩转springboot:自定义异常处理和深入异常处理原理

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本 ...

  2. springboot下MVC的MessageConverters和静态资源位置的配置

    文章目录 1. WebMvcConfigurationSupport.WebMvcConfigurer 区别 2. 自定义消息转换器MessageConverters 3. 静态资源 3.1 静态资源 ...

  3. SpringBoot中的yaml语法及静态资源访问问题

    配置文件-yaml 在spring Boot开发中推荐使用yaml来作为配置文件. 基本语法: key: value:kv之间有空格 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 ...

  4. @retention注解作用_分分钟带你玩转SpringBoot自定义注解

    在工作中,我们有时候需要将一些公共的功能封装,比如操作日志的存储,防重复提交等等.这些功能有些接口会用到,为了便于其他接口和方法的使用,做成自定义注解,侵入性更低一点.别人用的话直接注解就好.下面就来 ...

  5. java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

    一.通过配置文件控制静态资源的热部署 在配置文件 application.properties 中添加: #表示从这个默认不触发重启的目录中除去static目录 spring.devtools.res ...

  6. 玩转 SpringBoot 2.x 之自定义Starter依赖

    前言 SpringBoot 核心功能之一就是 starter 依赖也叫起步依赖,他默认提供了 spring-boot-starter-web.spring-boot-starter-logging.s ...

  7. springboot 设置ico_Spring Boot--Thymeleaf模板引擎/静态页面

    点关注,不迷路:持续更新Java相关技术及资讯!!! 1.Spring Boot对静态资源的映射规则 如果静态资源文件夹下有 index.html的话,直接访问localhost:8080的话,ind ...

  8. 玩转 Springboot 2 之热部署(DevTools)

    Devtools 介绍 SpringBoot 提供了热部署的功能,那啥是热部署累?SpringBoot官方是这样说的:只要类路径上的文件发生更改,就会自动重新启动应用程序.在IDE中工作时,这可能是一 ...

  9. @scheduled注解配置时间_「玩转SpringBoot」用好条件相关注解,开启自动配置之门...

    封面图自动配置隐含两层含义,要搞清楚 上帝让程序员的发量减少,是为了让他变得更聪明,如果有一天聪明到了极点,那就是绝顶聪明. 据说在大脑高速运转下,这样更有利于散热,不至于核心温度过高而产生告警. 聪 ...

最新文章

  1. Linux 日志管理(RHEL7)
  2. 七大Github机器学习热门项目
  3. 【数字信号处理】线性常系数差分方程 ( 使用 matlab 求解 “ 线性常系数差分方程 “ 示例 | A 向量分析 | B 向量分析 | 输入序列分析 | matlab 代码 )
  4. Spring Boot怎么样引入Thymeleaf模板引擎
  5. 第56课 九九乘法表 《小学生C++趣味编程》
  6. MySQL单表删除重复列SQL语句
  7. PKI世界中两个知名的情侣 Alice和Bob
  8. SubSnoic 框架入门到提高(4)---全程记录
  9. 广度优先搜索nodeHDU/HDOJ 1242 Rescue 典型的迷宫广度优先搜索题
  10. 几种常见的JavaScript特效
  11. html5车牌效果,车牌自编效果预览软件【京牌】
  12. 谷歌退出中国市场传言推动百度股价大涨4.8%【转载】
  13. python操作cad的模块_利用python控制Autocad:pyautocad方式
  14. pxc部署和配置详解
  15. 本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。
  16. Lexicon Enhanced Chinese Sequence Labelling Using BERT Adapter 论文解读
  17. Kingdom Rush 国王保卫战图文攻略
  18. 真正的互联网诞生:TCP/IP协议的出现
  19. 22年最强Java面试八股文界的“六边形战士”,堪称天花板!
  20. 最值得购买的四大名著版本推荐(一家之言)

热门文章

  1. HttpWebResponse远程服务器返回错误: (500) 内部服务器错误。
  2. 基于FTP的Nordic nRF51822 OTA 教程一之修改boot区大小
  3. 宏EXPORT_SYMBOL在内核中的作用
  4. Kubernetes中Service的种类
  5. 【Flask】数据的CRUD操作之聚合函数
  6. 栈——用链表实现栈操作
  7. [crypto]-05-转载:PKCS #1 RSA Encryption Version 1.5介绍
  8. 返回对象2(调用了拷贝构造函数)
  9. Linux中如何使用Htop监控工具?【网络安全】
  10. Windows保护模式学习笔记(六)—— 10-10-12分页