URI和URL的区别(转)

1说明:

这段时间写android的时候用到了URLURI,有点分不清楚,于是做了一个系统性的学习。在这里将自己的学习笔记粘贴出来,希望对大家有帮助。

1)Java类库里有两个对应的类java.net.URL和java.net.URI,官方的定义分别如下:

(URL)A Uniform Resource Locator thatidentifies the location of an Internet resource as specified by RFC 1738.(统一资源定位符用于标示网络资源的位置)

(URI,统一资源标识符)A Uniform Resource Identifier that identifies an abstract or physical resource, as specified by RFC 2396.(统一资源标识符用于标示一个抽象或者物理资源)

2)也就是说URI是以一种抽象的,高层次概念定义统一资源标识,而URL则是具体的资源标识的方式。URL是一种URI。

3)URL,URI具体定义方式(来自android官方文档)

URL的格式一般由下列三部分组成:

第一部分是协议(或称为服务方式);

第二部分是存有该资源的主机IP地址(有时也包括端口号);

第三部分是主机资源的具体地址。

URI一般由三部分组成:

访问资源的命名机制。

存放资源的主机名。

资源自身的名称,由路径表示。

4)在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的,schema(protocol)必须被指定。

2举例:

1) 大家平常用图片的时候。到底是imgUrl好呢,还是imgUri好?显然,如果说imgUrl是肯定没问题的,因为即使它实际上是url,那它也是uri的一种。那么用imgUri

有没有问题呢?此时则要看它的可能取值,如果是绝对路径,能够定位的,那么用imgUri是没问题的,而如果是相对路径,那还是不要用ImgUri的好。总之,用imgUrl是肯定没问题的,而用imgUri则要视实际情况而定。

2)StringHttpServletRequest.getRequestURI();和StringBufferHttpServletRequest.getRequestURL();返回的内容有何不同?为什么会如此?

从HttpServletRequest的javadoc中可以看出,getRequestURI返回一个String,“the part of this request’s URL from theprotocol name up to the query string in the first line of the HTTP request”,比如“POST/some/path.html?a=b HTTP/1.1”,则返回的值为”/some/path.html”。现在可以明白为什么是getRequestURI而不是getRequestURL了,因为此处返回的是相对的路径。而getRequestURL返回一个StringBuffer,“The returned URL contains a protocol, server name, port number, andserver path, but it does not include query string parameters.”,完整的请求资源路径,不包括querystring。

3) URL示例

文件的URL:用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。

例(3.1):file://ftp.linkwan.com/pub/files/foobar.txt

代表存放主机ftp.linkwan.com上的pub/files/目录下的一个文件,文件名是foobar.txt。

例(3.2):file://ftp.linkwan.com/pub

代表主机ftp.linkwan.com上的目录/pub。

例(3.3):file://ftp.linkwan.com/

代表主机ftp.linkwan.com上的根目录。

例(3.4):http://homepage.yesky.com/175/2603675.shtml

HTTP的URL:使用超级文本传输协议HTTP,提供超级文本信息服务的资源。

其计算机域名为homepage.yesky.com。超级文本文件(文件类型为.shtml)是在目录/175下的2603675.shtml。这是天极网的一台计算机。

4) 统一资源定位器(URL)指的是Internet文件在网上的地址。好比一个街道在城市地理上地址。URL使用数字和字母按一定顺序排列以确定一个地址。比如,要是有一个人的地址是:

510665 广州市天河科韵路18号 梁大头

你会想到,梁大头是一个人名,他住在广州市天河科韵路18号,邮政编码是510665。

3:总结

参考了的网站:

http://www.cnblogs.com/gaojing/archive/2012/02/04/2413626.html

http://blog.csdn.net/niuox/article/details/7312843

http://cs.szpt.edu.cn/android/reference/java/net/URI.html (官方)

http://cs.szpt.edu.cn/android/reference/java/net/URL.html (官方)

http://www.cnblogs.com/devinzhang/archive/2012/01/08/2316443.html

原文地址:https://www.cnblogs.com/zuizui1204/p/8394877.html

时间: 2024-09-29 02:54:02

URI和URL的区别(转)的相关文章

URI与URL的区别

(原网址:http://zhidao.baidu.com/question/38764759.html) Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI")进行定位. 1.URI一般由三部分组成: 2.访问资源的命名机制. 3.存放资源的主机名. 4.资源自身的名称,由路径表示. 考虑下面的URI,它表示了当前的HTML 4.0规范: http://www.web

Web基础-Uri跟Url的区别

关于URL和URI的区别,个人见解.    初学java,最近被一个概念搞得头晕脑胀,就是url和uri的概念和区别,网上查了一大通,发现各种回答眼花缭乱,有百科直接粘贴的,有胡说八道的,有故意绕来绕去的,我估计他自己都没搞懂,按照马士兵的说法就是,通通都是一些冠冕堂皇的套话,说了等于没说,本来就是一个很抽象的概念,还用很抽象的的方式来答复,这不是让人虐心吗?经过我潜心研究了一番,把他们的区别分享给大家,我相信很多新手都不会一下子明白这两个概念的,老鸟勿喷! 首先给大家举个例子,有一家公司的总经

URI跟URL的区别

关于URL和URI的区别,个人见解.    初学java,最近被一个概念搞得头晕脑胀,就是url和uri的概念和区别,网上查了一大通,发现各种回答眼花缭乱,有百科直接粘贴的,有胡说八道的,有故意绕来绕去的,我估计他自己都没搞懂,按照马士兵的说法就是,通通都是一些冠冕堂皇的套话,说了等于没说,本来就是一个很抽象的概念,还用很抽象的的方式来答复,这不是让人虐心吗?经过我潜心研究了一番,把他们的区别分享给大家,我相信很多新手都不会一下子明白这两个概念的,老鸟勿喷! 首先给大家举个例子,有一家公司的总经

URI和URL的区别 一起学习呗

一直存在很多技术上的争论,其中最为妙的恐怕就是web地址应该叫什么的问题.通常情况就是这样:有人把地址栏的内容叫“URL”,这时候有些人就来劲了:“不!其实那就是URI...” “URI可以分为URL,URN或同时具备locators 和names特性的一个东西.URN作用就好像一个人的名字,URL就像一个人的地址.换句话说:URN确定了东西的身份,URL提供了找到它的方式.” ftp://ftp.is.co.za/rfc/rfc1808.txt (also a URL because of t

URI和URL的区别

这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgUrl还是imgUri呢? 同样的,另外一个问题:String HttpServletRequest.getRequestURI():和StringBuffer HttpServletRequest.getRequestURL();返回的内容有何不同?为什么会如此? URIs, URLs, and U

URI 和 URL的区别

URL是全球资源定位符的英文所写,您平时上网时在IE浏览器中输入的那个地址就是URL.比如:网易 http://www.163.com就是一个URL.URI是Web上可用的每种资源 - HTML文档.图像.视频片段.程序,由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI")进行定位.  URL的格式由下列三部分组成: 第一部分是协议(或称为服务方式);  第二部分是存有该资源的主机IP地址(有时也包括端口号);  第三部分是主机资源的

android里uri和url的区别

URI :是从虚拟根路径开始的 URI,是uniform resource identifier URL:是整个链接  URI,是uniform resource location uri:file:///mnt/sdcard/Love url:/mnt/sdcard/Love/ uri是抽象  url具体

URI和URL的区别 【转】

源地址:http://www.cnblogs.com/gaojing/archive/2012/02/04/2413626.html 这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgUrl还是imgUri呢? 同样的,另外一个问题:String HttpServletRequest.getRequestURI():和StringBuffer Htt

区别URI和URL

本人在看<图解HTTP>的时候,刚开始还对URI和URL的区别不是太在意,越到后面越发觉区别两者的必要性. 英文文档:"A URI is a uniform resource identifier while a URL is a uniform resource locator. Hence every URL is a URI, abstractly speaking, but not every URI is a URL. This is because there is an