如何在Web项目中的service业务层获取项目根路劲(转载)

这里我们有两个前提
1、没有使用struts2框架,没有使用servlet,无法给service层传递request对象。
2、使用了Spring框架。
那你可能问,会有这种情况吗?答案是有的,比如我们发布的是WebService接口项目,只是提供服务,就并不需要涉及什么action,servlet。
那我们要如何获取项目根路劲呢。

这里给出两个方法:
1、获取request对象,最后拿到ServletContext对象调用它的方法
首先需要做的是在web.xml配置一个监听器

<listener>  
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>  
</listener>  

在service层的方法中我们这么做

HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();  
System.out.println("***********"+request.getSession().getServletContext().getRealPath("/")); 

2、获取任意一个类class在项目中的编译目录,然后截取\WEB-INF\classes获得项目根目录
通常我们会把其定义为静态常量,供项目中调用

public static final String PATH_CLASS_ROOT = Constants.class.getClassLoader().getResource("").getPath();    
/*项目根路径*/  
public static final String ROOT_Path = PATH_CLASS_ROOT.substring(0,PATH_CLASS_ROOT.length() - "WEB-INF\\classes\\".length());

如果是web项目被调用,打印结果是
/E:/Apache-tomcat/apache-tomcat-7.0.53/wtpwebapps/demo/WEB-INF/classes/
到这里应该可以看出来其实
/E:/Apache-tomcat/apache-tomcat-7.0.53/wtpwebapps/demo/才是我们的项目根路径
所以我们调用Constants.ROOT_Path 就拿到项目根路径
第二种个应该是较为常用的,不错吧,(^__^) 嘻嘻……。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值