Spring

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

在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在这里配置静态资源路径,前面说了这里的配置是覆盖默认配置,所以需要将默认的也加上否则staticpublic等这些路径将不能被当作静态资源路径,在这个最末尾的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

本文章来自【知识林】

13.1Springboot 之 静态资源路径配置的更多相关文章

  1. springboot之静态资源路径配置

    静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取. 在Springboot中默认的静态资源路径有:classpath:/META-INF/resources/,classp ...

  2. Springboot 之 静态资源路径配置

    1.静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户通过浏览器直接读取. 2.在Springboot中默认的静态资源路径有:classpath:/META-INF/resource ...

  3. Spring boot 默认静态资源路径与手动配置访问路径的方法

    这篇文章主要介绍了Spring boot 默认静态资源路径与手动配置访问路径的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下   在application.propertis中配置 ##端口号 ...

  4. SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径

    Springboot 再模板引擎中引入Js等文件,出现服务器拒绝访问的错误,需要配置过滤器 静态资源访问配置 @Configuration @EnableWebMvc public class Sta ...

  5. nginx配置静态资源:配置绝对路径

    nginx配置静态资源:配置绝对路径 项目都是html格式的文件,我的项目路径:E:\javaservice\nginx-1.15.7\html assets:静态资源 html:站点文件 uploa ...

  6. 二.Nginx反向代理和静态资源服务配置

    2018年03月31日 10:30:12 麦洛_ 阅读数:1362更多 所属专栏: nginx   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/M ...

  7. spring-mvc不拦截静态资源的配置

    spring-mvc不拦截静态资源的配置 标签: spring 2015-03-27 23:54 11587人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. &qu ...

  8. vue+webpack静态资源路径引用

    处理静态资产 你可能已经注意到,在项目结构中我们有两个静态资产目录:src/assets和static/.他们之间有什么区别? 要回答这个问题,我们首先需要了解Webpack如何处理静态资产.在*.v ...

  9. 用node.js express设置路径后 子路径下的页面访问静态资源路径出问题

    在routes/news_mian.js 设置了访问news_main.html 的路径 '/',通知设置一个访问news-page.html的子路径'/newspage'子路径.但是在访问loacl ...

随机推荐

  1. urllib2.URLError: <ulropn error [Errno 10060] >

    在抓网页的时候,如果抓取频率很高,很容易出现这个错误: 意思是服务器拒绝响应.解决的方法为,隔段时间再试,不过这个方法不靠谱.靠谱的方法是增加一个延迟函数 import time time.sleep ...

  2. NOIP2011提高组

    D1T1.铺地毯 for循环 #include<iostream> #include<cstdio> #include<algorithm> using names ...

  3. DNS 资源记录解释

    ;SOA授权的开始;;SOA或授权的开始记录用来表示区域的启动;每个区域必须只有一个SOA记录;从名字服务器,在不能和主服务器通信的情况下,将提供12小时DNS服务, 在指定的时间后停止为那个区域提供 ...

  4. 软中断网卡处理&Linux高性能外部设备处理机制&SMP

    转载:http://blog.csdn.net/freas_1990/article/details/9238183 看了一些linux网卡驱动的处理技术,对有些概念还是无法理解,突然搜到这篇文章,挺 ...

  5. 解决Django的admin界面中文乱码

    解决Django的admin界面中文乱码 问题陈述 最近在做一个很小的Django项目时,使用了自带的sqlite作为数据库.后台admin界面在显示中文数据时,总会遇到乱码.这里截取一小部分代码: ...

  6. Fiddler抓包11-HTTPS证书Actions无法导出问题【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/fiddler/ 前言 在点Actions时候出现Export Failed:The r ...

  7. linux题目整理(二)

    1.如何过滤出已知当前目录下oldboy中的所有一级目录(不包含子目录,即只能是一级目录) 方法1:find ./ -type d -maxdepth 1方法2:ls -F方法3:ls -l  | g ...

  8. myeclipse10.7配置resin4.0.36

    Resin-4.0.35 (built Tue, 12 Feb 2013 10:05:50 PST) Copyright(c) 1998-2012 Caucho Technology.  All ri ...

  9. js 抽奖小案例

    Luck Draw 在线演示:九宫格抽奖 对九宫格形式的抽奖页面进行了一些简单封装.以后有机会再更新其他形式的抽奖.

  10. (13)C#数组

    如果需要使用同一类型的多个对象,数组是一种数据结构,它包含同一类型的多个元素 一.一维数组 1.数组的声明方法 int [] a; 因为数组是引用类型,引用类型有个特点是:声明变量时不会马上分配一个内 ...