您的位置:首页 > 编程语言 > Java开发

获取JAVA(WEB)项目路径的方法

2017-09-08 20:09 561 查看
最近的项目涉及了文件上传的功能,不可避免的需要获得文件路径的方法。

下面是关于获取文件路径的一些方法。

对于获取文件路径,在Jsp,Servlet,Java中,有不同的方法。

在java类中:

获取当前的classpath的绝对URI路径

this.getClass().getClassLoader().getResource(“/”).getPath()

this.getClass().getClassLoader().getResource(“”).getPath()

获取当前类的加载目录,如果有“/”,获取当前类的所在工程路径

this.getClass().getResource(“”).getPath()

this.getClass().getResource(“/”).getPath()

项目的绝对路径

this.getClass().getClassLoader().getResource(“.”).getPath();

另一种获取当前的classpath的绝对uri路径的方法

Thread.currentThread().getContextClassLoader().getResource(“/”).getPath()

Thread.currentThread().getContextClassLoader().getResource(“”).getPath()

项目的绝对路径

Thread.currentThread().getContextClassLoader().getResource(“.”).getPath()

获取项目的路径

directory.getCanonicalPath()

获取文件的路径

ActionForm.getMyFile()

获取系统的路径

System.getProperty(“”)

注意:如果一个类是通过bootstrap 载入的,那我们通过这个类去获得classloader的话,有些jdk的实现是会返回一个null的。

比如说我用new Object().getClass().getClassLoader()的话,会返回一个null,这样的话上面的代码就会出现NullPointer异常.所以保险起见我们最好还是使用我们自己写的类来获取classloader(”this.getClass().getClassLoader()“),这样一来就不会有问题。

在jsp中:

获取包含工程名的当前页面全路径

request.getRequestURI()

获取站点的虚拟路径

request.getContextPath()

获取当前页面所在目录下全名称

request.getServletPath()

获取页面所在服务器的全路径

application.getRealPath(“页面.jsp”)

得到页面所在服务器的绝对路径

java.io.File(application.getRealPath(request.getRequestURI())).getParent();

在servlet中:

得到工程目录(参数具体到包名)

request.getSession().getServletContext().getRealPath(“”)

得到IE地址栏地址

request.getRequestURL()

得到相对地址

request.getRequestURI()

获取站点的绝对路径

request.getServletContext().getRealPath(“/”)

request.getRealPath(“/”)

注意:在Web应用程序中,我们一般通过ServletContext.getRealPath(”/”)方法得到Web应用程序的根目录的绝对路径。还有request.getContextPath(); 在Weblogic中要用request.getServletContext().getContextPath();但如果打包成war部署到Weblogic服务器,项目内部并没有文件结构的概念,用这种方式是始终得到null,获取不到路径,目前还没有找到具体的解决方案。

相关问题

绝对路径和相对路径

绝对路径:主页上的文件或目录在硬盘上真正的路径,URL和物理路径。

相对路径:相对与某个基 准目录的路径。包含Web的相对路径(HTML中的相对目录)。 服务器端的地址服务器端的相对地址指的是相对于web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对 地址,他们是由客户端浏览器解析的)。

注意:一般在编程中,一般都操作读取文件的相对路径,因为绝对路径虽然是比较好处理的,但是不灵活,所以我们在编程中对文件进行操作的时候,一般都是读取文件的相对路径,

类加载器

一般类加载器有系统的和用户自己定义的;系统的ClassLoader就是jdk提供的,他的路径就是jdk下的路径,或者在 jsp编程,比如Tomcat ,取得的类加载器的位置就是tomcat自己设计的加载器的路径,

版权所有,未经授权不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息