关于URL和URI的区别,个人见解。
初学java,最近被一个概念搞得头晕脑胀,就是url和uri的概念和区别,网上查了一大通,发现各种回答眼花缭乱,有百科直接粘贴的,有胡说八道的,有故意绕来绕去的,我估计他自己都没搞懂,按照马士兵的说法就是,通通都是一些冠冕堂皇的套话,说了等于没说,本来就是一个很抽象的概念,还用很抽象的的方式来答复,这不是让人虐心吗?经过我潜心研究了一番,把他们的区别分享给大家,我相信很多新手都不会一下子明白这两个概念的,老鸟勿喷!
首先给大家举个例子,有一家公司的总经理,某天,给了我一张名片,上面写了他的头衔,北京XXX公司总经理 张三,还有他的办公室地址,北京市海淀区长安街35号北京XXX公司总经理办公室,那么,我以后给我的朋友吹牛,我认识北京XXX公司的总经理张三,我的朋友都知道北京XXX公司的总经理是一个叫张三的人,那么,这个头衔就和张三对应起来了,只要一说到这个头衔,大家都知道说的是张三,反应到网络世界,这个头衔就叫做URI,只要你给我一个URI,我就知道它代表了什么,比如,http://www.sina.com.cn代表了新浪网,admin@qq.com代表了某一个人的qq邮箱,你的qq号也是一个URI(腾讯服务器内可以识别就是你的QQ账户),URI就是网络资源的头衔,通过URI标记可以把网络世界里面的每一个事物都加以标记并区分开来。
好的,现在出现了一个问题,你现在知道北京XXX公司总经理是张三,“北京XXX公司总经理”就是张三这个人的URI,可是,我让你亲自去和张三见一面,你做得到吗?你肯定做不到,因为你不知道他的地址,虽然你有他的URI头衔,但是除此以外,你对他具体的情况一无所知,于是你要定位到他,你就必须得到他的办公室地址,通过“北京市海淀区长安街35号北京XXX公司总经理办公室”这个地址,你就找到了张三。反应到网络世界,网络世界里面的每一个资源不光有自己的头衔,还要能够被人访问,被人找到,所以,网络地址是必须的,否则,这个网络资源的存在没有任何意义,这个地址就叫做URL。
通过上面的描述,可以发现,URI强调的是给资源标记命名,URL强调的是给资源定位,但是你会发现,URL显然比URI包含信息更多,我通过URL也可以知道张三是总经理,并且我还知道了他的地址,所以大多数情况下大家觉得给一个网络资源分别命名和给出地址太麻烦,干脆就用地址既当地址用,又当标记名用,所以,URL也充当了WWW万维网里面URI的角色,但是他比URI多了一层意义,我不光知道你叫什么,我还知道你在哪里。我们在浏览器输入的都是URL,因为我们输入的目的是为了找到某一个资源,当然你输入的是URI也是没错的,因为URL也是URI。
总结:URI标记了一个网络资源,仅此而已; URL标记了一个WWW互联网资源(用地址标记),并给出了他的访问地址。