Java的绝对路径和相对路径
Java的绝对路径和相对路径
1. 绝对路径
2. 相对路径
相对路径:相对于某个基准⽬录的路径。包含Web的相对路径(HTML中的相对⽬录),例如:在Servlet中,”/”代表Web应⽤的根⽬录,”./”代表当前⽬录,“../”代表上级⽬录。
3. java中的应⽤
归根结底,Java本质上只能使⽤绝对路径来寻资源。所有的相对路径寻资源的⽅法,都不过是API在底层帮助我们构建了绝对路径,从⽽到资源的!
3.ContextPath()
<%=ContextPath()%>是为了解决相对路径的问题,可返回站点的根路径或者叫根⽬录,分为两种情况:
1. 将web项⽬中的webRoot下的⽂件直接拷贝到webapps/ROOT下(删除ROOT下的原有⽂件);
2. 在Tomcat下的webapps中创建以项⽬名称命名(当然也可以⽤其他的名称)的⽂件夹,并将webRoot下的⽂件直接拷贝到该⽂件夹
下。
对于第⼀部署⽅法,ContextPath()的返回值为空(即:"",中间⽆空格,注意区分null)。
对于第⼆部署⽅法,其返回值为:/创建的⽂件夹的名称。
对于第1种⽅法,当你直接在浏览器中输⼊你的服务器ip+端⼝号,就会到你的jsp页⾯,⽽不是tomcat的默认页⾯,所以你通过ContextPath()得到的字符串是为空字符串;
如果你想得到⼯程⽂件的实际物理路径,可通过:<%=RealPath("/")%>。
效果:
<%
String path = ContextPath();
String basePath = Scheme()+"://"+ServerName()+":"+ServerPort()+path+"/";
%>
path: /jspSmartUpLoad
basePath: yangm1203.oicp:8080/jspSmartUpLoad/
实际应⽤中,⼀般⽤来解决jsp测试和⽣产环境路径不同的问题
返回的协议名称,默认是http。对于ssl则返回"https"
返回的是服务器域名,如果是在本地的话就是localhost
getServerPort()
获取服务器端⼝号
⽐如<a href="<%=ContextPath()%>/catalog.jsp">,但当这两个⽂件是在同⼀个⽬录下时,也可以直接⽤<a href="catalog.jsp">。
⽐如你要⽣成⼀个⽂件放在服务器上的⼀个⽬录下,可以使⽤ContextPath()+/dir,组成⼀个完整得⽬录结构!
注意在velocity中的写法可能要改为
$!{ContextPath()}
⼀些常⽤的获取项⽬根⽬录写法:
在jsp⾥去<%=ContextPath()%>这就是项⽬的根路径了。
js的引⼊⽅法如下:
<script src="<%=ContextPath() %> /home/test.js"></script>
css的引⼊⽅法:
<link href="<%=ContextPath() %>/css/one.css" rel="stylesheet" type="text/css">
3.2 Classpath:
指定类搜索路径。即⽤来告诉编译器导⼊的包或者类所在路径。
⽐如我们安装JDK的配置:
Classpath:
.;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib;
分别表⽰当前⽬录,即⾃⼰的java类路径;jdk⾃带的标准类库路径。
JAVA_HOME
C:\Program Files\Java\jdk1.8.0_77
设置jdk的安装路径。
3.RealPath()
⽤来获得绝对路径
4. 相对路径的⼏种使⽤情况
1.若引⽤的资源和本⾝在同⼀路径下(既在同⼀⽬录下),直接:
<img src="tupian.gif" border="0"/>
2.要引⽤的⽂件在下⼀级⽂件夹下,⽂件名前加⼦⽂件夹名称
假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
假设index.html路径是:c:\Inetpub\wwwroot\sites\blabla\html\tutorials\index.html
在info.html加⼊index.html超链接的href应该这样写:html/tutorials/index.html
3.要引⽤的⽂件在上⼀级⽂件夹下,⽂件名前加../
假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
假设index.html路径是:c:\Inetpub\wwwroot\sites\index.html
在info.html加⼊index.html超链接的代码应该这样写:
<a href="../index.html">index.html</a>
举⼀反三: ../表⽰源⽂件所在⽬录的上⼀级⽬录,../../表⽰源⽂件所在⽬录的上上级⽬录,以此类推
4.更复杂的情况:
javaservlet和jsp的比较假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
假设index.html路径是:c:\Inetpub\wwwroot\sites\html\index.html
在info.html加⼊index.html超链接的代码应该这样写:<a href="../html/index.html">index.html</a>
5.最后⼀个例⼦
假设路径:D:\例⼦\html\style\view\pop.css
D:\例⼦\html\images\view\tupian.gif
在css中引⽤这个图⽚:<img src="../../images/view/tupian.gif" border="0"/>
在JSP/HTML等页⾯引⽤CSS,Javascript.Action等属性时,前⾯可以加上< %=ContextPath()%>,以确保所引⽤的⽂件都属于Web 应⽤所在⽬录。因为当使⽤类似”.”,”./”,”../../”等相对路径时,⽂件移动很容易出问题,但对于⽬录结构不变的应⽤影响不⼤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。