你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Java专栏
SP中 request.getRealPath("/xx/yy") 方法提示已经过时的替代方法
 
我们的JSP项目在上传文件时通常都需要获取目录在服务器上的绝对路径,request.getRealPath()方法显示已经过时,但是还是有替代方法的。
 
HttpSession session = request.getSession(true);  //获取session

//              String path = request.getRealPath("/data/userfile/image");  //此方法已经过时
                String path = session.getServletContext().getRealPath("/data/userfile/image");  //文件保存路径

 

 
在servlet或者struts中还可以这样写:
 
this.getServletContext().getRealPath("/data/userfile/image");

this.getServlet().getServletContext().getRealPath("/data/userfile/image");

 

 
 
相关介绍:
    在目前最新的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”)结果为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、上述方法可返回项目的完整路径,包括盘符、项目名等。  
  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089