Springboot 之 静态资源路径配置
2017-01-18 14:53
495 查看
静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取。
在Springboot中默认的静态资源路径有:classpath:/META-INF/resources/,
classpath:/resources/,
classpath:/static/,
classpath:/public/,从这里可以看出这里的静态资源路径都是在
classpath中(也就是在项目路径下指定的这几个文件夹)
试想这样一种情况:一个网站有文件上传文件的功能,如果被上传的文件放在上述的那些文件夹中会有怎样的后果?
网站数据与程序代码不能有效分离;
当项目被打包成一个
.jar文件部署时,再将上传的文件放到这个
.jar文件中是有多么低的效率;
网站数据的备份将会很痛苦。
此时可能最佳的解决办法是将静态资源路径设置到磁盘的基本个目录。
在Springboot中可以直接在配置文件中覆盖默认的静态资源路径的配置信息:
application.properties配置文件如下:
server.port=1122 web.upload-path=D:/temp/study13/ 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指的是系统环境变量
编写测试类上传文件
package com.zslin; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.FileCopyUtils; import java.io.File; /** * Created by 钟述林 393156105@qq.com on 2016/10/24 0:44. */ @SpringBootTest @RunWith(SpringRunner.class) public class FileTest { @Value("${web.upload-path}") private String path; /** 文件上传测试 */ @Test public void uploadTest() throws Exception { File f = new File("D:/pic.jpg"); FileCopyUtils.copy(f, new File(path+"/1.jpg")); } }
注意:这里将
D:/pic.jpg上传到配置的静态资源路径下,下面再写一个测试方法来遍历此路径下的所有文件。
@Test public void listFilesTest() { File file = new File(path); for(File f : file.listFiles()) { System.out.println("fileName : "+f.getName()); } }
可以到得结果:
fileName : 1.jpg
说明文件已上传成功,静态资源路径也配置成功。
浏览器方式验证
由于前面已经在静态资源路径中上传了一个名为
1.jpg的图片,也使用
server.port=1122设置了端口号为
1122,所以可以通过浏览器打开:
http://localhost:1122/1.jpg访问到刚刚上传的图片。
示例代码:https://github.com/zsl131/spring-boot-test/tree/master/study13
本文章来自【知识林】
相关文章推荐
- 很久很久前初学Java时的笔记--日期+集合
- Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式哦)
- java2 day02 注解 Junit
- spring bean的生命周期(4)
- 很久很久前初学Java时的笔记--内部类
- 很久很久前初学Java时的笔记--集合操作2
- spring mvc 绑定对象 并进行校验
- Spring中初始化泛型类的方法实例
- 很久很久前初学Java时的笔记--集合操作1
- 通用的ProtostuffSerializer for Java
- springmvc 初步
- Spring中property-placeholder的使用与解析
- spring bean的形式(3)
- Java设计模式
- java.util.Stack(栈)的简单使用
- java同步方法和同步代码块
- Spring中配置和读取多个Properties文件
- Flying Saucer生成pdf报表
- jvm工作原理
- Spring Autowire