1. 程式人生 > >IT兄弟連 JavaWeb教程 URI、URL

IT兄弟連 JavaWeb教程 URI、URL

html 組成 數值 res 字符串 itxdl 路徑 Locator 錯誤

URI介紹

URI(Uniform Resource Identifier),是統一資源標識符的縮寫,是一個用於標識某一個Web資源名稱的字符串,該標識允許用戶對任何資源通過特定的協議進行交互。Web上可用的每種資源,如:HTML、圖像、視頻和音樂等資源,都由一個統一資源標識符進行標識。URI一般由三部分組成:

● 訪問資源的命名機制

● 存放資源的主機名

● 資源自身的名稱,由路徑標識,著重強調於資源

URL介紹

URL(Uniform Resource Locator),統一資源定位符的縮寫,URL是一種特殊類型的URI,包含了用於查找某個資源的全部信息。URL一般由三部分組成:

● 協議類型

● 主機的IP地址(可以包含端口號)

● 資源路徑

HTTP之URL

HTTP使用統一資源定位符URL來傳輸數據和建立連接,以下面這個URL為例,為大家介紹下URL的各部分組成:

http://www.itxdl.cn:8080/news/index.jsp?boardID=5&ID=24618&page=1#name

從上面的URL中可以看出,一個完整的URL包括以下幾部分:

● 協議部分:該URL的協議部分為“http”,這代表網頁使用的是HTTP協議,在Web中可以使用多種協議,如HTTP、FTP等等,在協議後面的“//”為分隔符。

● 域名部分:該URL的域名部分為www.itxdl.cn。一個URL中,也可以使用IP地址作為域名使用。

● 端口部分:跟在域名後面的是端口號,域名和端口號之間使用“:”作為分隔符。端口號不是一個URL必須的部分,如果省略端口號部分,將采用默認端口號。

● 虛擬目錄部分:從域名後的第一個“/”開始到最後一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分,本例中的虛擬目錄是“/news/”。

● 文件名部分:從域名後的最後一個“/”開始到“?”位置,是文件名部分,如果沒有“?”,則從域名後的最後一個“/”開始到“#”位置,是文件名部分,如果沒有“?”和“#”,那麽從域名的最後一個“/”開始到結束,都是文件名部分。本例中的文件名是“index.jsp”。文件名也不是一個URL必須的部分,如果省略該部分,則使用默認的文件名。

● 錨部分:從“#”開始到最後,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分。

● 參數部分:從“?”開始到“#”為止之間的部分為參數部分,又稱搜索部分、查詢部分。本例中的參數部分為“boardID=5&ID=24618&page=1”。參數可以允許有多個參數,參數與參數之間用“&”作為分隔符。

URL編碼

如果一樣東西需要編碼,那麽就說明這樣的東西並不適合進行傳輸。原因是多種做樣的,如長度過大,包含隱私數據等,對於URL來說,之所以要進行編碼,是因為URL中有些字符會引起歧義。

例如,URL中的參數使用key=value鍵值對這樣的形式來傳參,鍵值對之間以&符號分隔,如username=snape&password=123,但是如果value中的字符串包含了=或&,那麽一定會造成接收URL的服務器解析錯誤,因此必須將引起歧義的字符進行轉義,也就是進行編碼。

又如,URL中的編碼格式采用的是ASCII碼,而不是Unicode,也就是說不能在URL中包含任何非ASCII字符,例如中文。

在URL中是使用百分號編碼的形式對中文進行編碼的,因為使用百分號編碼的方式非常簡單,使用%加上兩位十六進制數值即可。URL編碼默認使用的字符集是US-ASCII,例如a在US-ASCII碼中對應的十六進制形式是0x61,那麽URL編碼之後得到的就是%61,我們在瀏覽器地址欄中輸入https://www.baidu.com/s?wd=%61,實際上就等同於在百度中搜索a了。

對於非ASCII字符,需要使用ASCII字符集的超集進行編碼得到相應的十六進制數值,然後對每個字符執行百分號編碼。對於Unicode字符,使用utf-8對其進行編碼得到相應的十六進制數值,然後對每個字節執行百分號編碼,如“中文”使用utf-8字符集得到的十六進制形式為“0xE4 0xB8 0xAD 0xE6 0x96 0x87”,經過“URL”編碼之後得到"%E4%B8%AD%E6%96%87"。

IT兄弟連 JavaWeb教程 URI、URL