Java對URL和URI的區分

從JDK1.4開始,java.net包對統一資源定位符(uniform resource locator URL)和統一資源標識符(uniform resource identifier URI)作了非常有用的區分。

URI是個純粹的句法結構,用於指定標識Web資源的字符串的各個不同部分。URL是URI的一個特例,它包含了定位Web資源的足夠信息。其他URI,比如:

mailto:[email protected]

則不屬於定位符,因爲根據該標識符無法定位任何資源。像這樣的URI我們稱之爲URN(統一資源名稱)。

在Java類庫中,URI類不包含任何訪問資源的方法,它唯一的作用就是解析。相反的是,URL類可以打開一個到達資源的流。因此URL類只能作用於那些Java類庫知道該如何處理的模式,例如:http:,https:,ftp:,本地文件系統(file:),和Jar文件(jar:)。

URI類的作用之一是解析標識符並將它們分解成各個不同的組成部分。你可以用以下方法讀取它們:

getSchema

getHost

getPort

getPath

getQuery

URI類的另一個作用是處理絕對標識符和相對標識符。如果存在一個如下的絕對URI:

http://docs.mycompany.com/api/java/net/serversocket.html

和一個如下的相對URI:

../../java/net/socket.html#Socket()

那麼你可以將它們合併成一個絕對URI:

http://docs.mycompany.com/api/java/net/socket.html#Socket()

這個過程被稱爲相對URL的轉換。

與此相反的過程成爲相對化。例如:假設你有一個基本URI:

http://docs.mycompany/api

和另一個URI:

http://docs.mycompany/api/java/lang/String.html

那麼相對化後的URI就是:

java/lang/String.html

 

發佈了33 篇原創文章 · 獲贊 0 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章