java怎么获取tomcat部署java项目服务目录

java web项目中路径问题的解决方案
- 我的博客 - ITeye技术网站
博客分类:
在javaweb项目中添加配置文件,满足连接数据库配置参数以及其他自定义参数存放,可自 己写一个配置文件**.properties,把项目所需的自定义配置信息以名值对的形式写入文件。在项目工程目录下的WebRoot\WEB-INF \classes目录下新建一个conf文件夹专门存放配置文件,然后把**.properties配置文件放到conf中,部署时IDE会自动将其复制 到相应路径。
java web项目未开启服务(有没有部署到tomcat中一样)使用this.getClass().getResource("/")得到Url对象,打印如下:
file:/D:/myEclipseWorkspace/你的项目工程名/WebRoot/WEB-INF/classes/此路径为java web项目源路径。部署到tomcat中的java web项目开启服务后使用this.getClass().getResource("/")得到Url对象,打印如下:
file:/D:/program/apache-tomcat-6.0.14/webapps/你的项目工程名/WEB-INF/classes/然后调用toString().substring(6)获得绝对路径的前半部分,加上相对路径,如
conf/jdbc.properties拼接成配置文件的绝对路径:(这个路径最前面的“/“本人也不清楚是什么意思,但是测试发现有没有那个”/“都能成功)
/F:/D:/program/apache-tomcat-6.0.14/webapps/你的项目工程名/WEB-INF/classes/conf/send.properties
java application项目使用this.getClass().getResource("/")得到Url对象,打印如下:
file:/D:/myEclipseWorkspace/你的项目工程名/bin/此路径为java
application项目的class文件的根路径。注意:未开启tomcat
web服务时打印的不是上面的路径,是你的项目源文件的classes路径。上面的是本人最近在学习javaWeb时候遇到路径问题的解决方法,以下的是网上搜集到的资料共享一下,未测试  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  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"));
-------------------------------另:Request中getContextPath、getServletPath、getRequestURI、getRequestURL、getRealPath的区别  假定你的web
application 名称为news,你在浏览器中输入请求路径:http://localhost:8080/news/main/list.jsp  则执行下面向行代码后打印出如下结果:
System.out.println(request.getContextPath());  打印结果:/news
2、System.out.println(request.getServletPath());  打印结果:/main/list.jsp
System.out.println(request.getRequestURI());  打印结果:/news/main/list.jsp
4、System.out.println(request.getRequestURL());  打印结果:http://localhost:8080/news/main/list.jsp
System.out.println(request.getRealPath("/"));  打印结果:F:\Tomcat
6.0\webapps\news\tes
浏览: 36362 次
帮了我大忙Java类中如何取得tomcat的安装目录
[问题点数:20分,结帖人heroxuetao]
Java类中如何取得tomcat的安装目录
[问题点数:20分,结帖人heroxuetao]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。相关热词搜索:
延伸阅读:
频道总排行
频道本月排行13898人阅读
在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty(&user.dir&)获取你工程的绝对路径。
另:在Jsp,Servlet,Java中详细获得路径的方法!
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)类的绝对路径:String u=Class.class.getClass().getResource(&/&).getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/&
//str会得到这个函数所在类的路径
String str = u.toString();
//截去一些前面6个无用的字符
str=str.substring(6,str.length());
//将%20换成空格(如果文件夹的名称带有空格的话,会在取得的字符串上变成%20)
str=str.replaceAll(&%20&, & &);
//查找“WEB-INF”在该字符串的位置
int num = str.indexOf(&WEB-INF&);
//截取即可
str=str.substring(0, num+&WEB-INF&.length());
(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
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:873765次
积分:14244
积分:14244
排名:第276名
原创:439篇
转载:88篇
评论:1025条
阅读:15572
(2)(1)(2)(9)(5)(31)(30)(31)(31)(33)(26)(22)(1)(1)(3)(2)(1)(2)(1)(6)(30)(11)(3)(3)(11)(7)(11)(14)(1)(16)(43)(15)(71)(54)1592人阅读
//生成一个文件对象:
File file = new File(getClass().getClassLoader().getResource(&test.xml&).getPath());
//直接得到一个输入流:
InputStream in = getClass().getClassLoader().getResourceAsStream(&test.xml&);
//在当前线程获取--这个方法不大稳定
//String path = Thread.currentThread().getContextClassLoader().getResource(&&).getPath()+&/test.xml&;
//推荐使用此方法
String path = getClass().getClassLoader().getResource(&test.xml&).getPath();
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:963767次
积分:13976
积分:13976
排名:第290名
原创:408篇
转载:207篇
评论:353条
(3)(1)(3)(3)(1)(3)(3)(1)(1)(6)(7)(4)(5)(7)(9)(4)(2)(10)(10)(15)(5)(7)(4)(14)(10)(5)(1)(2)(3)(2)(2)(1)(1)(10)(9)(1)(9)(7)(2)(28)(1)(18)(13)(4)(11)(10)(5)(2)(9)(2)(5)(7)(6)(5)(19)(39)(40)(43)(35)(21)(10)(19)(5)(15)(34)(17)}

我要回帖

更多关于 tomcat java home 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信