war包部署时获取绝对路径问题

当项目以war包的形式部署时,request.getServletContext().getRealPath获取不到路径 返回null,

原因如下(来自网上):

这个方法受到war 和non-war的影响,以及不同app server实现的影响,返回的结果往往不一样,在weblogic中会返回null

项目做完之后一直是直接给本地目录拷贝到tomcat的webapps下面运行的,所以没有用到war包测试的时候没测出来这个问题,后来以war包的形式放到沙箱环境就有问题了,原因是war包的项目其实没有目录结构这么一说了,还有就是不同的server实现方式也是不一样的,比如tomcat和weblogic的实现方式就不一样,所有有时会出现调用这个接口返回null的情况。

解决办法:

如果非得需要绝对路径,解决办法是借助classloader的getResource(xxx)方法,

如:

this.getClass().getClassLoader().getResource("../../test.txt“).getPath()就是获取web根目录下test.txt文件的绝对路径,因为web项目。因为getResource()这个方法基本路径是${webRoot}/WEB-INF/classes目录,所以要想取得根下的test.txt就必须附加上路径的跳转。

下面是这个方法的API:


-------------下班后填补内容-----------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值