java获得项目绝对路径

在jsp和class文件中调用的相对路径不同。

在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。

1.jsp中取得路径:
以工程名为TEST为例:
(1)得到包含工程名的当前页面全路径:request.getRequestURI()
结果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
结果:/TEST
(3)得到当前页面所在目录下全名称:request.getServletPath()
结果:如果页面在jsp目录下 /TEST/jsp/test.jsp
(4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp")
结果:D:\resin\webapps\TEST\test.jsp
(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
结果:D:\resin\webapps\TEST

2.在类中取得路径:
(1)类的绝对路径:Class.class.getClass().getResource("/").getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路径:System.getProperty("user.dir")
结果:D:\TEST

3.在Servlet中取得路径:
(1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。
结果:E:\Tomcat\webapps\TEST
(2)得到IE地址栏地址:request.getRequestURL()
结果:http://localhost:8080/TEST/test
(3)得到相对地址:request.getRequestURI()
结果:/TEST/test

另,Class类还有一个getResourceAsStream方法,记得以前有个项目要读取在同一个包内的一个xml,就用的这个。

1.如何获得当前文件路径

常用:
(1).Test.class.getResource("")
得到的是当前类FileTest.class文件的URI目录。不包括自己!
(2).Test.class.getResource("/")
得到的是当前的classpath的绝对URI。
(3).Thread.currentThread().getContextClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI。
(4).Test.class.getClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI。
(5).ClassLoader.getSystemResource("")
得到的也是当前ClassPath的绝对URI。
尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径,后面可以看出得出结果五花八门。
(6) new File("").getAbsolutePath()也可用。

注:若这些路径中出现空格,并且空格被%20代替,则可以使用path = java.net.URLDecoder.decode(path,"utf-8") 进行转化;
       
2.Web服务器
(1).Tomcat
在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
(2).Resin
不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成Servlet
的路径为根.比如用新建文件法测试File f = new File("a.htm");
这个a.htm在resin的安装目录下 
(3).如何读文件
使用ServletContext.getResourceAsStream()就可以
(4).获得文件真实路径

String   file_real_path=ServletContext.getRealPath("mypath/filename");  
不建议使用request.getRealPath("/"); 

原帖地址:http://blog.csdn.net/luo_yifan/article/details/7568466

 

 

Java中getResourceAsStream的用法

首先,Java中的getResourceAsStream有以下几种: 
1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。

2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。

3. ServletContext. getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,

当然这和具体的容器实现有关。

4. Jsp下的application内置对象就是上面的ServletContext的一种实现。

转载于:https://www.cnblogs.com/zhaock/archive/2013/01/17/8353237.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全球第二家 亚马逊“喜提”万亿美金市值 AI或是最大功臣

亚马逊创始人杰夫贝佐斯(Jeff Bezos)来源:网易智能摘要:9月5日消息,美国当地时间周二,全球电商巨头亚马逊(Amazon)股价一度触及史上最高点,促使亚马逊市值短暂达到1万亿美元。不过,在…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨重新格式化部门表【难度中等】

活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人会走得很…

Android之webView入门

WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。 webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要处理解析,渲染网页等浏览器做的事情 setWebChromeClient:辅助WebView处…

APL开发日志--2013-01-17

以后作者在博客上在专栏记录 APL每天开发日志, 以记录APL最新进展. 2013-01-17 APL开发日志: -------------------------------------------------------------------------------------------------------- 1. 增加API: getAplPublicPath() ; // 获得APL公共路径 setAplPubli…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 15丨查询活跃业务【难度中等】

活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人会走得很…

苹果/三星/华为纷纷布局人工智能 将AI作为公司发展新动力

来源:手机报在线摘要: 目前,以苹果、三星和华为为代表的手机厂商除了继续探索人脸识别、屏下指纹和柔性显示屏等技术外,也将目标瞄向了人工智能,纷纷将“AI拍照”、“AI芯片”等作为营销热门话题,并通过大力…

Android之Activity框架

在安卓应用中,经常需要Activity中经常需要有大量相似的Activity类,这些类往往有相似的结构与功能,因此产生了大量重复代码,为此,以下提供一种方法有效的降低了代码冗余。 定义Activity工具类 * 应用程序Activity…

POJ-1260 Pearls DP

题目链接:http://poj.org/problem?id1260 基本DP,只要证明最优解中不会有交叉替换,得出转移方程:f[i]min{f[j](a[j1]..a[i]10)*p[i]}。由(ai10)*bi(aj10)*bj(aiaj10)*bj > (ai10)*biai*bj 替换> t*biai*bj 可证。 1 …

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 15丨用户购买平台【难度困难】

活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人会走得很…

量子通信产业化初试,中国筹建千亿级国家实验室

来源:第一财经摘要:一个涉及多地的量子信息科学国家实验室(下称“国家实验室”)正在筹建,长期投资将达千亿元。第一财经从2018年国际量子密码会议上了解到,中国正在筹建的国家实验室涉及合肥、上海和北京等…

Android之自定义控件入门

本文主要讲述了实现安卓button点击变色与利用ViewPager实现图片自动轮播效果 我伞可以看到在很多应用中&#xff0c;安卓按钮按下时与正常时状态是不同的&#xff0c;这种效果也很容易达到。 第一步&#xff1a;创建XML文件定义不同事件的不同效果 <?xml version"1…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 16丨报告的记录 II【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

iOSUIImage变为NSData并进行压缩

//sdk中提供了方法可以直接调用 UIImage *img [UIImage imageNamed:"some.png"]; NSData *dataObj UIImageJPEGRepresentation(img, 1.0); //下面是sdk中UIImage.h头文件中的内容 UIKIT_EXTERN NSData *UIImagePNGRepresentation(UIImage *image); // return im…

理性解读中国科技实力:不震惊式吹捧,也不全盘抹杀

来源&#xff1a;风云之声&#xff08;ID:fyvoice&#xff09;关于中国科技成果&#xff0c;大家一直都在讨论&#xff0c;网上也有很多评论文章。有的&#xff0c;把中国科技实力吹上天&#xff1b;有的&#xff0c;则干脆贬入地。中国在很多领域确实做得不错&#xff0c;与此…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 16丨市场分析 II【难度困难】​

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

android之常用知识点(一)

本文主要包括安卓一些常用的知识点 android常用的四种响应按钮点击事件的方法android动态刷新界面android常用的listView用法android常用的handler的用法 android常用的四种响应按钮点击事件的方法有 1.内部类 2.匿名内部类 3.布局文件夹定义Onclick属性,并在activity中声…

Unity(四):使用场景Ⅰ:建立类型映射

在之前的一篇文章“Unity(三)&#xff1a;快速入门”中&#xff0c;给出了一个简单的示例&#xff0c;让我们对Unity有一个感性的认识。但是&#xff0c;Unity到底是做什么用的呢&#xff1f;一个简单示例并不能解答这个问题。 总的来看&#xff0c;Unity的使用场景主要有以下几…

科技创新2030---“新一代人工智能”重大项目2018年度项目申报指南征稿

来源&#xff1a;财政资金申请摘要&#xff1a; “新一代人工智能”重大项目的凝练布局和任务部署已经战略咨询与综合评审特邀委员会咨询评议&#xff0c;并报国务院批准实施。根据《国务院关于改进加强中央财政科研项目和资金管理的若干意见》&#xff08;国发〔2014〕11号&…

一旦上云,欲罢不能,带大家薅一薅“云羊毛”

一旦上云&#xff0c;欲罢不能。相对于传统服务器&#xff0c;云服务器因为不需要去拉网线、搭机房、交电费等等问题&#xff0c;云服务器提供商往往会提供一整套完整的解决方案&#xff0c;帮助企业和个人用户&#xff0c;快速实现业务部署。 近年来&#xff0c;各大厂也在积…

Android之自定义控件深入

本文主要讲述两个知识点:popwindow的使用和通过继承View实现一个自定义控件&#xff0c;实现点击&#xff0c;手动按钮的效果. popwindow的使用 //定义 popupWindowpopWin new PopupWindow(MainActivity.this);popWin.setWidth(input.getWidth()); //设置宽度popWin.setHeig…