获取Web应用程序的根目录

一般在系统中(使用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;
    }
时间: 2024-12-31 13:03:39

获取Web应用程序的根目录的相关文章

ASP.Net 类(CS)文件怎样获取Web应用程序的路径

Web应用程序,写了一个线程CS类别,这个类别将会放于Global.asax文件中执行,主要是监控程序下某一个文件是否有异动,而作出相应警示动作,如发送邮件等. 实现运行过程中,也许会有一个情况出现,程序会随着布署环境变化,而监控文件路径也会随之变化. 解决这个问题,可以使用AppDomain.CurrentDomain.BaseDirectory来获取应用程序的路径.如: private string path { get { string path = AppDomain.CurrentDo

c# 获取当前程序运行根目录

//获取绝对路径,调用如 string fileName = string.Format("~/RuleConfigFiles/Campaign_{0}.JSON", CampaignID);var localFile = Utilities.MapPath(fileName); static public string MapPath(string url) { if (HttpContext.Current != null) return HttpContext.Current.S

JAVA文件中获取路径及WEB应用程序获取路径方法

原文转自:http://www.tqcto.com/article/recommend/141.html 1. 基本概念的理解 `绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL.物理路径 例如: c:/xyz/test.txt代表了test.txt文件的绝对路径: http://www.sun.com/index.htm也代表了一个URL绝对路径: `相对路径`:相对与某个基准目录的路径,包含Web的相对路径(HTML中的相对目录). 例如: 在Servlet中,"/"

C#取得控制台应用程序的根目录方法

如有雷同,不胜荣幸,若转载,请注明 取得控制台应用程序的根目录方法1:Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径2:AppDomain.CurrentDomain.BaseDirectory 获取基目录,它由程序集冲突解决程序用来探测程序集 取得WinForm应用程序的根目录方法1:Environment.CurrentDirectory.ToString();//获取或设置当前工作目录的完全限定路径2:Application.StartupP

NET5 Web应用程序

ASP.NET5 Web应用程序结构 本文参考ASP.NET5 官方文档 Understanding ASP.NET 5 Web Apps,加入了一些个人理解,理解不对的地方希望大家能指出,互相学习. ASP.NET 5 针对WEB编程引入了几个新的基本概念,理解这些概念对快速开发WEB应用来说很重要.或许这些这些概念对你来说不是新的,但是对那些使用ASP.NET 和 Visual Studio 进行传统的WEB应用开发的程序员来说,这些概念可能是新的. 本文主要内容包括: ASP.NET 项目

了解ASP.NET5 Web应用程序结构

本文参考ASP.NET5 官方文档 Understanding ASP.NET 5 Web Apps,加入了一些个人理解,理解不对的地方希望大家能指出,互相学习. ASP.NET 5 针对WEB编程引入了几个新的基本概念,理解这些概念对快速开发WEB应用来说很重要.或许这些这些概念对你来说不是新的,但是对那些使用ASP.NET 和 Visual Studio 进行传统的WEB应用开发的程序员来说,这些概念可能是新的. 本文主要内容包括: ASP.NET 项目结构 Framework 运行时 pr

C#取得控制台应用程序的根目录方法 判断文件夹是否存在,不存在就创建

取得控制台应用程序的根目录方法1:Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径2:AppDomain.CurrentDomain.BaseDirectory 获取基目录,它由程序集冲突解决程序用来探测程序集  取得WinForm应用程序的根目录方法1:Environment.CurrentDirectory.ToString();//获取或设置当前工作目录的完全限定路径2:Application.StartupPath.ToString();//

Tomcat中部署Java Web应用程序

在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署. 一.静态部署 静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问.以下3中方式都可以部署: 1.将PetWeb目录拷贝到$CATALINA_HOME\webapps下,然后启动服务器就可以了.这种方式比较简单,访问地址如下:http://localhost:8080/PetWeb/ 2.这种方式可以不必将PetWeb目录拷贝到webapps下,直接在F:\部署.方法如下

【转】asp.net core 3.0获取web应用的根目录

目录 1.需求 2.解决方案 1.需求 asp.net core 3.0的web项目中,在controller中,想要获取wwwroot下的imgs/banners文件夹下的所有文件: 在传统的asp.net web应用中,是用Server.MapPath()即可获取到web的根目录: 但在asp.net core 3.0的web项目中,已不能这样用了: 2.解决方案 1).说明 ASP.NET Core为文件提供了两个不同的位置: 内容根 - 这是应用程序二进制文件和其他私有文件的保存位置.