spring-boot获取根路径问题
问题描述:
如图:在spring-boot项目中使用
req.getServletContext().getResource("/").getPath()
这种方法获取根路径时,获取到的根路径是这个,我的项目在F盘的
正在回答
同学你好,1、ResourceUtils.getURL("classpath:").getPath()是在springboot项目中获取classes目录的绝对路径,比如 G:/ooout/wwww/soso/target/classes
2、req.getServletContext() 获取到的是Servlet容器对象,getResource("/"),代表获取到当前web应用程序的根目录。返回的是代表这个资源的URL对象。getPath()获取这个对象的路径并以字符串返回。最后获取到的就是当前项目根目录下的文件夹。
所以这两个方法其实都是获取根目录下的文件夹,只是可能项目的框架不同,最后的结果不一样,
ResourceUtils.getURL("classpath:").getPath()是springboot项目中获取绝对路径的方式。
祝学习愉快~
同学你好,1、在springboot项目默认使用的是内嵌的Tomcat,所以同学如上所示获取的路径是正确的,就是内嵌下的Tomcat中的路径。
2、如果同学想在这个springboot项目中配置本地的Tomcat,可以参考如下步骤:
修改pom.xml文件,移除Tomcat插件,并添加servlet-api依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
</dependency>
修改SpringBoot启动类,修改类定义,使其继承自SpringBootServletInitializer,重写configure方法,比如
@SpringBootApplication
public class HomeApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(HomeApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(HomeApplication.class, args);
}
}
最后在IDEA中edit run configuration配置本地Tomcat即可。
如上所示,就可以将内嵌的tomcat修改配置为本地的Tomcat。修改为本地的Tomcat,再来使用这个路径获取一下,看一下是否可以获取F盘下的路径。
祝学习愉快~
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星