熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java網絡編程之URI、URL研究專題一(圖)

2022-06-13   來源: Java核心技術 

  URIURL和URN是識別定位和命名互聯網上的資源的標准途徑本文分析了URIURL和URN和Java API的URI和URL類(以及與URL相關的類)並演示了如何在程序中使用這些類
  
  年Tim BernersLee發明了互聯網(World Wide Web)WWW被認為是全球互連的實際的和抽象的資源的集合它按需求提供信息實體通過互聯網訪問實際的資源的范圍從文件到人抽象的資源包括數據庫查詢
  
  因為要通過多樣的方式識別資源(人的名字可能相同然而計算機文件只能通過唯一的路徑名稱組合訪問)所以需要標准的識別WWW資源的途徑為了滿足這種需要Tim BernersLee引入了標准的識別定位和命名的途徑URIURL和URN
  
  URIURL和URN是什麼?
  
  體系中的URIURL和URN是彼此關聯的URI的范疇位於體系的頂層URL和URN的范疇位於體系的底層這種排列顯示URL和URN都是URI的子范疇如圖所示
  

  圖URIURL和URN之間的層次關系URL和URN是URI的子范疇
  
  URI表示的是統一的資源標識它是以某種統一的(標准化的)方式標識資源的簡單字符串典型情況下這種字符串以scheme(命名URI的名字空間的標識符一組相關的名稱)開頭語法如下
  
  [scheme:] schemespecificpart
  
  URI以scheme和冒號開頭Scheme用大寫/小寫字母開頭後面為空或者跟著更多的大寫/小寫字母數字加號減號和點號冒號把scheme與schemespecificpart分開了並且schemespecificpart的語法和語義(意思)由URI的名字空間決定
  
  其中一個例子是其中http是scheme//是 schemespecificpart並且它的scheme與schemespecificpart被冒號分開了
  
  我們可以把URI按照絕對的或相對的分類絕對的URI指以scheme(後面跟著冒號)開頭的URI前面提到的就是絕對的URI的一個例子其它的例子還有mailto:news:complangjavahelp和xyz://whatever你可以把絕對的URI看作是以某種方式引用某種資源而這種方式對標識符出現的環境沒有依賴
  
  如果使用文件系統作類比絕對的URI類似於從根目錄開始的某個文件的路徑與絕對的URI不同的相對的URI不是以scheme(後面跟著冒號)開始的URI
  
  它的一個例子是articles/l你可以把相對的URI看作是以某種方式引用某種資源而這種方式依賴於標識符出現的環境如果用文件系統作類比相對的URI類似於從當前目錄開始的文件路徑
  
  URI可以進一步分為不透明的和分層的兩類不透明的URI指schemespecificpart不是以正斜槓(/)開頭的絕對的URI
  
  其例子有news:complangjava和前面的mailto:不透明的URI並不是用於分解的(超出了識別scheme的范疇)因為不需要驗證schemespecificpart的有效性與它不同的是分層的URI可以是以正斜槓開頭的絕對的URI或相對的URL
  
  與不透明的URI不同分層的URI的schemespecificpart必須被分解為幾個組成部分這些組成部分是什麼?分層的URI標識組件的普通子集的schemespecificpart符合下面的語法
  
  [//authority] [path] [?query] [#fragment]
  
  可選的authority組件標識了該URI名字空間的命名機構如果有這一部分它就是以一對正斜槓開始的它可以是基於服務器或基於注冊的並且它以後面的正斜槓問號或沒有其它符號結束基於注冊的授權機構組件有特定大綱的語法(本文沒有討論因為很少使用它)而基於服務器的授權機構組件的語法如下
  
  [userinfo@] host [:port]
  
  按照這種語法基於服務器的授權機構組件可以隨意的以用戶信息(例如用戶名)開始後面跟著一個@符號緊接著是主機的名稱以及冒號和端口號例如:就是一個基於服務器的授權機構組件其中jeff包含了用戶信息包含了主機包含了端口
  
  可選的path組件根據授權機構組件(如果提供了)或大綱(如果沒有授權機構組件)識別資源的定位(或位置)路徑(path)可以分成一系列的路徑片斷(path segment)每個路徑片斷使用正斜槓與其它的路徑片斷隔開
  
  如果路徑的第一個路徑片斷以一個正斜槓開始該路徑就被認為是絕對的否則路徑就被認為是相對的例如/a/b/c由三個路徑片斷ab和c組成了一個路徑此外這個路徑是絕對的因為第一個路徑片斷(a)的前綴是正斜槓
  
  可選的query組件識別要傳遞給某種資源的數據這種資源使用該數據獲取或生成其它的傳遞回調用者的數據例如 x=y就是一個查詢(query)在這個查詢中x=y是傳遞給某種資源的數據x是某種實體的名稱y是該實體的值
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26272.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.