Java網絡編程之URI、URL研究(上)

1989年Tim Berners-Lee發明了互聯網(World Wide Web)。WWW被認為是全球互連的實際的和抽象的資源的集合--它按需求提供信息實體--通過互聯網訪問。實際的資源的范圍從文件到人,抽象的資源包括數據庫查詢。因為要通過多樣的方式識別資源(人的名字可能相同,然而計算機文件只能通過唯一的路徑名稱組合訪問),所以需要標準的識別WWW資源的途徑。為了滿足這種需要,Tim Berners-Lee引入了標準的識別、定位和命名的途徑:URI、URL和URN。
URI、URL和URN是什么?
體系中的URI、URL和URN是彼此關聯的。URI的范疇位于體系的頂層,URL和URN的范疇位于體系的底層。這種排列顯示URL和URN都是URI的子范疇,如圖1所示:

圖1:URI、URL和URN之間的層次關系。URL和URN是URI的子范疇。
URI表示的是統一的資源標識,它是以某種統一的(標準化的)方式標識資源的簡單字符串。典型情況下,這種字符串以scheme(命名URI的名字空間的標識符--一組相關的名稱)開頭,語法如下:
[scheme:] scheme-specific-part
URI以scheme和冒號開頭。Scheme用大寫/小寫字母開頭,后面為空或者跟著更多的大寫/小寫字母、數字、加號、減號和點號。冒號把scheme與scheme-specific-part分開了,并且scheme-specific-part的語法和語義(意思)由URI的名字空間決定。其中一個例子是http://www.cnn.com,其中http是scheme,//http://www.cnn.com是 scheme-specific-part,并且它的scheme與scheme-specific-part被冒號分開了。
我們可以把URI按照絕對的或相對的分類。絕對的URI指以scheme(后面跟著冒號)開頭的URI。前面提到的http://www.cnn.com就是絕對的URI的一個例子,其它的例子還有mailto:jeff@javajeff.com、news:comp.lang.java.help和xyz://whatever。你可以把絕對的URI看作是以某種方式引用某種資源,而這種方式對標識符出現的環境沒有依賴。如果使用文件系統作類比,絕對的URI類似于從根目錄開始的某個文件的路徑。與絕對的URI不同的,相對的URI不是以scheme(后面跟著冒號)開始的URI。它的一個例子是articles/articles.html。你可以把相對的URI看作是以某種方式引用某種資源,而這種方式依賴于標識符出現的環境。如果用文件系統作類比,相對的URI類似于從當前目錄開始的文件路徑。