JDK
Spring Boot 从2.0开始就要求 Java 8 及其以上版本
Tomcat
一般开发中是没有感觉的,因为系统默认是自带tomcat的运行的
Servlet 容器
Spring Boot 能够支持下面的嵌入 Servlet 容器版本:
名字 |
Servlet 版本 |
---|---|
Tomcat 9.0 |
4.0 |
发布到服务器上运行,就会出现各种各样的问题。
一般开始都是好好的,开始用的是tomcat8.5的版本,一切正常,运行良好。
但是到查看图片的时候,就出现问题了。
1、图片上传正常,服务器也有文件,运行也正常。
2、通过http来访问,就提示500错误
解决:
1)虚拟路径 来重定向路径。
说明:这个重定向其实很简单,也就是说你访问 http://localhost:8080/images/1.jpg ==> Users/xxx/upload/1.jpg
import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * 设置虚拟路径,访问绝对路径下资源 */ @Configuration public class UploadConfig implements WebMvcConfigurer { @Value("${file.staticAccessPath}") private String staticAccessPath; @Value("${file.uploadFolder}") private String uploadFolder; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder); } }
这个文件在启动的时候就会被加载,用来处理。
application-dev.properties
# 上传的服务器上的映射文件夹 file.accessPath=/images/ #静态资源对外暴露的访问路径 file.staticAccessPath=/images/**
#实际文件存放位置 file.uploadFolder=/Users/xxx/upload/ ==》最后的这一个 / 不用少。
通过这一步的处理,本地是可以通过/images来访问实际的文件,但是到了服务器上就报错。
下面的兄弟着重说明:
https://blog.csdn.net/qq_39025156/article/details/90055132
从错误的提示来看,是指少了方法,Servlet一想就是tomcat的问题。从提示中的UrlPath也可以看出重定向出了问题,因为没有这个方法。
2)更换tomcat版本
从tomcat8.5换成tomcat9或更高版本。
总结:不同的spring boot版本对应的jdk, tomcat版本都不太一样。