Tomcat 项目的绝对路径问题

本文探讨了在Tomcat环境下如何正确配置文件路径,特别是如何处理相对路径的问题,确保应用程序可移植性和正确读取文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tomcat环境下,在一个Service层中读取文件使用"/projectName/userfiles/image/*.jpg“的相对路径,读取的不是当前应用程序的当前路径,而是直接调到/home/tomcat-6.0.18/bin下,不解,虽然写绝对路径不影响程序现在的运行,但是程序却没有办法移植了!!

查了一下原因

war包只是部署到服务器的一个子过程,整个Tomcat的WEB应用只有一个入口那就是main的入口,那么启动Tomcat的main类的路径就是所谓的当前可执行路径也就是/home/tomcat-6.0.18/bin下,如果想把配置放到war下,那么就要考虑WAR/WEB-INF/classes/和WAR/WEB-INF/lib,Tomcat针对你的war应用启动了对应的ClassLoad,可以合理的把上述路径作为classpath路径,当然也包括Tomcat_home/common/lib和Tomcat_home/common/classes,所以你把配置文件放到WAR/WEB-INF/classes/下,或者打到一个jar包的根下放到WAR/WEB-INF/lib中,使用"/projectName/userfiles/image/*.jpg"的方式,就会直接以流的形式读出!这个比较适合读取配置文件的情况!

如果读取的文件是不固定的可以在action处通过
ServletContext sc = getServletContext();
String path=sc.getRealPath("相对路径");
File file=new File(path);//获取的是正确的绝对路径了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值