javaWeb中 request.getRealPath("") 这个方法为什么不推荐使用了 ?

可以使用 request.getSession().getServletContext().getRealPath() 得到工程文件的实际物理路径,也就是绝对地址。
我想问:request.getRealPath("")被废弃的原因是什么?
用面向对象的思路,怎么理解工程的物理路径是封装在Session里面呢?

request.getRealPath("") 就是取得你当前运行文件在服务器上的绝对路径.

request.getRealPath("")灵活性太差,只能得到当前文件绝对路径,不能在当前文件下获得其他文件的绝对路径

不是工程的物理路径封装在Session里 是工程的路径被封装在了ServletContext中
只是我们可以通过session对象获得这个ServletContext

获得ServletContext的方法:
1.FilterConfig的getServletContext();

2.ServletConfig的getServletContext();

3.ServletContextEvent的getServletContext()

4.HttpSession的getServletContext();
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-20
在目前最新的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.

request对象位于javax.servlet.http.HttpServletRequest包中,但在java
API中找不到
网上资料显示在J2EE API或Tomcat
API中可找到。

getRealPath("\/")函数中的"\/"表示什么意思?
1、表示获得服务器的绝对路径的意思。2、getRealPath问题:String filename=request.getRealPath(filename)。信息:warning: [deprecation] getRealPath(java.lang.String) in javax.servlet.ServletRequest has been deprecated。解决:这个getRealPath方法已经不建议使用了,参看request.getRealPath的java doc,Depre...

JavaWeb项目如何获取文件路径?
通过`new File(request.getServletContext().getRealPath("\/"))`创建文件对象,调用`getAbsolutePath()`方法获取文件的绝对路径。二、使用JSP获取文件路径 1、获取文件的绝对路径 例如在`index.jsp`页面中,通过`request.getServletContext().getRealPath("file_name")`获取文件的绝对路径。2、获取访问的...

java里绝对路径和相对路径的区别
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()3.2 Servlet中获得当前应用的相对路径和绝对路径根目录所对应的绝对路径:request.getServletPath();文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI()) 当前web应用的绝对路径 ...

request.getRealPath("\/")是服务器绝对路径,到底是什么路径~_百度知 ...
factory.setRepository(new File(request.getRealPath("\/")));是服务器绝对路径,到底是什么路径~我上传完文件后就在找不到文件在哪?我就是写完代码,然后启动tomcat运行的,上传成功!然后不知道文件上传到什么地方了?照代码的意思就是在服务器绝对路径下... 展开 匿名 | 浏览3507 次 |举报 若以下回答无法解决问题...

request.getContextPath()到底获取的谁的绝对路径?什么叫绝对路径?在...
要想获得项目实际在磁盘中存贮路径可以使用request.getSession().getServletContext().getRealPath("\/");本地资源管理器而言:绝对路径:是从盘符开始的路径,磁盘上真正的路径的,例如:E:\\帮助文档\\Jquery\\jqAPI;相对路径:是从当前路径开始的路径,如当前路径为E:\\帮助文档,则Jquery\\jqAPI为相对路径;就web站点而言:...

java用getServletContext().getRealPath("\/")获取项目路径的问题_百 ...
request.getServerName() 得到服务器名称如:127.0.0.1 request.getServerPort() 得到端口号如8080 request.getContextPath() 得到当前上下文路径,也就是安装后的文件夹位置。上面 连起来拼成完整的url request.getRealPath()得到当前真实路径,不管是比如D:\\xx\\xx\\xx\\ 用EL在页面里直接就是项目路径...

java如何获得linux下web路径
1),在servlet可以用一下方法取得: request.getRealPath(“\/”) 例如:filepach = request.getRealPath(“\/”) ”\/\/upload\/\/”; 2),不从jsp,或servlet中获取,只从普通java类中获取: String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); SAXReader() saxReader = new SAX...

request.getContextPath和request.getRealPath的区别
结果:D:\\resin\\webapps\\TEST 关于request.getRealPath()1、此方法已过时,现在可替换的实现方法有 request.getSession().getServletContext().getRealPath("\/")在Servlet 里用this.getServletContext().getRealPath("\/");获得绝对路径。struts里用this.getServlet().getServletContext().getRealPath("\/"...

javaweb不能正常向文件中写入数据
这句话不知道你认为this指的是什么?一般的写法都是从request里取ServletContext而不是从Servlet里面取,感觉应该这样写才对:ServletContext sc = req.getServletContext();(2)sc.getRealPath("result.txt"),首先要保证有这个文件,其次,如果你将其放在WEB-INF下面要写成sc.getRealPath("\\WEB-INF\\...

java获取项目resource路径(javaweb获取项目路径)
3.在Servlet中取得路径:(1)得到工程目录:request.getSession().getServletContext().getRealPath("")?参数可具体到包名。结果:E:TomcatwebappsTEST(2)得到IE地址栏地址:request.getRequestURL()结果:(3)得到相对地址:request.getRequestURI()结果:\/TEST\/test java中类加载路径和项目根路径获取有几...

相似回答