Maven工程的web项目,项目的绝对路径不在Maven工程的target目录下,反而在tomcat服务器的路径下

本人是在学习SpringMVC文件上传时遇到的问题

String path =request.getServletContext().getRealPath("/uploads");

System.out.println(path);

代码如上述所示,但是此处的path所指的路径并不在Maven工程的target文件夹下,反而在tomcat服务器上,导致每次重启服务器,该文件夹都会被删除重新创建,难道是我idea中的配置有问题?搜了许久也没找到相关答案。

下面时idea中的配置截图:

图片说明

3个回答

这主要是你项目部署方式的问题,想要request.getServletContext().getRealPath("/uploads")路径出现在Maven工程的target文件夹下,一般是开发时
才会用到的,主要是因为可以热部署。只需要在idea中部署项目的时候选择war exploded的方式即可。
图片说明
图片说明

a627837879
a627837879 非常好,我也出现了这样的问题,666
大约一个月之前 回复

这个路径是可以修改的呢,修改到项目的工程路径下也是可以的。

wojiushiwo945you
毕小宝 回复yuxian_li: 不会的啊,如果不 clean 的话,tomcat 部署后的资源文件不会被删除的。如果这样的话,就不适合用这个方式存储文件到 server 资源目录中的。直接固定到指定路径。这类项目以 war 包形式发布的,这个指定 target 只是说最终打包目录,并不是资源目录的。
4 个月之前 回复
yuxian_li
yuxian_li 如果这样的结果没有问题的话,那么对于Maven工程来说,如果上传的路径需要设置到target文件夹下,该如何处理呢?因为如果是放在tomcat服务器上,每次重新启动项目,该文件夹必备删除。
4 个月之前 回复
wojiushiwo945you
毕小宝 回复yuxian_li: request.getServletContext() 是获取到应用的请求路径的,就是项目的发布目录,它是自动关联到 Server 的资源文件目录。
4 个月之前 回复
wojiushiwo945you
毕小宝 回复yuxian_li: 你配置的是项目的编译目标目录,String path =request.getServletContext().getRealPath("/uploads"); 这个就是获取到项目的部署路径的,不能更改,就是它在 Tomcat 中的发布目录。没有问题。
4 个月之前 回复
yuxian_li
yuxian_li 回复毕小宝: 关键是我的配置就是在target文件夹下,我也找了很久,看到别人的配置和我一样的,但是就是结果不一样
4 个月之前 回复
wojiushiwo945you
毕小宝 回复yuxian_li: 直接点那个文件夹图标就可以修改路径了呀。
4 个月之前 回复
yuxian_li
yuxian_li 怎么修改?
4 个月之前 回复
dabocaiqq
请你们大家多多姿瓷我菠菜菌 很对的说~
4 个月之前 回复

图片说明

我的输出在本地,但是我不知道你出了什么问题,你贴的那一页的配置没什么问题,以下是我的配置(主要参考网上,自己改了点),你试试
图片说明
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问