Java web如何定位工程路径

Posted 白衣苍狗汪汪汪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java web如何定位工程路径相关的知识,希望对你有一定的参考价值。

一 项目路径的获得

System.getProperty("user.dir");

可以获得当前用户的工作目录,即在哪个地方启动的java程序,返回就是当前目录

二 web项目根目录的获得(项目发布路径)

从servlet出发 可建立一个servlet在其的init方法中写入如下语句

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

path结果为:D:/workspace/Tomcat-8.0/webapps/test/ (test为项目名字) 如果是调用了s1.getRealPath("")则输出D:/workspace/Tomcat-8.0/webapps/test/(少了一个"/")


从httpServletRequest出发,一般spring的Controler接口可以采取改方法

String path=request.getSession().getServletContext().getRealPath("/");

path结果为:D:/workspace/Tomcat-8.0/webapps/test/

在有的mac系统中获取的地址都会带有file,如==file:/private/var/folders/rc/fprxcv590blgzgvnxksmq3bh0000gn/T/tomcat-docbase.5005559936542573545.8080/==
如果用这个路劲去创建新的文件,则文件的路径可能会跟你想象的不一样,而是在当前路径下创建了一个形如/file/private/var/folders/rc/fprxcv590blgzgvnxksmq3bh0000gn/T/tomcat-docbase.5005559936542573545.8080/...的文件夹

三 classpath的获取

通过线程获取

Thread.currentThread().getContextClassLoader().getResource("").getPath()

通过类加载器获取

this.getClass().getClassLoader().getResource("").getPath();
//或者
ClassName.class.getClassLoader().getResource("").getPath();

这种方法都可以获取到项目的classpath路径,但是执行的类都必须是在src路径下。因为设置Classpath的目的,是在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包。
classpath具体介绍



以上是关于Java web如何定位工程路径的主要内容,如果未能解决你的问题,请参考以下文章

普通JAVA类 如何获取,WEB项目的根路径

java中如何判断web工程中图片的绝对路径是不是存在

关于web工程中java类如何获取webapp路径下的文件

java web工程,读取配置文件路径问题

java工程中如何使用log4j输出指定路径日志文件,是java工程,不是web工程,谢谢

如何防止eclipse工程Java代码或js代码打开而左边的目录却无法展开并定位