java web项目中获取项目根路径(tomcat可运行的web源码的路径)的方式:
分为两种情况:
情况一:
在eclipse、inde等开发工具中获取(注:如下代码所在的类必须是控制层所在包下的类):
String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath().split("/target/")[0]+"/target/xiyinli-web-1.0-SNAPSHOT/";
其中xiyinli-web-1.0-SNAPSHOT根据自己maven的web项目中pom.xml的配置进行相应修改,我这里的如下:
com.xiyinli
xiyinli
pom
1.0-SNAPSHOT
情况二:
项目部署以后,在tomcat中运行时获取:
方式一:
接口中传入:HttpServletRequest
String basePath = request.getSession().getServletContext().getRealPath("/");
定时器中获取request:
RequestAttributes ra =RequestContextHolder.getRequestAttributes();
ServletRequestAttributes sra=(ServletRequestAttributes)ra;
HttpServletRequest request= sra.getRequest();
方式二(一般无法拿到HttpServletRequest对象时使用,如spring定时器等):
WebApplicationContext webApplicationContext =ContextLoader.getCurrentWebApplicationContext();
ServletContext servletContext=webApplicationContext.getServletContext();
String basePath= servletContext.getRealPath("/");