ServletContext获取项目路径(2019-09-11)

docBase 文档基目录
String docBase=request.getServletContext().getRealPath("/");

Spring boot 内嵌的Tomcat(其他容器的行为不清楚)

1.条件:存在src/main/webapp目录
docBase为webapp文件夹的绝对路径,例如D:\Service\src\main\webapp,开发环境可能存在这种情况;

2.条件:实现WebMvcConfigurer接口,通过addResourceHandlers方法,设置静态资源位置,如static文件夹,并新建了该文件夹(开发环境:在项目的根目录下,与src文件夹同级;打包后,与jar包同级)
docBase为static文件夹的绝对路径,例如D:\Service\static;如果同时满足1,则1优先;

3.若1,2都不满足
docBase为C盘下临时的随机目录,例如C:\Users\Administrator\AppData\Local\Temp\tomcat-docbase.3560668637129144136.9852,
springboot项目打包后,没有src/main/webapp目录,如果没有配置静态资源(可能忘记新建static文件夹),则为随机目录;

其他:

通过springboot后台服务访问静态资源:
针对情况2,jar包启动后,静态资源URL为 服务器ip:port/static文件夹下的路径,不包括static自身,例如localhost:8080/test/index.html

用户目录userDir
String userDir= System.getProperty("user.dir");
返回项目的根目录 或 jar包所在目录

类加载器路径
String defaultPath=ClassUtils.getDefaultClassLoader().getResource("").getPath();
String path=this.getClass().getClassLoader().getResource("").getPath();
返回编译后class文件所在路径

你可能感兴趣的:(ServletContext获取项目路径(2019-09-11))