Springboot内置tomcat配置虚拟路径过程解析
作者:Erneste 时间:2021-12-21 06:06:03
在Springboot中默认的静态资源路径有:classpath:/METAINF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,从这里可以看出这里的静态资源路径都是在classpath中(也就是在项目路径下指定的这几个文件夹)
试想这样一种情况:一个网站有文件上传文件的功能,如果被上传的文件放在上述的那些文件夹中会有怎样的后果?
网站数据与程序代码不能有效分离;
当项目被打包成一个.jar文件部署时,再将上传的文件放到这个.jar文件中是有多么低的效率;
网站数据的备份将会很痛苦。
此时可能最佳的解决办法是将静态资源路径设置到磁盘的基本个目录。在Springboot中可以直接在配置文件中覆盖默认的静态资源路径的配置信息:application.properties配置文件如下:
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:这里写自己的上传文件路径(注意要以/结尾)
spring.mvc.static-path-pattern=/**表示所有的访问都经过静态资源路径;
spring.resources.static-locations在这里配置静态资源路径,前面说了这里的配置是覆盖默认配置,所以需要将默认的也加上否则static、public等这些路径将不能被当作静态资源路径,在这个最末尾的file:${web.upload-path}之所有要加file:是因为指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量。
由于前面已经在静态资源路径中上传了一个名为1.jpg的图片,也使用server.port=1122设置了端口号为1122,所以可以通过浏览器打开:http://localhost:1122/1.jpg访问到刚刚上传的图片。但是要注意,如果你在springboot的配置文件中加了属性server.context-path,即项目名,那么访问的时候一定要加上这个配置的属性值,不然404.
来源:https://www.cnblogs.com/DDgougou/p/10821872.html
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
JVM之方法返回地址详解
![](https://img.aspxhome.com/file/2023/0/88590_0s.png)
Java聊天室之实现运行服务器与等待客户端连接
![](https://img.aspxhome.com/file/2023/4/69114_0s.png)
Java 通过AQS实现数据组织
![](https://img.aspxhome.com/file/2023/2/63072_0s.png)
C#中动态显示当前系统时间的实例方法
Java超详细透彻讲解static
![](https://img.aspxhome.com/file/2023/4/66034_0s.png)
MyBatis中map的应用与模糊查询实现代码
Android如何使用RecyclerView打造首页轮播图
![](https://img.aspxhome.com/file/2023/7/91037_0s.gif)
java面向对象之人机猜拳小游戏
![](https://img.aspxhome.com/file/2023/9/67189_0s.png)
java生成指定范围随机数的多种代码
![](https://img.aspxhome.com/file/2023/3/60383_0s.png)
十分钟理解Java中的动态代理
![](https://img.aspxhome.com/file/2023/5/60265_0s.jpg)
浅谈java的接口和C++虚类的相同和不同之处
SpringBoot 如何优雅的实现跨服务器上传文件的示例
![](https://img.aspxhome.com/file/2023/9/83039_0s.png)
简单记事本java源码实例
![](https://img.aspxhome.com/file/2023/4/59744_0s.jpg)
新手初学Java集合框架
浅谈Java中Spring Boot的优势
![](https://img.aspxhome.com/file/2023/5/83075_0s.png)
MyBatis-Plus拦截器实现数据权限控制的示例
Android 处理OnItemClickListener时关于焦点颜色的设置问题
![](https://img.aspxhome.com/file/2023/0/94980_0s.png)
Spring-boot的debug调试代码实例
从Hello World开始理解GraphQL背后处理及执行过程
![](https://img.aspxhome.com/file/2023/0/70510_0s.png)
SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2
![](https://img.aspxhome.com/file/2023/6/68736_0s.png)