栏目:Java Web(<--点此查看更多)Java Web 开发相关技术及框架,JSP|Servlet|Javabean|SSH|EJB|HTML|CSS|JavaScript等
  • getResource 获取项目根目录

  • Fri Mar 15 00:28:01 CST 2013 编程者 我要收藏(...) 评论 ...
  • 下面我们通过 Class.getResource(String path) 的方式,来实现一种比较通用的获取项目根路径的绝对路径的方法。
  • 下面我们通过 Class.getResource(String path) 的方式,来实现一种比较通用的获取项目根路径的绝对路径的方法。

    /**
     * 获取项目根目录的绝对路径
     *
     * @param 项目发布之后的名称
     * @return 项目所在根目录
     */
    public String getRootPath(String appName) {
        String prefix = null;
        if (prefix == null || prefix.equals("")) {
            /*
             * 获取 .class 文件所在的跟目录
             * 如果是 Web 应用,典型的结构应该为 %WEB_APP%/WEB-INF/classes/
             * 如果是普通的 Java 应用,结构应该 %WEB_APP%/bin/
             */
            java.net.URL url = this.getClass().getResource("");
            String mSchemaPath = url.getFile();
            /*
             * 从 .class 的根目录截取需要的项目根目录的绝对路径
             */
            if (mSchemaPath != null || !mSchemaPath.equals("")) {
                prefix = mSchemaPath.substring(1, mSchemaPath
                        .lastIndexOf(appName))
                        + appName;
            }
        }
        return prefix;
    }

    在 Web 项目中我们通常用 String realPath = super.getServletContext().getRealPath("/");(Servlet doGet/doPost) 的方式来将相对路径转为绝对路径。但这种方式在某些情况下并不适用,比如在 Weblogic JBoss WebSphere 等应用服务器中通过 war 包方式发布应用的时候 String realPath = super.getServletContext().getRealPath("/");(Servlet doGet/doPost) 这种方式将不被支持,抛出 NullPointException 。因此我们或许可以通过用上面那种方式来改善自己的代码。
  • 信息来源:http://www.bianchengzhe.com (举报这篇文章)
  • 好评(...) 中评(...) 差评(...)