spring-boot获取根路径问题

spring-boot获取根路径问题

问题描述:

http://img1.sycdn.imooc.com//climg/60e511330980d25615160418.jpg

如图:在spring-boot项目中使用

req.getServletContext().getResource("/").getPath()

这种方法获取根路径时,获取到的根路径是这个,我的项目在F盘的

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,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项目中获取绝对路径的方式。

祝学习愉快~

好帮手慕小班 2021-07-07 16:54:54

同学你好,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盘下的路径。

祝学习愉快~

  • 提问者 WittChen #1

    老师您讲的好像不太对哦,我是想获取根路径下的一个文件,因此才有一问,如图:

    http://img1.sycdn.imooc.com//climg/60e58ad7092c88a603680282.jpg

    这个路径不就应该是根路径吗,但是我在使用入戏方法的时候得出了,不知道什么的路径

    req.getServletContext().getResource("/").getPath()

    通过网上寻找,获取这个路径,在spring-boot中应该使用

    ​String filePath = ResourceUtils.getURL("classpath:").getPath()

    老师能解释下这两个方法究竟获取的都是什么路径吗

    2021-07-07 19:09:31
好帮手慕小班 2021-07-07 15:07:59

同学你好,在springboot项目中,默认使用的是内嵌的tomcat,而不是同学本地安装的tomcat,所以路径会不一样。

祝学习愉快~

  • 提问者 WittChen #1

    老师你回答不要回答一半啊,你只讲原因,不讲结果,那怎么做才能获取正确的呢= =

    2021-07-07 15:16:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师