URI和URL區(qū)別

學(xué)了這么多年了裁厅,今天大概了解他倆的區(qū)別:

URI>URL,即URI包括URL,URI的組成部分包括URL和URN

URI:Universal Resource Identifier(統(tǒng)一資源標(biāo)志符),用來(lái)標(biāo)識(shí)抽象或物理資源的一個(gè)緊湊字符串

URL:Universal Resource Locator(統(tǒng)一資源定位符),一種定位資源的主要訪問(wèn)機(jī)制的字符串,一個(gè)標(biāo)準(zhǔn)的URL必須包括:protocol扇调、host、port抢肛、path狼钮、parameter碳柱、anchor。

URN :Universal Resource Name 統(tǒng)一資源名稱熬芜,通過(guò)特定命名空間中的唯一名稱或ID來(lái)標(biāo)識(shí)資源莲镣。


舉個(gè)栗子:

個(gè)人的身份證號(hào)就是URN,個(gè)人的家庭地址就是URL涎拉,URN可以唯一標(biāo)識(shí)一個(gè)人瑞侮,而URL可以告訴郵遞員怎么把貨送到你手里。

再舉個(gè)栗子:

http://blog.csdn.net/koflance是個(gè)URL鼓拧,通過(guò)這個(gè)網(wǎng)址可以告訴CDN找到我的博客所在地半火,并且還告訴用HTTP協(xié)議訪問(wèn),而isbn:0-395-36341-1是RUN季俩,一個(gè)國(guó)際標(biāo)準(zhǔn)書號(hào)钮糖,可以唯一確定哪本書。

目前HTTP規(guī)范已經(jīng)不使用URL酌住,而是使用URI了店归,所以大家還是用URI吧,準(zhǔn)沒錯(cuò)消痛!

HTTP relies upon the Uniform Resource Identifier (URI) standard

[RFC3986] to indicate the target resource (Section 5.1) and

relationships between resources.

Java中的URI和URL組件


URI組件

該類是不可變類(Instances of this class are immutable),提供了用于從其組成部分或通過(guò)解析其字符串形式創(chuàng)建 URI 實(shí)例的構(gòu)造方法都哭、用于訪問(wèn)實(shí)例的各個(gè)不同組成部分的方法,以及用于對(duì) URI 實(shí)例進(jìn)行規(guī)范化质涛、解析和相對(duì)化的方法。

在java的uri類中汇陆,將URI字符串分為絕對(duì)RUI和相對(duì)URI带饱,或者不透明URI(opaque uri)和分層URI(hierarchical uri)。其中勺疼,不透明 URI 為絕對(duì) URI教寂,且不透明的URI無(wú)法解析酪耕,例如:mailto:java-net@java.sun.com 、news:comp.lang.java轨淌、urn:isbn:096139210x看尼,而分層URI即可以為絕對(duì)URI,也可以是相對(duì)URI藏斩,例如http://java.sun.com/j2se/1.3/ 是絕對(duì)URI,而../../../demo/jfc/SwingSet2/src/SwingSet2.java是相對(duì)URI却盘。

分層URI

其結(jié)構(gòu)為:[ scheme :][ // authority][ path][ ? query][ # fragment]

scheme與fragment部分是授權(quán)組成部分狰域,可以基于服務(wù),也可以基于注冊(cè)表黄橘,常見的是基于服務(wù)兆览,格式為:[ user-info @] host[ : port]

在給定實(shí)例中,任何特殊組成部分都或者為未定義的塞关,或者為已定義的抬探,并且有不同的值。未定義的字符串組成部分由 null 表示描孟,未定義的整數(shù)組成部分由 -1 表示驶睦。

常用方法

URI normalize()? ? //規(guī)范化此URI的路徑。(規(guī)范化: 將分層 URI 的路徑組成部分中的不必要的 "." 和 ".." 部分移除的過(guò)程匿醒。每個(gè) "." 部分都將被移除场航。".." 部分也被移除,除非它前面有一個(gè)非 ".." 部分廉羔。規(guī)范化對(duì)不透明 URI 不產(chǎn)生任何效果溉痢。)

URI relativize(URI uri)? ? //根據(jù)此 URI 將給定 URI 相對(duì)化。

URI parseServerAuthority()? ? //嘗試將此 URI 的授權(quán)組成部分(如果已定義)解析為用戶信息憋他、主機(jī)和端口組成部分孩饼。

URI resolve(URI uri)? ? //根據(jù)此 URI 解析給定的 URI。

URI resolve(String str)? ? //解析給定的字符串竹挡,然后在此 URI 的基礎(chǔ)上構(gòu)造一個(gè)新的 URI镀娶。 此方法與進(jìn)行 resolve(URI.create(str)) 的作用相同。



URL組件

提供了解析URL的功能揪罕,可以將URL解析成一個(gè)結(jié)構(gòu)化的數(shù)據(jù)梯码,并提供了簡(jiǎn)單的查找主機(jī)和打開到指定資源的連接之類的網(wǎng)絡(luò) I/O 操作。

第一個(gè)示例:

URL url = new URL("http://www.baidu.com");

//打開到此 URL 的連接并返回一個(gè)用于從該連接讀入的 InputStream好啰。

InputStream in = url.openStream();// 其內(nèi)部也調(diào)用了openConnection()

ByteArrayOutputStream output = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int len = -1;

// 讀取內(nèi)容不含響應(yīng)頭

while ((len = in.read(buffer)) != -1)

{

? output.write(buffer, 0, len);

}

System.err.println(new String(output.toByteArray()));

控制臺(tái)打印內(nèi)容:

<!DOCTYPE html> <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下轩娶,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新聞</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地圖</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>視頻</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>貼吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登錄</a> </noscript> <script>document.write('<a + encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登錄</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多產(chǎn)品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>關(guān)于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必讀</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意見反饋</a>&nbsp;京ICP證030173號(hào)&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>


第二個(gè)示例:


// 方法一

URL url = new URL("http://www.sina.com.cn");

URLConnection urlcon = url.openConnection();

InputStream is = urlcon.getInputStream();

// 方法二

URL url = new URL("http://www.yhfund.com.cn");

HttpURLConnection urlcon = (HttpURLConnection)url.openConnection();

InputStream is = urlcon.getInputStream();

//方法三

URL url = new URL("http://www.yhfund.com.cn");

InputStream is = url.openStream();

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市框往,隨后出現(xiàn)的幾起案子鳄抒,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件许溅,死亡現(xiàn)場(chǎng)離奇詭異瓤鼻,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)闹司,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門娱仔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人游桩,你說(shuō)我怎么就攤上這事牲迫〗栉裕” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵陪每,是天一觀的道長(zhǎng)镰吵。 經(jīng)常有香客問(wèn)我,道長(zhǎng)盼产,這世上最難降的妖魔是什么勺馆? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任草穆,我火速辦了婚禮,結(jié)果婚禮上悲柱,老公的妹妹穿的比我還像新娘。我一直安慰自己跑芳,他們只是感情好直颅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布功偿。 她就那樣靜靜地躺著械荷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吨瞎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天字旭,我揣著相機(jī)與錄音遗淳,去河邊找鬼心傀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛脂男,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弃甥,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼潘飘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼掉缺!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起艰毒,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤搜囱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绊汹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扮宠,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年薄腻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了届案。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尽纽,死狀恐怖球碉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挎春,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布直奋,位于F島的核電站脚线,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏邮绿。R本人自食惡果不足惜攀例,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一粤铭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梆惯,春花似錦、人聲如沸凹髓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蝗敢。三九已至寿谴,卻和暖如春失受,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拂到。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工兄旬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人领铐。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓绪撵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親音诈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • uri :統(tǒng)一資源標(biāo)識(shí)符褥傍,自己定位的路徑url:統(tǒng)一資源定位符谒兄,路徑
    皓皓amous閱讀 669評(píng)論 0 0
  • (原話)談?wù)剬?duì)HTTP協(xié)議的理解:超文本傳輸協(xié)議燕鸽,應(yīng)用于OSI網(wǎng)絡(luò)模型中的應(yīng)用層,是用于服務(wù)器傳輸超文本到本地瀏覽...
    24_yu閱讀 887評(píng)論 0 1
  • 吶吶吶....親愛的各位小伙伴們御滩,今天我又要來(lái)出洋相了,本渣渣媛通過(guò)自己血與淚的教訓(xùn)削解,希望幫助跟我一樣的渣友少走彎...
    炒雞可耐的小葵花閱讀 1,938評(píng)論 3 5
  • 作者:錢小錢 鏈接:https://www.zhihu.com/question/19557151/answer/...
    我和咖啡閱讀 501評(píng)論 0 0
  • 對(duì)于URL,大家都比較熟悉氛驮,其他兩個(gè)詞就比較陌生了。URI矫废、URL和URN是識(shí)別、定位和命名互聯(lián)網(wǎng)上的資源的標(biāo)準(zhǔn)途...
    小明yz閱讀 609評(píng)論 0 0