URL和URI的区别关联

您所在的位置:网站首页 url和uri区别 URL和URI的区别关联

URL和URI的区别关联

2023-08-22 09:41| 来源: 网络整理| 查看: 265

JDK1.5开始:

1、统一资源定位符(uniform resource location URL)和统一资源标识符(uniform resource identifier URI)。

2、URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了定位Web资源的足够信息。其他URI,比如mailto:[email protected],则不属于定位符,因为根据该标识符无法定位任何资源。因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (uniform resource name URN),它命名资源但不指定如何定位资源。

3、URI 和 URL 概念上的不同反映在URI类和 URL 类的不同中。

URI类的实例代表由 RFC 2396(Request For Comments  是由互联网工程任务组(IETF)发布的一系列备忘录。文件收集了有关互联网相关信息,以及UNIX和互联网社群的软件文件,以编号排定。目前RFC文件是由互联网协会(ISOC)赞助发行。) 定义的语法意义上的一个 URI 引用。URI 可以是绝对的,也可以是相对的。对 URI 字符串按照一般语法进行解析,不考虑它所指定的方案(如果有),不对主机(如果有)执行查找,也不构造依赖于方案的流处理程序。相等性、哈希计算以及比较都严格地根据实例的字符内容进行定义。换句话说,一个 URI 实例和一个支持语法意义上的、依赖于方案的比较、规范化、解析和相对化计算的结构化字符串差不多。

作为对照,URL 类的实例代表了 URL 的语法组成部分以及访问它描述的资源所需的信息。URL 必须是绝对的,即它必须始终指定一个方案。URL 字符串按照其方案进行解析。通常会为 URL 建立一个流处理程序,实际上无法为未提供处理程序的方案创建一个URL实例。相等性和哈希计算依赖于方案和主机的 Internet 地址(如果有);没有定义比较。换句话说,URL 是一个结构化字符串,它支持解析的语法运算以及查找主机和打开到指定资源的连接之类的网络 I/O 操作。

在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。

相反的是,URL类可以打开一个到达资源的流。

因此URL类只能作用于那些 Java类库知道该如何处理的模式,

例如http:,https:,ftp:,本地文件系统(file:),和Jar文件(jar:)。

4、URI—Uniform Resource Identifier 统一资源标识符(比如:人的身份证号)

Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是由一个URI来定位的URI一般由三部分组成①访问资源的命名机制②存放资源的主机名③资源自身的名称,由路径表示,着重强调于资源。

URL—Uniform Resource Location 统一资源定位符(比如:人的居住地址)URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成①协议(或称为服务方式)②存有该资源的主机IP地址(有时也包括端口号)③主机资源的具体地址。如目录和文件名等

5、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.(统一资源标识符用于标示一个抽象或者物理资源)。

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

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

6、举例:

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

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

②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。

③ URL示例

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

例1:file://ftp.linkwan.com/pub/files/foobar.txt

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

 

例2:file://ftp.linkwan.com/pub

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

 

例3:file://ftp.linkwan.com/

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

 

例4:http://homepage.yesky.com/175/2603675.shtml

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

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

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3