java getrealpath_关于getRealPath
1.关于request.getRealPath的出错
问题:
String filename = request.getRealPath(filename) //出了错-------------------
错误信息:
The method getRealPath(String) from the type ServletRequest is deprecated
解决:资料来源:http://bbs.chinaunix.net/viewthread.php?tid=383861参看request.getRealPath的java doc:
Deprecated. As of Version 2.1 of the Java Servlet API, use ServletContext.getRealPath(java.lang.String) instead.
而在servlet中使用getServletContext.getRealPath()这个方法收到war
和non-war的影响,以及不同app
server实现的影响,运气好的话,你常常会得到null,嘿嘿,比如你在weblogic上部署war文件,又调用这个方法..
推荐ServletContext.getResourceAsStream
参考资料:http://bbs.chinaunix.net/viewthread.php?tid=383861
2.关于serveletContext.getRealPath返回NULL和不同的app server返回不同的结果
resoure url:
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID=12968&start=0&tstart=0问题:我的应用有几个配置文本配置文件(是一些报表的模板),我放在WEB-INF下面的config目录下,我有程序
中是这样得到这个config的实际路径的
先用 serveletContext.getRealPath得到根路径,tomcat中比如是
c:\tomcat\webapp\test
然后我加上 "/WEB-INF/config/aa.config",这样得到文件的path然后进行读入,
应用在tomcat上跑是ok的,后来将war放到weblogic上,出错,原因是:
在weblogic上用getRealPath得到的是像
myserver\stage\_appsdir_test_war\test.war!\WEB-INF\config....
这样的路径,于是一直报FileNotFoundException
解决:
serveletContext.getRealPath
这个方法在不同的服务器上所获得的实现是不一样的
这种情况我也同样遇到过
建议是通过classloader来获得你配置的资源文件
context.getRealPath("/")可能返回了null,你可以输入来看看,
对一个打包的应用来说,是没有RealPath的概念的,调用getRealPath只会简单地返回null。其实,也很
好理解,一个文件被打包入了.war文件,就不存在目录结构了(虽然包中仍然存在目录结构,但这不等同
于文件系统中的目录结构)。所以,对war包中的资源是无法得到RealPath的。这样也就无从通过文件IO
进行读取了。
那么,如何读取war包中的资源呢?答案是使用ServletContext.getResourceAsStream
("/WEB-INF/config/aa.config")方法。
原则:基本上就是尽量使用j2ee规范中的各层次classloader来获取资源,而不是试图去找文件的绝对路
径
方法:调用this.getClass().getClassLoader().getResource("/").getPath(); 获取到classes目录的全
路径
使用:在得到classes目录的全路径后再根据字符串的截取与拼装达到你的要求即可。
楼上说的对,WebLogic对WEB-INF目录下的文件是有访问控制的,最好不要放在这个目录下。
最好不要放在WEB-INF目录下。。
java getrealpath_关于getRealPath相关推荐
- java getrealpath_从request获取各种路径总结 request.getRealPath(url)
equest.getRealPath() 这个方法已经不推荐使用了,代替方法是: request.getSession().getServletContext().getRealPath() 从Req ...
- java getrealpath_Java servletcontext.getRealPath(“ /”)是什么意思,什么时候应该使用它...
小编典典 介绍 该ServletContext#getRealPath()被intented到Web内容的路径(在服务器的磁盘文件系统上展开的WAR文件夹结构的路径)转换为绝对磁盘文件系统路径. 该& ...
- java web getrealpath,[学习笔记]java web ServletContext.getRealPath(String str)方法的使用
ServletContext.getRealPath(String str)方法的使用 --------------------------------------------------转载---- ...
- java getrealpath_JavaEE路径陷阱之getRealPath
绝对不要使用ServletContext的getRealPath方法获取Web应用的路径!应该使用ServletContext的getResource()方法,直接使用相对于Web应用根目录的相对路径 ...
- JavaEE路径陷阱之getRealPath
转自:http://blog.csdn.net/shendl/article/details/1427637 JavaEE路径陷阱之getRealPath 本文是<Java路径问题最终解决方 ...
- ServletConfig对象和ServletContext对象
ServletConfig对象是servlet配置对象,(web.xml中的)servlet信息封装在ServletConfig对象中,因此在一个web应用可存在多个ServletConfig.Ser ...
- Spring基础知识及入门
---恢复内容开始--- 1 spring框架概述 1.1 什么是spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson ...
- Servlet详细教程
如需更多java视频教程资源.面试资源.Java项目资源,请关注公众号:最高权限比特流,回复"java"获取! Servlet简介 servlet是Server Applet的简称 ...
- java getrealpath_JSP中 request.getRealPath(/xx/yy) 方法提示已经过时的替代方法
我们的JSP项目在上传文件时通常都需要获取目录在服务器上的绝对路径,request.getRealPath()方法显示已经过时,但是还是有替代方法的.HttpSession session = req ...
最新文章
- Android开发--RadioButton和CheckBox控件的使用
- 【CyberSecurityLearning 17】三层交换技术及实验演示、内部网络规划、HSRP
- SELinux 引起的 Docker 启动失败
- 08 事务到底是隔离的还是不隔离的?(转)
- 程序员的算法课(17)-常用的图算法:深度优先(DFS)
- go 基准测试 找不到函数_初学TDD:测试也能推动开发啦!
- Android 匿名共享内存驱动源码分析
- 5.css企业开发经验,习惯盒模型,层模型
- BT601和BT709的区别最简洁的描述
- 电脑XP系统最大支持多大内存?
- linux mlocate.db文件文件过大
- 14x1.5cm竖向标签有点难,VFP调用BarTender来打印
- SpringMVC简要概述
- 对比学习(Contrastive Learning)中的损失函数
- 如何快速备份linux文件夹?【高效】
- 标准C语言基础知识1
- 单身社会如何生活-日本纪录片ガイアの夜明け系列
- # Python Classes and Inheritance_2
- Cris 的 Scala 笔记(五):流程控制
- TROPOMI(哨兵5P)数据介绍及下载方法
热门文章
- 计算机网络用语mua,“老公老公mua”是什么梗
- 跨模态检索论文阅读:Context-Aware Attention Network for Image-Text Retrieval
- 买域名,怎么做才能质量好又便宜?
- 校验身份证号码格式是否正确
- 计算机毕业设计选题参考【系统、论文】
- unity代码更换ui图片_Unity UI图片的一种优化方式
- XRecyclerView 移除的踩坑之路(XRecyclerView 的bug?)
- 视频教程-windows批处理教程-其他
- 浅谈dom操作removechild()
- 什么是 SUSE Studio?