zoukankan      html  css  js  c++  java
  • 怎样在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-INFclasses获得项目根文件夹

    通常我们会把其定义为静态常量,供项目中调用

    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 就拿到项目根路径

    另外一种个应该是较为经常使用的,不错吧,(*^__^*) 嘻嘻……。




  • 相关阅读:
    java 实现大顶堆
    (转)单调栈总结
    leetcode再次总结
    (转)jvm具体gc算法介绍标记整理--标记清除算法
    (转)java 多线程 对象锁&类锁
    maven 上传 jar 到本地私服
    记录一下faster rcnn
    yolov2训练ICDAR2011数据集
    MSE,ks,mAP,weight decay等名词解释
    python爬虫爬取指定用户微博图片及内容,并进行微博分类及使用习惯分析,生成可视化图表
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5201506.html
Copyright © 2011-2022 走看看