Java中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径,从而找到资源的!
在开发Web方面的应用时, 经常需要获取 服务器中当前WebRoot的物理路径
如果是Servlet , Action , Controller, 或则Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletContext, 然后通过ServletContext.getRealPath("/")来获取当前应用在服务器上的物理地址
如果在类中取不到ServletContext时, 有两种方式可以做到
1) 利用Java的类加载机制 调用 XXX.class.getClassLoader().getResource(""); 方法来获取到ClassPath , 然后处理获得WebRoot目录
这种方式只能是该class在WebRoot/WEB-INF/classes下才能生效, 如果该class被打包到一个jar文件中, 则该方法失效.这时就应该用下面一种方式
2) spring框架的思路, 在WEB-INF/web.xml中 , 创建一个webAppRootKey的param, 指定一个值(默认为webapp.root)作为键值, 然后通过Listener , 或者Filter , 或者Servlet 执行String webAppRootKey = getServletContext().getRealPath("/"); 并将webAppRootKey对应的webapp.root 分别作为Key , Value写到System Properties系统属性中.之后在程序中通过System.getProperty("webapp.root")来获得WebRoot的物理路径
根据第二种的思路,我们还可以再扩展一下.不过对于在部署在一台服务器中的应用来说,若还不是你所需请再往下看.
下面是一些得到classpath和当前类的绝对路径的一些方法.你可使用其中的一些方法来得到你需要的资源的绝对路径:
1.DebitNoteAction.class.getResource("")
得到的是当前类FileTest.class文件的URI目录.不包括自己!
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
atacarnet/src/com/evi/modules/atacarnet/action/
2.DebitNoteAction.class.getResource("/")
得到的是当前的classpath的绝对URI路径.
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
3.Thread.currentThread().getContextClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
4.DebitNoteAction.class.getClassLoader().getResource("") 或ClassLoader.getSystemResource("")
得到的也是当前ClassPath的绝对URI路径.
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
5.取得服务器相对路径
System.getProperty("user.dir")
例如:E:\apache-tomcat-5.5.16\apache-tomcat-5.5.16\bin
分享到:
相关推荐
《恒瑞全方位解决方案-精品创业书模板》是一个压缩包文件,包含了一份名为“恒瑞全方位解决方案-精品创业书模板.ppt”的演示文稿。这份文稿极有可能是为创业者或企业家设计的,旨在提供一套全面的策略规划和实施方案...
《局域网共享问题全方位解决》 局域网共享问题一直是困扰许多用户的难题,这篇文档旨在帮助用户系统性地解决这些问题。文档指出,这不是一份基础的共享设置教程,而是专门针对共享问题的解决指南。作者注意到,很多...
【局域网共享问题全方位解决】 局域网共享问题是一个常见的技术挑战,尤其对于那些初次接触网络设置的用户。本文档并非教你如何构建共享环境,而是专注于解决在共享过程中遇到的各种问题。许多教程将不同类型的解决...
### 局域网(网上邻居)共享问题全方位解决 #### 一、Workstation服务未启动问题 **问题表现**:当尝试访问局域网内的其他计算机时,可能会遇到一个错误提示框显示:“网络不存在或尚未启动”。这通常意味着你的...
本文主要针对局域网共享问题提供了一种全方位的解决方法,旨在帮助用户解决在共享资源时遇到的各种困难。首先,作者强调这不是一份基础教程,而是专门针对问题解决的指南,特别适合那些在共享设置上遇到困惑的用户。...
这种解决方案的核心是整合线上和线下的销售平台,包括实体店、电商平台、移动应用、社交媒体、电话销售等,以实现全方位的顾客接触。以下是全渠道零售解决方案的关键知识点: 1. **消费者为中心**:全渠道策略首先...
根据提供的文件内容,本文主要讨论的...从存储到网络层面,这一方案致力于提供一个全方位的业务连续性和数据安全保护策略。随着时间的推移,华为应该继续更新和优化这些解决方案,以应对不断变化的技术环境和市场需要。
智慧零售可视化综合解决方案是一个集成化系统,旨在通过...这个方案不仅涉及了零售业面临的挑战与技术应用,还包括了系统设计、技术集成、商业价值与竞争优势等多个方面,为零售连锁企业提供了全方位的智能化升级路径。
综上所述,联想商用IoT边缘计算解决方案是一套面向未来的信息技术趋势的全方位解决方案。它不仅仅是单一的产品销售,而是通过技术和服务的结合,帮助企业在数据时代抓住机遇,实现智能化转型。通过边缘计算的落地...
兴旺股份作为专注于乡村市场发展的公司,构建了一套全方位的营销体系,包括数据调研、招商、市场管理等多个部门,为企业提供一体化解决方案。该方案包含七大部分: 1. 定位调研解决方案:通过对乡镇终端店的实地...
为了实现高可用性,锐捷网络提供了全方位的解决方案,包括物理设备冗余、链路层冗余、IP 层冗余、传输层冗余和应用层冗余。 首先,高可用性是指数据中心的能力,以确保系统在各种情况下继续运行,包括不可控因素如...
- **分级城域MESH视频监控网**:构建了从城市级到分局、派出所、治安联防乃至社区的多层次网络,形成全方位的监控体系。 - **网络拓扑设计**:针对不同层级的具体需求,设计了详尽的网络拓扑图,如分局、派出所、...
这个主题聚焦于一种特别的设备——“一种带有全方位轮减震装置的全方位移动平台”,它结合了先进的机械设计、电子控制和减震技术,为工业、物流和其他领域的移动应用提供了高效解决方案。 全方位移动平台,顾名思义...
金蝶作为知名的ERP(企业资源规划)解决方案提供商,以其深入的行业洞察和先进的管理理念,为化工企业提供了一套全方位的行业解决方案。 首先,"速度冲击规模,效率决定生命"这一理念,强调了在化工行业中,企业的...
- **园区运营管理:** 通过建设3D驾驶舱等方式,实现对物流园区的全方位监控和管理。 #### 五、总结 智慧物流综合解决方案通过数字化技术和智能化手段,实现了物流各个环节的高效协同,不仅有助于降低物流成本、...
总体而言,GROW2.0品牌数字化增长解决方案与应用是一个全方位、多维度、多层次的综合品牌增长方案,它不仅关注于线上数据和消费者洞察,也积极推动线下数据的融合,以实现数字化转型的更深层次突破。随着品牌对方案...
该解决方案的核心是通过三网融合,即企业内部网、企业互联网和企业物联网,构建一个全方位、智能化的制造生态体系,推动制造业进入信息化3.0时代。 在这一过程中,企业不仅需要管理财务("财")、人力资源("人")...