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 resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

URN是uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:[email protected]。

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

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

回答:

回答问题1:用imgUri是肯定没问题的,而用imgUrl则要视实际情况而定(如果是绝对路径,能够定位的,那么用imgUrl是没问题的,而如果是相对路径,那还是不要用ImgUrl的好)。

回答问题2:如果大家看懂了也就明白getRequestURI() 和 getRequestURL()获取的内容的区别呢。getRequestURI()获取的是相对的路径,getRequestURL()获取的是完整的路径。

java.net.URL类不提供对标准RFC2396规定的特殊字符的转义,因此需要调用者自己对URL各组成部分进行encode。java.net.URI则会提供转义功能可以使用URI.toURL()和URL.toURI()方法来对两个类型的对象互相转换。Html的url可以使用java.net.URLEncoder和java.net.URLDecoder来完成

参考资料(文档)

http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URI.html

http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html

URLEncoder.encode和URLDecoder.decode深入分析:

URLEncoder和URLDecoder的关系,就像是加密和解密的关系。URLEncoder是转码,URLDecoder是解码。中文在一些情况下是乱码,需要转码。此时需要使用URLEncoder转码,一般是转成%AB%FG%UF(这个只是例子)这样的形式。而读取的时候需要从%AB%FG%UF这种形式解码成正常的中文,此时使用URLDecoder。

Uri.decode和Uri.encode深入分析:

参考资料:http://blog.csdn.net/caowenbin/article/details/8461598

encode:将string编码,会将“:”“/”"?""#"等特殊符号按照特定规则编码。这样做的可能是系统需要,比如下面要说的数据分段

decode:将数据解码,和encode是对应的

URL Decoder/Encoder转换工具:http://meyerweb.com/eric/tools/dencoder/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 12:45:14

Android URI和URL和URN的区别的相关文章

URI、URL与URN的区别

URI.URL与URN的区别 URI:Uniform Resource Identifier,统一资源标识符: URL:Uniform Resource Locator,统一资源定位符: URN:Uniform Resource Name,统一资源名称. 联系:URL,URN是URI的子集. Web上地址的基本形式是URI,它代表统一资源标识符.有两种形式: URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器. URN:URL的一种更新形式,统一资源名称(URN, Uniform

URI和URL及URN的区别

对于URL,大家都比较熟悉,其他两个词就比较陌生了.URI.URL和URN是识别.定位和命名互联网上的资源的标准途径.1989年Tim Berners-Lee发明了互联网(World Wide Web).WWW被认为是全球互连的实际的和抽象的资源的集合–它按需求提供信息实体–通过互联网访问.实际的资源的范围从文件到人,抽象的资源包括数据库查询. 因为要通过多样的方式识别资源(人的名字可能相同,然而计算机文件只能通过唯一的路径名称组合访问),所以需要标准的识别WWW资源的途径.为了满足这种需要,T

uri,url和urn的区别

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

URI、URL、URN区别和联系

URI,URL,URN 从上面的那幅图可以看出来,一共有三个不同的概念URI,URL,URN.这讨论这样的问题时,最好的方法就是回到原点啊,这里我们在RFC 3986: Uniform Resource Identifier (URI): Generic Syntax里面收集了点资料: "A Uniform Resource Identifier (URI) 是一个紧凑的字符串用来标示抽象或物理资源." "A URI 可以进一步被分为定位符.名字或两者都是. 术语"

URI,URL,URN

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

URI、URL、URN介绍

注:1. 仅从http(Hypertext Transfer Portocol)角度阐述,不涉及语言层面的类库. 2. 以下内容均参考<Http权威指南>一书. 一.万维网构成 Web内容都是存储在Web服务器上的.Web服务器所使用的是HTTP 协议,因此经常会被称为HTTP服务器.这些HTTP 服务器存储了因特网中的数据,如果HTTP 客户端发出请求的话,它们会提供数据.客户端向服务器发送HTTP 请求,服务器会在HTTP 响应中回送所请求的数据,参看下图: HTTP请求向Web服务器请求

HTTP从入门到入土(4)——URI、URL和URN

URI URI全称:Uniform Resource Identifier,中文名为统一资源标识符.用来标识唯一标识互联网上的信息资源. Web上可用的所有资源,比如html.图像.视频等,都是由URI进行标识. URI包括URL和URN. URL URL全称:Uniform Resource Locator,中文名为统一资源定位器.URL是一种具体的URI,是对从互联网上得到的资源的位置和访问方法的一种简洁表示.即相比一般URI,URL不仅可以标识一个资源,还指明了如何定位这个资源. URL一

URI、URL、URN

URI:统一资源标识符(Uniform Resource Identifier).是一个通用的概念. URL:统一资源定位符(Uniform Resource Locator).表示资源在服务器中的实际地址. URN:统一资源名(Uniform Resource Name).为对象提供一个稳定的名称. URI 一类通用的资源标识符.由两个主要子集 URL 和 URN 构成. URL URL提供了统一的命名方式:"方案://服务器位置/路径" (如 http://www.baidu.co

URI、URL 和 URN

URI 是统一资源 标识符,而 URL 是统一资源 定位符.因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL.这是因为 URI 还包括一个子类,即统一资源 名称 (URN),它命名资源但不指定如何定位资源.上面的 mailto. news 和 isbn URI 都是 URN 的示例. URI 和 URL 概念上的不同反映在此类和 URL 类的不同中. 此类的实例代表由 RFC 2396 定义的语法意义上的一个 URI 引用.URI 可以是绝对的,也可以是相对的.对