一、不依赖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("/");
如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。

