jsp获取真实或虚拟文件绝对路径

yzmm
835 阅读
更新:推荐使用 javaweb 获取请求文件绝对路径问题-getServletPath();

google和baidu能找到的就没有一个写法是正确的,当遇到webapps目录或者自定义context的没一个能获取比较准确的方法。

code:

	public String getRequestFileRealPath(HttpServletRequest request){
		String webRoot = (request.getSession().getServletContext().getRealPath("/").replaceAll("\\\\", "/")+"/").replaceAll("/+", "/"),
			   context = request.getContextPath(), 
			   uri = request.getRequestURI().replaceAll("/+", "/"),
			   filePath = (webRoot+uri).replaceAll("/+", "/");
		if(!"".equals(context)&&webRoot.endsWith(context+"/")){
			return webRoot.substring(0,webRoot.indexOf(context))+uri;
		}else{
			if(uri.split("/").length>1){
				String[] c = uri.split("/");
				if(!new File(webRoot+c[1]).exists()){
					return (webRoot+(uri.replaceFirst(c[1], ""))).replaceAll("/+", "/");
				}
			}
		}
		return filePath;
	}

评论 (0)

发表评论