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

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

  1. URI与URL的区别

    (原网址:http://zhidao.baidu.com/question/38764759.html) Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通过通用资源标志符 ...

  2. URI跟URL的区别

    关于URL和URI的区别,个人见解.    初学java,最近被一个概念搞得头晕脑胀,就是url和uri的概念和区别,网上查了一大通,发现各种回答眼花缭乱,有百科直接粘贴的,有胡说八道的,有故意绕来绕 ...

  3. Web基础-Uri跟Url的区别

    关于URL和URI的区别,个人见解.    初学java,最近被一个概念搞得头晕脑胀,就是url和uri的概念和区别,网上查了一大通,发现各种回答眼花缭乱,有百科直接粘贴的,有胡说八道的,有故意绕来绕 ...

  4. 【思考】URI和URL的区别?以及URL的结构

    URI = Universal Resource Identifier URL = Universal Resource Locator 在学习中,我们难免会遇到 URI 和 URL,有时候都傻傻分不 ...

  5. [转载] HTTP 协议中 URI 和 URL 的区别

    出处:https://blog.csdn.net/qq_26975307/article/details/54429760 HTTP = Hyper Text Transfer ProtocolURI ...

  6. URI和URL的区别

    这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgU ...

  7. uri 和 url 的区别

    uri 统一资源标识符,值是唯一标识资源的任意字符,比如guid url 统一资源定位符,值是标识资源的字符串,但是包含定位信息,比如http://localhost/index.html

  8. (转)URI与URL的区别

    这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgU ...

  9. android里uri和url的区别

    URI :是从虚拟根路径开始的 URI,是uniform resource identifier URL:是整个链接  URI,是uniform resource location uri:file: ...

  10. URI和URL的区别 一起学习呗

    一直存在很多技术上的争论,其中最为妙的恐怕就是web地址应该叫什么的问题.通常情况就是这样:有人把地址栏的内容叫"URL",这时候有些人就来劲了:"不!其实那就是URI. ...

随机推荐

  1. 5 系统的软中断CPU升高,一般处理办法?

    还是需要多动手,一个一个问题个被get!

  2. 快速排序详解(C语言/python)

    快速排序详解 介绍: 快速排序于C. A. R. Hoare在1960年提出,是针对冒泡排序的一种改进.它每一次将需要排序的部分划分为俩个独立的部分,其中一个部分的数比的数都小.然后再按照这个方法对这 ...

  3. jquery插件实现瀑布流

    jquery插件实现瀑布流<!DOCTYPE html><html lang="en"><head> <meta charset=&quo ...

  4. SQL Server ----- 还原数据库,将另一台电脑上的数据库装在本机

    1.创建好数据库,记住安装位置,,和需要还原的数据库的位置 还原数据库的意思就是 根据创建的数据库,还原备份的数据库,如果数据库中没有数据库要新建数据库. 2.进来后如图 3.找你需要的还原数据库的位 ...

  5. ImageView基本用法

    1.background通常指的都是背景,而src指的是内容. 2.当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸. 3.scaleType缩放类型设置: fitXY:对图像的横向与纵 ...

  6. 阿里云CentOS服务器下安装Golang1.13并配置代理

    注:root账户或添加sudo命令运行. 下载到/usr/local位置并解压 cd /usr/local wget https://studygolang.com/dl/golang/go1.13. ...

  7. Python数组操作将一维数组变成二维数组

    一.问题 我们在进行数组操作的时候会遇到将一个低维的数组变成一个高维的素数组 二.解决 第一种方法基本思路就是将低维数组进行等长的循环,在第一次为零的情况下,需要添加一个[]数组,原因是将它的基本框架 ...

  8. JAVA8的java.util.function包 @FunctionalInterface

    1 函数式接口java.util.function https://www.cnblogs.com/CobwebSong/p/9593313.html 2 JAVA8的java.util.functi ...

  9. 基于百度地图JavaScript API,员工住址统计

    公司一般都有通讯和住址的统计,但是文字化的表格根本就不知道住在哪. 用百度地图就可以轻松解决, 而且公司还经常人员变动,读取excel中的内容,就不用每次还要更改地图文件了. 在遇到需要聚餐在地图中标 ...

  10. SUSE12Sp3-使用Docker导入镜像并安装redis,zookeeper,kafka

    首先在另外一台联网电脑拉取最新的redis,zookeeper,kafka镜像 docker pull redis docker pull zookeeper docker pull wurstmei ...