request.getRealPath()详解===

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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(ng.String)代替它。

在Servlet 2.4文档中对ServletContext.getRealPath(ng.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”)结果为C:\Tomcat 6.0\webapps\ROOT\exper1.txt;

context.getRealPath(“exper2.txt”)结果为C:\Tomcat 6.0\webapps\ROOT\exper2.txt;

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、上述方法可返回项目的完整路径,包括盘符、项目名等。

相关文档
最新文档