获取Web应用程序的根目录

本文介绍了一种在不依赖Struts2框架的情况下获取Web应用程序根目录的方法。通过使用ProtectionDomain和CodeSource等类,该方法能够有效定位到Web应用的根路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般在系统中(使用struts框架)如果要获取web应用程序的根目录都是通过

ServletActionContext.getServletContext().getRealPath("");

 来进行获取,但servletActionContext是struts2中的过滤器绑定的ThreadLocal变量,必须要经过FilterDispatcher才能够使用  否则获取参数可能会为空。

之前在系统系统中需要在定时任务中获取系统根目录再通过上面的方式就会出现异常,所以封装一个工具方法。工具方法主要是用过ProtectionDomain,CodeSource,URL等类来获取当前class存在的路径然后通过路径找到对应的web目录。

 public static String getWebRootPath()  //Util为当前工具类名
    {
        ProtectionDomain pd = Util.class.getProtectionDomain();
        if (pd == null)
        {
            return null;
        }

        CodeSource cs = pd.getCodeSource();
        if (cs == null)
        {
            return null;
        }
        URL url = cs.getLocation();

        if (url == null)
        {
            return null;
        }

        String strUrl = null;

        if(url.getPath().endsWith("jar")){
            strUrl = url.getPath().substring(0, url.getPath().indexOf("lib"));
        }else{
            strUrl = url.getPath().substring(0, url.getPath().indexOf("classes"));
        }

        strUrl = url.getPath().substring(1, url.getPath().indexOf("WEB-INF"));

        return strUrl;
    }


转载于:https://my.oschina.net/luckyi/blog/388084

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值