1. 相对路径和绝对路径的区别
  2.  
  3. HTML里只要涉及文件的地方(如超级链接、图片等)就会涉及绝对路径与相对路径的概念。
  4.  
  5. .绝对路径
  6. 绝对路径是指文件在硬盘上真正存在的路径。例如“bg.jpg”这个图片是存放在硬盘的“E:\book\网页布局代码\第2章”目录下,那么 bg.jpg”这个图片的绝对路径就是“E:\book\网页布\代\第2\bg.jpg"。那么如果要使用绝对路径指定网页的背景图片就应该使用 以下语句:
  7. <body backround="E:\book\网页布局\代\第2\bg.jpg" >
  8.  
  9. .使用绝对路径的缺点
  10. 事实上,在网页编程时,很少会使用绝对路径,如果使用“E:\book\网页布\代码\第2章\bg.jpg”来指定背景图片的位置,在自己的计算机上 浏览可能会一切正常,但是上传到Web服务器上浏览就很有可能不会显示图片了。因为上传到Web服务器上时,可能整个网站并没有放在Web服务器的E盘, 有可能是D盘或H盘。即使放在Web服务器的E盘里,Web服务器的E盘里也不一定会存在“E:\book\网页布局\代码\第2章”这个目录,因此在浏 览网页时是不会显示图片的。
  11.  
  12. .相对路径
  13. 为了避免这种隋况发生,通常在网页里指定文件时,都会选择使用相对路径。所谓相对路径,就是相对于自己的目标文件位置。例如上面的例子,“s1.htm” 文件里引用了“bg.jpg”图片,由于“bg.jpg”图片相对于“s1.htm”来说,是在同一个目录的,那么要在“s1.htm”文件里使用以下代 码后,只要这两个文件的相对位置没有变(也就是说还是在同一个目录内),那么无论上传到Web服务器的哪个位置,在浏览器里都能正确地显示图片。
  14. <body background="bg.jpg">
  15. 再 举一个例子,假设“s1.htm”文件所在目录为“E:\book\网页布局\代码\第2章”,而“bg.jpg”图片所在目录为“E:\book\网页 布局\代码\第2章\img”,那么“bg.jpg”图片相对于“s1.htm”文件来说,是在其所在目录的“img”子目录里,则引用图片的语句应该 为:
  16. <body background="img/bg.jpg">
  17.  
  18. 注意:相对路径使用“/”字符作为目录的分隔字符,而绝对路径可以使用“\”或“/”字符作为目录的分隔字符。由于“img”目录是“第2章”目录下的子目录,因此在“img”前不用再加上“/”字符。
  19. 在 相对路径里常使用“../”来表示上一级目录。如果有多个上一级目录,可以使用多个“../”,例如“http://www.cnblogs.com/”代表上上级目录。假设 “s1.htm”文件所在目录为“E:\book\网页布局\代码\第2章”,而“bg.jpg”图片所在目录为“E:\book\网页布局\代码”,那 么“bg.jpg”图片相对于“s1.htm”文件来说,是在其所在目录的上级目录里,则引用图片的语句应该为:
  20. <body background="../bg.jpg">
  21.  
  22. 再举一个例子,假设“s1.htm”文件所在目录为“E:\book\网页布局\代码\第2章”,而“bg.jpg”图片所在目录为“E:\book\网 页布局\代码\img”,那么“bg.jpg”图片相对于“s1.htm”文件来说,是在其所在目录的上级目录里的“img”子目录里,则引用图片的语句 应该为:
  23. <body background="../img/bg.jpg">
  24.  
  25. .相对虚拟目录
  26. 有关相对路径还有一个比较特殊的表示:“相对虚拟目录”。请看下面的例子:
  27. <body background="/img/bg.jpg">
  28.  
  29. 在这个例子里,background属性的值为“/img/bg.jpg”,注意在“img”前有一个“/”字符。这个“/”代表的是虚拟目录的根目录. 假设把“E:\book\网页布局\代码”设为虚拟目录,那么“/img/bg.jpg”的真实路径为“E:\book\网页布局\代码\img \bg.jpg”;如果把“E:\book\网页布局\代码\第2章”设为虚拟目录,那么“/img/bg.jpg”的真实路径为“E:\book\网页 布局\代码\第2章\img\bg.jpg”
  30.  
  31. 在jsp和class文件中调用的相对路径不同。
  32.  
  33. 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。
  34.  
  35. .jsp中取得路径:
  36. 以工程名为TEST为例:
  37. ()得到包含工程名的当前页面全路径:request.getRequestURI()
  38. 结果:/TEST/test.jsp
  39. ()得到工程名:request.getContextPath()
  40. 结果:/TEST
  41. ()得到当前页面所在目录下全名称:request.getServletPath()
  42. 结果:如果页面在jsp目录下 /TEST/jsp/test.jsp
  43. ()得到页面所在服务器的全路径:application.getRealPath("页面.jsp")
  44. 结果:D:\resin\webapps\TEST\test.jsp
  45. ()得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
  46. 结果:D:\resin\webapps\TEST
  47.  
  48. .在类中取得路径:
  49. ()类的绝对路径:Class.class.getClass().getResource("/").getPath()
  50. 结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
  51. ()得到工程的路径:System.getProperty("user.dir")
  52. 结果:D:\TEST
  53.  
  54. .在Servlet中取得路径:
  55. ()得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。
  56. 结果:E:\Tomcat\webapps\TEST
  57. ()得到IE地址栏地址:request.getRequestURL()
  58. 结果:http://localhost:8080/TEST/test
  59. ()得到相对地址:request.getRequestURI()
  60. 结果:/TEST/test
  61.  
  62. 另,Class类还有一个getResourceAsStream方法,记得以前有个项目要读取在同一个包内的一个xml,就用的这个。
  63.  
  64. .如何获得当前文件路径
  65.  
  66. 常用:
  67. ().Test.class.getResource("")
  68. 得到的是当前类FileTest.class文件的URI目录。不包括自己!
  69. ().Test.class.getResource("/")
  70. 得到的是当前的classpath的绝对URI。
  71. ().Thread.currentThread().getContextClassLoader().getResource("")
  72. 得到的也是当前ClassPath的绝对URI。
  73. ().Test.class.getClassLoader().getResource("")
  74. 得到的也是当前ClassPath的绝对URI。
  75. ().ClassLoader.getSystemResource("")
  76. 得到的也是当前ClassPath的绝对URI。
  77. 尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径,后面可以看出得出结果五花八门。
  78. () new File("").getAbsolutePath()也可用。
  79.  
  80. 注:若这些路径中出现空格,并且空格被 代替,则可以使用path = java.net.URLDecoder.decode(path,"utf-8") 进行转化;
  81.  
  82. .Web服务器
  83. ().Tomcat
  84. 在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
  85. ().Resin
  86. 不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成Servlet的路径为根.比如用新建文件法测试File f = new File("a.htm");
  87. 这个a.htm在resin的安装目录下
  88. ().如何读文件
  89. 使用ServletContext.getResourceAsStream()就可以
  90. ().获得文件真实路径
  91.  
  92. String file_real_path=ServletContext.getRealPath("mypath/filename");
  93. 不建议使用request.getRealPath("/");

相对路径和绝对路径的区别,java获取项目访问路径的方法的更多相关文章

  1. java 或者 js 获取项目访问路径(域名)

    /** * 获得站点url * @return */ public String getWebUrl(){ String url = getRequest().getScheme() + " ...

  2. java 获取项目绝对路径

    String classPath = Thread.currentThread().getContextClassLoader().getResource("").getPath( ...

  3. java获取classpath文件路径空格转变成了转义字符%20的问题

    java获取classpath文件路径空格转变成了转义字符%20的问题 这个问题很纠结,服务器的文件路径带有空格,空格被转化是%20了,悲剧就出现了 下面展示一段代码String path = get ...

  4. java获取文件的路径问题

    java获取文件的路径问题 在java中读取读取文件,经常因为路径的问题找不到,此文用于记录如何定位文件的简单方法. 本基于springboot做的测试,主要是构建工程方便,所用的方法都是JDK中的方 ...

  5. [转]获取JAVA[WEB]项目相关路径的几种方法

    http://blog.csdn.net/yaerfeng/article/details/7297479/ 在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在cl ...

  6. Java中获取项目根路径和类加载路径的7种方法

    引言 在web项目开发过程中,可能会经常遇到要获取项目根路径的情况,那接下来我就总结一下,java中获取项目根路径的7种方法,主要是通过thisClass和System,线程和request等方法. ...

  7. js获取项目根路径

    //js获取项目根路径,如: http://localhost:8083/uimcardprj function getRootPath(){ //获取当前网址,如: http://localhost ...

  8. html 获取项目根路径

    html 获取项目根路径 function getContextPath(){ var pathName = document.location.pathname; //当前文件的绝度路径 var i ...

  9. Java获取随机数的几种方法

    Java获取随机数的几种方法 .使用org.apache.commons.lang.RandomStringUtils.randomAlphanumeric()取数字字母随机10位; //取得一个3位 ...

随机推荐

  1. 读取Excel复杂的数据

    涉及到合并单元格的数据读取: package com.util; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util ...

  2. IIS Manager could not load type for module provider 'SharedConfig' that is declared in administration.config

    https://support.microsoft.com/en-ie/help/3151973/iis-shared-configuration-feature-requires-all-serve ...

  3. 有关写log的思考

    前言 在软件开发过程中,log往往是不太引人注意的环节,大部分的log都只是开发人员为了调试bug临时加上的.这样出来的软件,最后的log往往杂乱无章没有系统性.我们判断一个软件系统的log写的好不好 ...

  4. Hive-行转列(explode)

    场景:通过parseHtml UDF解析一串HTML,返回一以 @@ 分割的字符串,使用split分割字符串进数组中,然后将数组的元素转列. 开始的写法 SELECT id, legal_person ...

  5. java 与大数据学习较好的网站

    C# C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!https://www.cnblogs.com/doforfuture/p/6293926.html ...

  6. lightoj1213推公式

    很容易推出来的公式ans=n^(k-1)*k*sum 然后快速幂就好了 #include<map> #include<set> #include<cmath> #i ...

  7. MailUtils 测试邮件是否发送

    import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail ...

  8. Qt DLL总结

    (转自:http://qimo601.iteye.com/blog/1397936) QT动态链接库的调用方法,主要包括: 1.显式链接DLL,调用DLL的全局函数,采用Qt的QLibrary方法 2 ...

  9. inline,block,inline-block解析

    display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...

  10. 浅析Java基本数据类型

    作为一种强类型语言,Java针对每一种数据都定义了明确的数据类型.大体来讲可分为:基本数据类型和引用数据类型:在此,主要讨论前者,后者以后再继续探究. Java基本数据类型分为四类八种: 1: 整数 ...