servlet中如何到得项目的绝对路径
亲,你好,很高兴帮你解答这个问题,打字需要时间,请稍后。servlet中如何到得项目的绝对路径【摘要】servlet中如何到得项目的绝对路径【提问】亲,你好,很高兴帮你解答这个问题,打字需要时间,请稍后。servlet中如何到得项目的绝对路径【回答】一.通过ServletContext的getRealPath()方法【回答】就这一种?【提问】【回答】二.通过类加载器获取绝对路径【回答】【回答】
String filePath = request.getSession().getServletContext().getRealPath("/");
request.getSession().getServletContext() 获取的是Servlet容器对象,相当于tomcat容器了。getRealPath("/") 获取实际路径,“/”指代项目根目录,所以代码返回的是项目在容器中的实际发布运行的根路径如:I:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\UMPWeb_20131230\
javaWeb中 request.getRealPath("") 这个方法为什么不推荐使用了 ?
request.getRealPath("") 就是取得你当前运行文件在服务器上的绝对路径.
request.getRealPath("")灵活性太差,只能得到当前文件绝对路径,不能在当前文件下获得其他文件的绝对路径
不是工程的物理路径封装在Session里 是工程的路径被封装在了ServletContext中
只是我们可以通过session对象获得这个ServletContext
获得ServletContext的方法:
1.FilterConfig的getServletContext();
2.ServletConfig的getServletContext();
3.ServletContextEvent的getServletContext()
4.HttpSession的getServletContext();
Servlet:为什么获取的是这个路径getServletContext().getResource("/")
是JNDI里面的路径。
想取磁盘路径,getClass().getResource("/")
Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
ServletActionContext.getServletContext().getRealPath()方法调用报错
我以前也用这个方法获取服务器端的路径运行时也报错···因为我用的公司产品框架···我感觉这个是单独servlet的时候可以用···
你是不是要获取服务器端的路径,我给你提供下我写的方法你可以参考下:
/**
* 获取服务器端的webapps路径
* @return
*/
public String findServerPath(){
String classPath = this.getClass().getClassLoader().getResource("/").getPath();
try {
classPath =URLDecoder.decode(classPath, "gb2312");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String[] strPath = classPath.split("/");
String path = "";
for(int i = 0;i < strPath.length ; i++){
if(i > 0 && i <= 3){
path = path + strPath[i]+"/";
}
}
return path;
}
String path = ServletActionContext.getServletContext().getRealPath(baseDir);//获取baseDir的物理路径
//得到绝对路径
String path=this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
//用传统代码读,通常用在下载(可以得到资源名称)
String filename=path.substring(path.lastIndexOf("\\")+1);
System.out.println("资源名称:"+filename);
java用getServletContext().getRealPath("/")获取项目路径的问题
这个得到的是相对路径,不一定是固定的。也就是得到你web项目布署的路径。 request.getScheme()得到协议如:http://request.getServerName() 得到服务器名称如:127.0.0.1request.getServerPort() 得到端口号如8080request.getContextPath() 得到当前上下文路径,也就是安装后的文件夹位置。上面 连起来拼成完整的urlrequest.getRealPath()得到当前真实路径,不管是比如D:\xx\xx\xx\用EL在页面里直接就是项目路径了 ${pageContext.request.contextPath}