您的当前位置:首页正文

getRealPath

来源:个人技术集锦


request.getRealPath()

1、此方法已过时,现在可替换的实现方法有

request.getSession().getServletContext().getRealPath(\"/\")

在Servlet 里用this.getServletContext().getRealPath(\"/\");获得绝对路径。

struts里用this.getServlet().getServletContext().getRealPath(\"/\")获得绝对路径。

相关介绍:

在目前最新的Java Servlet API 2.1版本中,不赞成使用request.getRealPath()这个方法,使用ServletContext.getRealPath(java.lang.String)代替它。

在Servlet 2.4文档中对ServletContext.getRealPath(java.lang.String)是这样描述的:

返回一个字符串,包含一个给定虚拟路径的真实路径,如果转换错误,则返回null。例如,虚拟路径“/index.html”不管在服务器文件系统上具有怎样的真实路径,使用“/index.html”总可以找到它。返回的真实路径使用了相近于servlet容器(servlet container)所在计算机或操作系统的格式,包含了适当的路径分隔符。如果servlet容器无法转换则将返回null.

但是,ServletContext.getRealPath()的返回值经常返回不同的路径。

例如:有2个文件

exper1.txt,位于 C:\\Tomcat 6.0\\webapps\\ROOT,

exper2.txt,位于 C:\\Tomcat 6.0\\webapps,

在C:\\Tomcat 6.0\\webapps\\ROOT写一个.jsp文件:

ServletContext context = getServletContext();

context.getRealPath(“exper1.txt”)6.0\\webapps\\ROOT\\exper1.txt;

结果为C:\\Tomcat

context.getRealPath(“exper2.txt”)6.0\\webapps\\ROOT\\exper2.txt;

结果为C:\\Tomcat

context.getRealPath(“exper3.txt”)结果仍为C:\\Tomcat

6.0\\webapps\\ROOT\\exper3.txt 但是exper3这个文件是不存在的。这也就说明了getRealPath()这个方法是存在一定的问题的。

application.getRealPath()的用法和ServletContext.getRealPath()基本相同,当把前面例子中的context改为application,得到的结果也是相同的,它也存在着相同的问题

2、request对象位于javax.servlet.http.HttpServletRequest包中,但在java API中找不到

网上资料显示在J2EE API或Tomcat API中可找到,暂无验证,有兴趣的朋友可以去试试

3、上述方法可返回项目的完整路径,包括盘符、项目名等。

从request获取各种路径总结 request.getRealPath(\"url\"); // 虚拟目录映射为实际目录 request.getRealPat

从request获取各种路径总结

request.getRealPath(\"url\"); // 虚拟目录映射为实际目录

request.getRealPath(\"./\"); // 网页所在的目录

request.getRealPath(\"../\"); // 网页所在目录的上一层目录

request.getContextPath(); // 应用的web目录的名称

如http://localhost:7001/bookStore/

/bookStore/ => [contextPath] (request.getContextPath())

获取Web项目的全路径

String strDirPath = request.getSession().getServletContext().getRealPath(\"/\");

以工程名为TEST为例:

(1)得到包含工程名的当前页面全路径:request.getRequestURI()

结果:/TEST/test.jsp

(2)得到工程名:request.getContextPath()

结果:/TEST

(3)得到当前页面所在目录下全名称:request.getServletPath()

结果:如果页面在jsp目录下 /TEST/jsp/test.jsp

(4)得到页面所在服务器的全路径:application.getRealPath(\"页面.jsp\")

结果:D:\\resin\\webapps\\TEST\est.jsp

(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();

结果:D:\\resin\\webapps\\TEST

2.在类中取得路径:

(1)类的绝对路径:Class.class.getClass().getResource(\"/\").getPath()

结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/

(2)得到工程的路径:System.getProperty(\"user.dir\")

结果:D:\\TEST

3.在Servlet中取得路径:

(1)得到工程目录:request.getSession().getServletContext().getRealPath(\"\") 参数可具体到包名。

结果:E:\\Tomcat\\webapps\\TEST

(2)得到IE地址栏地址:request.getRequestURL()

结果:http://localhost:8080/TEST/test

(3)得到相对地址:request.getRequestURI()

结果:/TEST/test

因篇幅问题不能全部显示,请点此查看更多更全内容