Java Web应用获取程序物理根路径的两类方法

一、不依赖Web程序参数

以下Window平台测试通过

public class Util {
/**
* 获取应用程序的物理根路径
*
*/
public static String getWebAppRootPath() {
String result = Util.class.getResource("Util.class").toString();
System.out.print(result);
int index = result.indexOf("WEB-INF");
if (index == -1) {
index = result.indexOf("bin");
}
result = result.substring(0, index);
if (result.startsWith("zip")) {     //  当class文件在war中时,返回"zip:D:/ ..."样的路径
result = result.substring(10);
} else if (result.startsWith("file")) {    //  当class文件在class文件中时,返回"file:/F:/ ..."样的路径
result = result.substring(6);
}else if(result.startsWith("jar")){        // 当class文件在jar文件中时,返回"jar:file:/F:/ ..."样的路径
result = result.substring(4);
}
if (result.endsWith("/"))  result = result.substring(0, result.length() - 1);// 不包含最后的"/"
result = result.replace("%20", " "); //Window下替换空格
return result;
}
}

二、使用Web程序参数

JSP

<%= application.getRealPath("/") %>

Servlet:

this.getFilterConfig().getServletContext().getRealPath("/");//invoke at servlet filter

Struts2:

org.apache.struts2.ServletActionContext.getServletContext().getRealPath("/");


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。