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小时内与您取得联系。