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依赖

1
<dependency><br>    ​<groupId>org.springframework.boot</groupId><br>    ​<artifactId>spring-boot-starter-web</artifactId><br>    ​<!-- 移除嵌入式tomcat插件 --><br>    ​<exclusions><br>        ​<exclusion><br>        ​<groupId>org.springframework.boot</groupId><br>        ​<artifactId>spring-boot-starter-tomcat</artifactId><br>        ​</exclusion><br>    ​</exclusions><br></dependency><br><dependency><br>    ​<groupId>javax.servlet</groupId><br>    ​<artifactId>javax.servlet-api</artifactId><br>    ​<version>4.0.0</version><br>​</dependency><br>

    ​修改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

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

    1
    req.getServletContext().getResource("/").getPath()<br>

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

    1
    ​String filePath = ResourceUtils.getURL("classpath:").getPath()<br>

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

    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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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