全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java Web中解决路径(绝对路径与相对路径)问题

Java Web中解决路径问题:

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

我推荐使用Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法

6. 取得项目中的绝对路径

一般用

request.getRealPath("/")

request.getRealPath("/config/")

但现在不提倡使用request.getRealPath("/")了,大家可试用ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径

要取得src的文件非常容易,因为src是默认的相对目录,比如你说要取得src下com目录的test.java文件,你只需要这样就够了

File f = new File(com/test.java);

但如果我要取得不在src目录或者WebRoot目录下的文件呢,而是要从src或者WebRoot同级的目录中取呢,比如说doc吧

我的硬方法是这样实现的:

String path = this.getServletContext().getRealPath("/");

Properties p = new Properties();

p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("//WebRoot ") + 1)) + "doc/db.properties")));

System.out.println(p.getProperty("driverName"));

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # Web中解决路径问题  # Web解决路径  # Web中路径问题解决  # Java项目中获取路径的绝对路径问题和相对路径问题  # java项目中的绝对路径和相对路径用法说明  # 浅谈java 中文件的读取File、以及相对路径的问题  # java区分绝对路径和相对路径的方法  # Java如何获取相对路径文件  # 的是  # 不过是  # 器中  # 我要  # 还可以  # 是这样  # 两种  # 推荐使用  # 一台  # 所需  # 希望能  # 并将  # 到你  # 你可  # 只需要  # 说要  # 写到  # 有两种  # 谢谢大家  # 用在 


相关文章: 如何通过服务器快速搭建网站?完整步骤解析  名字制作网站免费,所有小说网站的名字?  在线教育网站制作平台,山西立德教育官网?  Android滚轮选择时间控件使用详解  沈阳制作网站公司排名,沈阳装饰协会官方网站?  如何在IIS7中新建站点?详细步骤解析  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  建站上传速度慢?如何优化加速网站加载效率?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  如何快速完成中国万网建站详细流程?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  建站之星代理商如何保障技术支持与售后服务?  建站之星安装后界面空白如何解决?  建站VPS配置与SEO优化指南:关键词排名提升策略  建站之星展会模版如何一键下载生成?  实例解析angularjs的filter过滤器  小程序网站制作需要准备什么资料,如何制作小程序?  香港服务器部署网站为何提示未备案?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  重庆市网站制作公司,重庆招聘网站哪个好?  建站之家VIP精选网站模板与SEO优化教程整合指南  建站之星3.0如何解决常见操作问题?  如何访问已购建站主机并解决登录问题?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  兔展官网 在线制作,怎样制作微信请帖?  网页设计与网站制作内容,怎样注册网站?  如何获取上海专业网站定制建站电话?  IOS倒计时设置UIButton标题title的抖动问题  在线制作视频网站免费,都有哪些好的动漫网站?  如何通过虚拟主机快速搭建个人网站?  b2c电商网站制作流程,b2c水平综合的电商平台?  如何在景安云服务器上绑定域名并配置虚拟主机?  如何在云主机上快速搭建多站点网站?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  Python文件管理规范_工程实践说明【指导】  外贸公司网站制作,外贸网站建设一般有哪些步骤?  实现虚拟支付需哪些建站技术支撑?  如何在服务器上三步完成建站并提升流量?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  宝塔新建站点报错如何解决?  如何在阿里云完成域名注册与建站?  html制作网站的步骤有哪些,iapp如何添加网页?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  营销式网站制作方案,销售哪个网站招聘效果最好?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  建站之星如何优化SEO以实现高效排名? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。