spring mvc 获取项目路径的两种方法

  • A+
所属分类:java

使用spring mvc ,有时需要获取项目路径,以便加载资源。一般有两种方法。

第一种使用Class.getResource("/").getPath()方法,这个方法得到的是class文件所在的根目录。如果是tomcat的话,一般就是WEB-INF下的classes 目录。然后可以使用  ../、./ 这些路径操作来切换目录。

例如:我预先设置rootPath为classes 目录,假设我要加载的文件TextRsp.ftlz   在classes/conf/ftl 目录下,就可以使用rootPath + "conf/ftl/TextRsp.ftl"   来找到。

private String rootPath = SysCache.class.getResource("/").getPath();
private void initRspFile()
    {
        //模板加载到内存中
        rspTemplates.put(Constants.TEXTRSP_FTL, FileUtil.readFile(rootPath + "conf/ftl/TextRsp.ftl"));
        rspTemplates.put(Constants.ARTICLEINFO_FTL, FileUtil.readFile(rootPath + "conf/ftl/ArticleInfo.ftl"));
        rspTemplates.put(Constants.RICHMEDIARSP_FTL, FileUtil.readFile(rootPath + "conf/ftl/ArticleInfosRsp.ftl"));
        rspTemplates.put(Constants.MORECUSTOMERSERVICERSP_FTL, FileUtil.readFile(rootPath + "conf/ftl/MoreCustomerServiceRsp.ftl"));
    }

第二种,使用tomcat的webAppRootKey  属性来获得项目根路径,比如在web.xml 配置的webAppRootKey 为xapp.root 。就可以在代码使用System.getProperty("xapp.root") 来获取。此方法获取到的是项目的根目录。比如webapps目录下的xapp目录 。

        <context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>xapp.root</param-value>
	</context-param>
String basePath = System.getProperty("xapp.root");

具体使用看那种方法方便。比如我配置文件放在classes/conf目录下,所以我使用第一种方法比较方便,因为路径比较短,不容易出错。如果images目录,放在项目根目录,我如果要操作此目录,可能就会选择第二种方法,因为相对路径短,不容易错。



  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: