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

最近的项目涉及了文件上传的功能,不可避免的需要获得文件路径的方法。
下面是关于获取文件路径的一些方法。

对于获取文件路径,在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自己设计的加载器的路径,


版权所有,未经授权不得转载。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值