JSP中 request.getRealPath("/xx/yy") 方法提示已经过时的替代方法

简介:

我们的JSP项目在上传文件时通常都需要获取目录在服务器上的绝对路径,request.getRealPath()方法显示已经过时,但是还是有替代方法的。

1
2
3
4
HttpSession session = request.getSession( true );   //获取session
 
//              String path = request.getRealPath("/data/userfile/image");  //此方法已经过时
                 String path = session.getServletContext().getRealPath( "/data/userfile/image" );   //文件保存路径


在servlet或者struts中还可以这样写:

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


以下介绍摘录至:http://blog.sina.com.cn/s/blog_6dbf810d0100romt.html

相关介绍:

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



本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1694397,如需转载请自行联系原作者

相关文章
|
Java
java实现遍历树形菜单方法——index.jsp实现
java实现遍历树形菜单方法——index.jsp实现
6 0
|
11月前
|
Java
java实现遍历树形菜单方法——index.jsp实现
java实现遍历树形菜单方法——index.jsp实现
97 0
|
Java 应用服务中间件
使用最新版IDEA(21.3.2)创建一个最小的JAVAWEB应用(JSP,Servlet运行方法)
1.IDEA内创建一个基于Tomcat的项目 首先新建一个普通的项目
228 1
使用最新版IDEA(21.3.2)创建一个最小的JAVAWEB应用(JSP,Servlet运行方法)
jsp中对应的Servlet类中_jspservice()方法对应的源代码
原文发表于CSDN:https://blog.csdn.net/weixin_44350891/article/details/123051453
jsp中对应的Servlet类中_jspservice()方法对应的源代码
|
Java 应用服务中间件 容器
JSP和Servlet的六种中文乱码处理方法
JSP和Servlet的六种中文乱码处理方法
193 0
|
Java 关系型数据库 MySQL
JSP知识点笔记-常用技术方法
jsp知识点范围:请求回应,session,异常处理,cookie,数据库等
115 0
|
存储 安全 JavaScript
js/jsp操作cookie的方法
一、cookie简介 浏览器与WEB服务器之间是使用HTTP协议进行通信的;而HTTP协议是无状态协议。也就是说,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息, 它是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。 它是服务器发送给浏览器的体积很小的纯文本信息。 定义:cookie是Web浏览器存储的少量命名
198 0

相关课程

更多