URL && URI

URIs, URLs, and URNs

首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:[email protected]。也就是说,URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。

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

ok,现在回答文章开头提出的问题,到底是imgUrl好呢,还是imgUri好?显然,如果说imgUri是肯定没问题的,因为即使它实际上是url,那它也是uri的一种。那么用imgUrl有没有问题呢?此时则要看它的可能取值,如果是绝对路径,能够定位的,那么用imgUrl是没问题的,而如果是相对路径,那还是不要用ImgUrl的好。总之,用imgUri是肯定没问题的,而用imgUrl则要视实际情况而定。

第二个,从HttpServletRequest的javadoc中可以看出,getRequestURI返回一个String,“the part of this request’s URL from the protocol 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, and server path, but it does not include query string parameters.”,完整的请求资源路径,不包括querystring。

总结一下:URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,所以,是绝对的,而通常说的relative URL,则是针对另一个absolute URL,本质上还是绝对的。

注:这里的绝对(absolute)是指包含scheme,而相对(relative)则不包含scheme。

URI抽象结构     [scheme:]scheme-specific-part[#fragment]

[scheme:][//authority][path][?query][#fragment]

authority为[user-info@]host[:port]

URI 是从虚拟根路径开始的URL是整个链接如URL http://zhidao.baidu.com/question/68016373.html  URI 是/question/68016373.html
时间: 2024-11-01 17:48:42

URL && URI的相关文章

web应用 http 响应 url uri

动态web  应用结构 WEB-INF --classes --lib web.xml     响应:   url   uri

什么是URL,URI或URN?

什么是URI? 每个Web服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了. 服务器资源名被称为统一资源标识符(Uniform Resource Identifier, URI). URI就像因特网上的邮政地址一样, 在世界范围内唯一标识并定位信息资源. 这是Joe的五金商店的Web 服务器上的一个图片资源的URI: http://www.joes-hardware.com/specials/saw-blade.gif URI有两种格式,分别称为URL和URN. 什么是URL

java网络---再论URL & URI

关于URL 和URI的关系,在本系列的第二篇:java网络---基本web概念 中已经简述了. 这里重复一点,就是URI包含URL,或者说URI是父类,URL就是子类的概念. 本篇再来详述这2个概念. 一:URL java/net/URL.java public final class URL implements Serializable { private static final long serialVersionUID = -7627629688361524110L; private

URL,URI和URN的理解

我想很多人和我一样弄不清楚URI和URL之间的区别,有人可能觉得这是统一概念的不同表述而已. 我们先看看定义: URI:Uniform Resource Identifier,即统一资源标志符,用来唯一的标识一个资源. URL:Uniform Resource Locator,统一资源定位符.即URL可以用来标识一个资源,而且还指明了如何locate这个资源. URN:Uniform Resource Name,统一资源命名.即通过名字来表示资源的. 好了定义看完了,可能还是不理解下面我们就详细

两句话搞懂 url,uri,urn 区别

<cnmm22 动感原创:http://blog.csdn.net/cnmm22/article/details/44833045> 理解这个问题依然要站在设计者的角度而不是使用者 作为使用者,只关心如何去找到一个资源 而设计者在解决这个问题的时候则要考虑多种情形,考虑不周则有可能找不到 所有跟定位一个资源相关的信息都是URI 假设URL能找到资源了,OK,URI就是URL 在本地应用场合,URI可能只代表一个相对路径,能找到资源就行,这时一个相对路径也是URI,因为它定位了一个资源 有一种情

URL URI URN的区别

下面这张图可以完美的解释他们三者之间的关系 URI包含URL和URN Uniform Resource Identifier :统一资源标志符,用于标识某一互联网资源 Uniform Resoutce Location:通一资源定位符,用于表示资源的地点,它提供了一种互联网上任意资源的手段,也是浏览器寻找服务器资源所需的信息. 原文地址:https://www.cnblogs.com/katydids/p/9955586.html

URI URL URN 详解

经常听说URL, URI, URN 但它们间的区别不胜明了,下面我们就把它们搞搞清楚: 声明:本文参考http权威指南 URI: 统一资源标示符(Uniform Resource Identifier);用来唯一确定互联网上的一个资源. URI有2中形式:URL和URN URL: 统一资源定位符(Uniform Resource)是URI最常见的形式:URL描述了一台特点服务器上某个资源的特定位置:它们可以明确说明如何从一个精确,固定的位置获取资源.如下图: 大部分URL都遵循一种标准格式,这种

Java魔法堂:URI、URL(含URL Protocol Handler)和URN

一.前言 过去一直搞不清什么是URI什么是URL,现在是时候好好弄清楚它们了!本文作为学习笔记,以便日后查询,若有纰漏请大家指正! 二.从URI说起    1. 概念 URI(Uniform Resource Identifier,统一资源标识符)以字符串来表示某种资源的统一资源标识. 格式为: [scheme:]scheme-specific-part[#fragment] [scheme:]组件 ,URI的名称空间标识. scheme-specific-part组件 ,用于标识资源,内部格式

Android URI和URL和URN的区别

问题: 问题1.定义的时候是该用imgUrl还是imgUri呢? 问题2.String HttpServletRequest.getRequestURI():和StringBuffer HttpServletRequest.getRequestURL();返回的内容有何不同呢? 分析: Java类库里有两个对应的类java.net.URI和java.net.URL URI是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源. URL是uniform r