如何在java web项目中获得相对路径

如何在java web项目中获得相对路径,第1张

第一步: 先获得classpath路径

String classpath = thisgetClass()getResource("/")getPath()replaceFirst("/", "");

这样子可以得到classpath路径,类似于:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/WEB-INF/classes/

然后把WEB-INF/classes截取就能获得WebAPP目录啦:

String webappRoot = classpathreplaceAll("WEB-INF/classes/", "");

得到的结果就是:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/

通过这个路径你就能获取该文件夹下的所有文件啦

Class类中的方法:

1、URL getResource(String name)

查找带有给定名称的资源

如果在eclipse中编写并运行

参数name为"",""时

file:/D:/JAVA%20IDE/eclipse32/work/MyTest/bin/com/hss/load/

为"/"时

file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/

2、InputStream getResourceAsStream(String name)

查找具有给定名称的资源

与1类似,只是形式不同

非常奇怪的是如果不用IDE,而只将文件放于硬盘的一处,得到的结果只是(无论是","")

file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/

ClassLoader类中的方法

1、URL getResource(String name)

查找具有给定名称的资源。

参数name为"",""时

ur1:file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/

须注意的是该classloader是系统类加载器,其他加载器也一样

2、InputStream getResourceAsStream(String name)

返回读取指定资源的输入流。

3、Enumeration<URL> getResources(String name)

查找所有给定名称的资源。

4、static URL getSystemResource(String name)

从用来加载类的搜索路径中查找具有指定名称的资源。

name只能是"",或者"",否则得到的是null

输出结果是 file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/

5、static InputStream getSystemResourceAsStream(String name)

从用来加载类的搜索路径打开具有指定名称的资源,以读取该资源。

以4相似,只是返回的是InputStream

6、static Enumeration<URL> getSystemResources(String name)

从用来加载类的搜索路径中查找所有具有指定名称的资源。

name只能是"",或者"",否则得到的是null

输出结果是 file:/C:/Program%20Files/Java/jre160_04/lib/ext/classes/,

file:/D:/JAVA%20IDE/eclipse32/work/MyTest/bin/(测试类的class文件位于此目录)

总结:一般使用Class的getResource("/")获取当前类路径(包所在的顶层目录),使用getResource("")获取当前类的具体存放路径(具体到包目录的最底层如comhssservletMyServlet时,获取的路径将是com/hss/servlet)

package test;

public class Test {

    public static void main(String[] args) throws Exception {

        //Systemoutprintln(TestclassgetName());

        Class<>[] classes = TestclassgetDeclaredClasses();

        for (Class<> clazz : classes) {

            Systemoutprintln(clazzgetName());

            //输出testTest$A、testTest$B,要获得后面的类名A,自己做一下字符串的截取就行了。 

        }

    }

    class A {

    }

    class B {

    }

}

java获取根路径有两种方式:

1)在servlet可以用一下方法取得:

requestgetRealPath(“/”)

例如:filepach = requestgetRealPath(“/”)+”//upload//”;

2)不从jsp,或servlet中获取,只从普通java类中获取:

String path = getClass()getProtectionDomain()getCodeSource()getLocation()getPath();

SAXReader() saxReader = new SAXReader();

if(pathindexOf(“WEB-INF”)>0){

path = pathsubstring(0,pathindexOf(“/WEB-INF/classes”)+16);

// ‘/WEB-INF/classes’为16位

document = saxReaderread(path+filename);

}else{

document = saxReaderread(getClass()getResourceAsStream(filename));

}

在java中获得文件的路径在我们做上传文件 *** 作时是不可避免的。 web 上运行 1:thisgetClass()getClassLoader()getResource("/")getPath(); thisgetClass()getClassLoader()getResource("")getPath(); 得到的是 ClassPath的绝对URI路径。

以工程名为TEST为例:

(1)得到包含工程名的当前页面全路径:requestgetRequestURI(),结果:/TEST/testjsp。

(2)得到工程名:requestgetContextPath(),结果:/TEST。

(3)得到当前页面所在目录下全名称:requestgetServletPath()。结果:如果页面在jsp目录下 /TEST/jsp/testjsp。

(4)得到页面所在服务器的全路径:applicationgetRealPath("页面jsp"),结果D:/resin/webapps/TEST/testjsp。

(5)得到页面所在服务器的绝对路径:absPath=new javaioFile(applicationgetRealPath(requestgetRequestURI()))getParent();

结果:D:/resin/webapps/TEST。

拓展:在类中取得路径的方法

(1)类的绝对路径:String u=ClassclassgetClass()getResource("/")getPath()

结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/

(2)得到工程的路径:SystemgetProperty("userdir")

结果:D:/TEST

方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。缺点:不能在servlet外面应用读取配置信息。

方式二:采用ResourceBundle类读取配置信息,

优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。缺点:只能加载类classes下面的资源文件且只能读取properties文件。

方式三:采用ClassLoader方式进行读取配置信息

优点是:可以在非Web应用中读取配置资源信息,可以读取任意的资源文件信息

缺点:只能加载类classes下面的资源文件。

方法4 getResouceAsStream

XmlParserHandlerclassgetResourceAsStream 与classloader不同

Class[] getDeclaredClasses()

返回类中定义的公共、私有、保护的内部类

Class[] getClasses()

返回类定义的公共的内部类,以及从父类、父接口那里继承来的内部类

很多朋友都想知道java如何获取当前目录路径?下面就一起来了解一下吧~

1、利用SystemgetProperty()函数获取当前路径:

Systemoutprintln(SystemgetProperty("userdir"));//userdir指定了当前的路径

2、使用File提供的函数获取当前路径:

File directory = new File("");//设定为当前文件夹 try{ Systemoutprintln(directorygetCanonicalPath());//获取标准的路径 Systemoutprintln(directorygetAbsolutePath());//获取绝对路径 }catch(Exceptin e){} FilegetCanonicalPath()和FilegetAbsolutePath()大约只是对于new File("")和new File("")两种路径有所区别。 # 对于getCanonicalPath()函数,“"就表示当前的文件夹,而”“则表示当前文件夹的上一级文件夹 # 对于getAbsolutePath()函数,则不管””、“”,返回当前的路径加上你在new File()时设定的路径 # 至于getPath()函数,得到的只是你在new File()时设定的路径 比如当前的路径为 C:/test : File directory = new File("abc"); directorygetCanonicalPath(); //得到的是C:/test/abc directorygetAbsolutePath(); //得到的是C:/test/abc direcotrygetPath(); //得到的是abc File directory = new File(""); directorygetCanonicalPath(); //得到的是C:/test directorygetAbsolutePath(); //得到的是C:/test/ direcotrygetPath(); //得到的是 File directory = new File(""); directorygetCanonicalPath(); //得到的是C:/ directorygetAbsolutePath(); //得到的是C:/test/ direcotrygetPath(); //得到的是 另外:SystemgetProperty()中的字符串参数如下: SystemgetProperty()参数大全 # javaversion Java Runtime Environment version # javavendor Java Runtime Environment vendor # javavendorurl Java vendor URL # javahome Java installation directory # javavmspecificationversion Java Virtual Machine specification version # javavmspecificationvendor Java Virtual Machine specification vendor # javavmspecificationname Java Virtual Machine specification name # javavmversion Java Virtual Machine implementation version # javavmvendor Java Virtual Machine implementation vendor # javavmname Java Virtual Machine implementation name # javaspecificationversion Java Runtime Environment specification version # javaspecificationvendor Java Runtime Environment specification vendor # javaspecificationname Java Runtime Environment specification name # javaclassversion Java class format version number # javaclasspath Java class path # javalibrarypath List of paths to search when loading libraries # javaiotmpdir Default temp file path # javacompiler Name of JIT compiler to use # javaextdirs Path of extension directory or directories # osname Operating system name # osarch Operating system architecture # osversion Operating system version # fileseparator File separator ("/" on UNIX) # pathseparator Path separator (":" on UNIX) # lineseparator Line separator ("/n" on UNIX) # username User’s account name # userhome User’s home directory # userdir User’s current working directory

JAVA中获取路径 关键字: java中获取路径

1、jsp中取得路径:

以工程名为TEST为例:

(1)得到包含工程名的当前页面全路径:requestgetRequestURI() 结果:/TEST/testjsp (2)得到工程名:requestgetContextPath() 结果:/TEST (3)得到当前页面所在目录下全名称:requestgetServletPath() 结果:如果页面在jsp目录下 /TEST/jsp/testjsp (4)得到页面所在服务器的全路径:applicationgetRealPath("页面jsp") 结果:D:/resin/webapps/TEST/testjsp (5)得到页面所在服务器的绝对路径:absPath=new javaioFile(applicationgetRealPath(requestgetRequestURI()))getParent(); 结果:D:/resin/webapps/TEST

2、在类中取得路径: (1)类的绝对路径:ClassclassgetClass()getResource("/")getPath() 结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/ (2)得到工程的路径:SystemgetProperty("userdir") 结果:D:/TEST

以上就是关于如何在java web项目中获得相对路径全部的内容,包括:如何在java web项目中获得相对路径、如何使用class,ClassLoader获取资源、java 打印getclass().getname() 如何得到内部类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9314182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存