说说相对路径与绝对路径

        虽然在web开发的过程中经常使用相对路径,但是一直没有怎么对相对路径做一个系统的理解,记得在刚开始用tomcat的时候就一直理解不了以斜杠开头的相对路径和没有斜杠的相对路径之间的差别,尽管用的时候都能够用正确。最近看JSTL in Action,才总算有了一个清楚的认识。

1.什么是绝对路径

绝对路径是与相对路径相对立的,通常一个完整的URL包括两个部分:

      scheme:寻找数据的所采用的机制,就是我们常说的协议,如httpftp等等;

      用来描述到哪儿去寻找数据的信息

上面两部分是分号分隔的,如http://java.sun.com就是一个绝对路径,它表明了这

样一个含义:使用http协议从一个名字为java.sun.comweb服务上获取信息。绝对路径无论出现在哪儿都指代相同的内容,一个url如果包含scheme和服务器那么它就是绝对路径。

2.相对路径

有时候我们并不想总是写出完整的路径,就可以使用相对路径,而且使用相对路径也方便我们项目的整体移植。同绝对路径不同,在不同的地方,相对路径所指代的内容可能是不同的。为了更好的理解相对路径,我们可以想象一下平常我们是如何使用电话号码的。

以在中国为例,一个完整的号码是区号+号码,这就像是我们的绝对路径一样。比如说0755-88888888,如果我现在在深圳,那么只需直接拨88888888即可,而如果我现在在武汉,那么我就要拨0755-88888888,更变态一点,我现在在国外,那么就需要拨86-0755-88888888了。还有很多企业里面,员工之间通话只需拨后4位分机号就可以了,这些都是使用了类似于相对路径的原理。

相对路径可以分为两类:page-relativecontext-relative

所谓page-relative相对路径就是指那些不是已斜杠开头的相对路径。如cindy.htmlpinkskirt.img都属于page-relative相对路径,它们只是简单的指明了一个文件名或者部分文件路径。假设上述相对路径都出现在cmtobby.jsp这个页面中,那么服务器在解析这些个相对路径的时候,就会从cmtobby.jsp所在的目录开始进行查找。比如cindy.html,那么服务器会在cmtobby.jsp所在的目录下面寻找cindy.html这个文件。page-relative相对路径在html标签和JSTL中标签中的工作原理是相同的。

所谓context-relative路径就是指那些已斜杠开头的相对路径,实际上,这种说法是不准确的。在HTML标签和JSTL标签中,以斜杠开头的相对路径所起的作用是不同的,在JSTL中以斜杠开头的相对路径才称为context-relative,而在纯粹的html标签中,以斜杠开头的相对路径应该叫做server-relative。怎么理解呢?在JSTL中,以斜杠开头就表示从当前应用上下文的根目录下开始查找所学资源,而在html中,以斜杠开头则表示从整个web服务器的根目录下开始查找,如在tomcat中,就表示从webapps目录下开始进行查找。时间上在很多框架中使用的都是context-relative相对路径,比如说在Struts2标签中,那么以斜杠开头的相对路径都是指context-relative相对路径。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值