W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---java.net.URI
public final class URI
extends Object
implements Comparable<URI>, Serializable
表示統(tǒng)一資源標識符 (URI) 引用。
除了下面提到的一些小偏差之外,此類的一個實例表示由 RFC 2396 定義的 URI 引用:統(tǒng)一資源標識符 (URI):通用語法,由 RFC 2732 修訂:URL 中文字 IPv6 地址的格式。 Literal IPv6 地址格式也支持 scope_ids。 此處描述了 scope_ids 的語法和用法。 此類提供了用于從其組件或通過解析其字符串形式創(chuàng)建 URI 實例的構造函數(shù)、用于訪問實例的各種組件的方法,以及用于規(guī)范化、解析和相對化 URI 實例的方法。 此類的實例是不可變的。
URI 語法和組件 在最高級別,字符串形式的 URI 引用(以下簡稱“URI”)具有以下語法
[scheme:]scheme-specific-part[#fragment]
其中方括號 [...] 描述可選組件,字符 : 和 # 代表它們自己。
絕對 URI 指定方案; 一個非絕對的 URI 被稱為是相對的。 URI 還根據(jù)它們是不透明的還是分層的進行分類。
不透明 URI 是絕對 URI,其特定于方案的部分不以斜杠字符 ('/') 開頭。 不透明的 URI 不受進一步解析的影響。 不透明 URI 的一些示例是:
分層 URI 要么是絕對 URI,其特定于方案的部分以斜杠字符開頭,要么是相對 URI,即不指定方案的 URI。 分層 URI 的一些示例是:
http://java.sun.com/j2se/1.3/ docs/guide/collections/designfaq.html#28 ../../../demo/jfc/SwingSet2/src/SwingSet2.java file:///~/calendar
分層 URI 需要根據(jù)語法進行進一步解析
scheme:path[#fragment]
其中字符 :、/、? 和 # 代表它們自己。 分層 URI 的特定于方案的部分由方案和片段組件之間的字符組成。
如果指定,分層 URI 的權限組件是基于服務器的或基于注冊表的。 基于服務器的權限根據(jù)熟悉的語法進行解析
[user-info@]host[:port]
其中字符 @ 和 : 代表它們自己。目前使用的幾乎所有 URI 方案都是基于服務器的。不以這種方式解析的權限組件被認為是基于注冊表的。
如果分層 URI 的路徑組件以斜杠字符 ('/') 開頭,則它本身就是絕對的;否則是相對的。分層 URI 的路徑要么是絕對的,要么是指定權限的,它始終是絕對的。
總而言之,一個 URI 實例有以下九個組成部分:
在給定的實例中,任何特定組件要么未定義,要么具有不同的值。未定義的字符串組件由 null 表示,而未定義的整數(shù)組件由 -1 表示??梢詫⒆址M件定義為將空字符串作為其值;這不等于未定義該組件。
特定組件是否在實例中定義取決于所表示的 URI 的類型。絕對 URI 有一個方案組件。一個不透明的 URI 有一個方案、一個特定于方案的部分,可能還有一個片段,但沒有其他組件。分層 URI 總是有一個路徑(盡管它可能是空的)和一個特定于方案的部分(至少包含路徑),并且可能有任何其他組件。如果權限組件存在并且是基于服務器的,那么將定義主機組件并且可以定義用戶信息和端口組件。
URI 實例上的操作 此類支持的關鍵操作是規(guī)范化、解析和相對化。
規(guī)范化是刪除不必要的“?!钡倪^程。和“..”來自分層 URI 的路徑組件的段。每個 ”?!倍伪缓唵蔚貏h除。僅當“..”段前面有非“..”段時,才會刪除“..”段。規(guī)范化對不透明的 URI 沒有影響。
解析是根據(jù)另一個基本 URI 解析一個 URI 的過程。生成的 URI 以 RFC 2396 指定的方式由兩個 URI 的組件構成,從原始 URI 中獲取未指定的組件。對于分層 URI,原始路徑會根據(jù)基路徑解析,然后進行規(guī)范化。例如:
docs/guide/collections/designfaq.html#28 (1)
針對基礎 URI http://java.sun.com/j2se/1.3/ 是結果 URI
https://docs.oracle.com/javase/1.3/docs/guide/collections/designfaq.html#28
解析相對 URI
../../../demo/jfc/SwingSet2/src/SwingSet2.java (2)
反過來,與這個結果相反,
http://java.sun.com/j2se/1.3/demo/jfc/SwingSet2/src/SwingSet2.java
支持對絕對和相對 URI 的解析,以及在分層 URI 的情況下對絕對和相對路徑的解析。 根據(jù)任何其他 URI 解析 URI file:///~calendar 只會產(chǎn)生原始 URI,因為它是絕對的。 將上面的相對 URI (2) 與相對基本 URI (1) 解析會產(chǎn)生規(guī)范化但仍然是相對的 URI
demo/jfc/SwingSet2/src/SwingSet2.java
最后,相對化是解析的倒數(shù):對于任何兩個標準化的 URI u 和 v,
u.relativize(u.resolve(v)).equals(v) and u.resolve(u.relativize(v)).equals(v) .
在構建包含 URI 的文檔時,此操作通常很有用,這些 URI 必須盡可能與文檔的基本 URI 相關。 例如,將 URI 相對化
https://docs.oracle.com/javase/1.3/docs/guide/index.html
針對基礎 URI
產(chǎn)生相對 URI docs/guide/index.html。 字符類別 RFC 2396 準確地指定了在 URI 引用的各種組件中允許使用的字符。 以下類別(其中大部分來自該規(guī)范)用于描述這些約束:
所有合法 URI 字符的集合由未保留、保留、轉義和其他字符組成。
轉義八位組、引用、編碼和解碼 RFC 2396 允許轉義八位組出現(xiàn)在用戶信息、路徑、查詢和片段組件中。 轉義在 URI 中有兩個目的:
這些目的在此類中通過三個相關操作來實現(xiàn):
這些操作在該類的構造函數(shù)和方法中暴露如下:
身份 對于任何 URI u,總是這樣
new URI(u.toString()).equals(u) .
對于任何不包含冗余語法的 URI u,例如空權限前的兩個斜杠(如 file:///tmp/ 中)或主機名后的冒號但沒有端口(如 http://java.sun. com: ),并且除了必須引用的字符之外不編碼字符,以下標識也成立:
new URI(u.getScheme(),
u.getSchemeSpecificPart(),
u.getFragment())
.equals(u)
在所有情況下,
new URI(u.getScheme(),
u.getUserInfo(), u.getAuthority(),
u.getPath(), u.getQuery(),
u.getFragment())
.equals(u)
如果你是分層的,并且
new URI(u.getScheme(),
u.getUserInfo(), u.getHost(), u.getPort(),
u.getPath(), u.getQuery(),
u.getFragment())
.equals(u)
如果 u 是分層的并且沒有權限或基于服務器的權限。 URI、URL 和 URN URI 是統(tǒng)一資源標識符,而 URL 是統(tǒng)一資源定位符。因此,抽象地說,每個 URL 都是一個 URI,但并不是每個 URI 都是一個 URL。這是因為有另一個 URI 子類別,統(tǒng)一資源名稱 (URN),它命名資源但不指定如何定位它們。上面顯示的 mailto、news 和 isbn URI 是 URN 的示例。
URI 和 URL 之間的概念區(qū)別體現(xiàn)在此類和 URL 類之間的差異上。
此類的實例表示 RFC 2396 定義的句法意義上的 URI 引用。URI 可以是絕對的,也可以是相對的。 URI 字符串根據(jù)通用語法進行解析,而不考慮它指定的方案(如果有)。不執(zhí)行主機查找(如果有的話),也不構造依賴于方案的流處理程序。相等、散列和比較是根據(jù)實例的字符內(nèi)容嚴格定義的。換句話說,URI 實例只不過是一個結構化的字符串,它支持比較、規(guī)范化、解析和相對化的語法、與方案無關的操作。
相比之下,URL 類的實例表示 URL 的句法組件以及訪問它所描述的資源所需的一些信息。 URL 必須是絕對的,也就是說,它必須始終指定一個方案。 URL 字符串根據(jù)其方案進行解析。始終為 URL 建立流處理程序,實際上不可能為沒有可用處理程序的方案創(chuàng)建 URL 實例。相等和散列取決于主機的方案和 Internet 地址(如果有);比較沒有定義。換句話說,URL 是一個結構化的字符串,它支持解析的語法操作以及查找主機和打開到指定資源的連接的網(wǎng)絡 I/O 操作。
構造函數(shù) | 描述 |
---|---|
URI(String str) | 通過解析給定的字符串構造一個 URI。 |
URI(String scheme, String ssp, String fragment) | 從給定的組件構造一個 URI。 |
URI(String scheme, String userInfo, String host, int port, String path, String query, String fragment) | 從給定的組件構造一個分層的 URI。 |
URI(String scheme, String host, String path, String fragment) | 從給定的組件構造一個分層的 URI。 |
URI(String scheme, String authority, String path, String query, String fragment) | 從給定的組件構造一個分層的 URI。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
int | compareTo(URI that) | 將此 URI 與另一個對象進行比較,該對象必須是 URI。 |
static URI | create(String str) | 通過解析給定的字符串創(chuàng)建一個 URI。 |
boolean | equals(Object ob) | 測試此 URI 是否與另一個對象相等。 |
String | getAuthority() | 返回此 URI 的解碼權限組件。 |
String | getFragment() | 返回此 URI 的解碼片段組件。 |
String | getHost() | 返回此 URI 的主機組件。 |
String | getPath() | 返回此 URI 的解碼路徑組件。 |
int | getPort() | 返回此 URI 的端口號。 |
String | getQuery() | 返回此 URI 的解碼查詢組件。 |
String | getRawAuthority() | 返回此 URI 的原始權限組件。 |
String | getRawFragment() | 返回此 URI 的原始片段組件。 |
String | getRawPath() | 返回此 URI 的原始路徑組件。 |
String | getRawQuery() | 返回此 URI 的原始查詢組件。 |
String | getRawSchemeSpecificPart() | 返回此 URI 的原始方案特定部分。 |
String | getRawUserInfo() | 返回此 URI 的原始用戶信息組件。 |
String | getScheme() | 返回此 URI 的方案組件。 |
String | getSchemeSpecificPart() | 返回此 URI 的已解碼方案特定部分。 |
String | getUserInfo() | 返回此 URI 的已解碼用戶信息組件。 |
int | hashCode() | 返回此 URI 的哈希碼值。 |
boolean | isAbsolute() | 說明這個URI是否是絕對的。 |
boolean | isOpaque() | 說明這個URI是否是不透明的。 |
URI | normalize() | 將這個URI的路徑規(guī)范化。 |
URI | parseServerAuthority() | 嘗試將此 URI 的權限組件(如果已定義)解析為用戶信息、主機和端口組件。 |
URI | relativize(URI uri) | 將給定的 URI 與此 URI 相對化。 |
URI | resolve(String str) | 通過解析給定的字符串構造一個新的 URI,然后根據(jù)這個 URI 解析它。 |
URI | resolve(URI uri) | 根據(jù)此 URI 解析給定的 URI。 |
String | toASCIIString() | 將此 URI 的內(nèi)容作為 US-ASCII 字符串返回。 |
String | toString() | 將此 URI 的內(nèi)容作為字符串返回。 |
URL | toURL() | 從此 URI 構造一個 URL。 |
從類 java.lang.Object 繼承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
public URI(String str) throws URISyntaxException
通過解析給定的字符串構造一個 URI。
此構造函數(shù)完全按照 RFC 2396 附錄 A 中的語法指定的方式解析給定的字符串,但以下偏差除外:
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
str | 要解析為 URI 的字符串 |
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 str 為空 |
URISyntaxException | 如果給定的字符串違反了 RFC 2396,由上述偏差增強 |
public URI(String scheme, String userInfo, String host, int port, String path, String query, String fragment) throws URISyntaxException
從給定的組件構造一個分層的 URI。
如果給出了方案,則路徑(如果也給出)必須為空或以斜杠字符 ('/') 開頭。 否則,新 URI 的一個組成部分可以通過為相應的參數(shù)傳遞 null 或在端口參數(shù)的情況下傳遞 -1 來保持未定義。
此構造函數(shù)首先根據(jù) RFC 2396 第 5.2 節(jié)第 7 步中指定的規(guī)則從給定組件構建 URI 字符串:
然后解析生成的 URI 字符串,就像調(diào)用 URI(java.lang.String) 構造函數(shù),然后在結果上調(diào)用 parseServerAuthority() 方法一樣; 這可能會導致拋出 URISyntaxException。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
scheme | 方案名稱 |
userInfo | 用戶名和授權信息 |
host | 主機名 |
port | 端口號 |
path | 路徑 |
query | 查詢 |
fragment | 碎片 |
Throws:
Throw名稱 | Throw描述 |
---|---|
URISyntaxException | 如果同時給出了方案和路徑,但路徑是相對的,如果從給定組件構造的 URI 字符串違反 RFC 2396,或者如果字符串的權限組件存在但不能被解析為基于服務器的權限 |
public URI(String scheme, String authority, String path, String query, String fragment) throws URISyntaxException
從給定的組件構造一個分層的 URI。
如果給出了方案,則路徑(如果也給出)必須為空或以斜杠字符 ('/') 開頭。 否則,通過為相應的參數(shù)傳遞 null 可能會使新 URI 的組件未定義。
此構造函數(shù)首先根據(jù) RFC 2396 第 5.2 節(jié)第 7 步中指定的規(guī)則從給定組件構建 URI 字符串:
然后解析生成的 URI 字符串,就像調(diào)用 URI(java.lang.String) 構造函數(shù),然后在結果上調(diào)用 parseServerAuthority() 方法一樣; 這可能會導致拋出 URISyntaxException。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
scheme | 方案名稱 |
authority | 授權 |
path | 路徑 |
query | 查詢 |
fragment | 碎片 |
Throws:
Throw名稱 | Throw描述 |
---|---|
URISyntaxException | 如果同時給出了方案和路徑,但路徑是相對的,如果從給定組件構造的 URI 字符串違反 RFC 2396,或者如果字符串的權限組件存在但不能被解析為基于服務器的權限 |
public URI(String scheme, String host, String path, String fragment) throws URISyntaxException
從給定的組件構造一個分層的 URI。
通過傳遞 null 可以使組件保持未定義。
這個便利構造函數(shù)就像通過調(diào)用七參數(shù)構造函數(shù)一樣工作,如下所示:
new URI(scheme, null, host, -1, path, null, fragment);
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
scheme | 方案名稱 |
host | 主機名 |
path | 路徑 |
fragment | 碎片 |
Throws:
Throw名稱 | Throw描述 |
---|---|
URISyntaxException | 如果從給定組件構造的 URI 字符串違反 RFC 2396 |
public URI(String scheme, String ssp, String fragment) throws URISyntaxException
從給定的組件構造一個 URI。
通過傳遞 null 可以使組件保持未定義。
此構造函數(shù)首先使用給定的組件構建一個字符串形式的 URI,如下所示:
然后解析生成的 URI 字符串,以創(chuàng)建新的 URI 實例,就像調(diào)用 URI(java.lang.String) 構造函數(shù)一樣; 這可能會導致拋出 URISyntaxException。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
scheme | 方案名稱 |
ssp | 方案特定部分 |
fragment | 碎片 |
Throws:
Throw名稱 | Throw描述 |
---|---|
URISyntaxException | 如果從給定組件構造的 URI 字符串違反 RFC 2396 |
public static URI create(String str)
通過解析給定的字符串創(chuàng)建一個 URI。
這個方便的工廠方法就像調(diào)用 URI(java.lang.String) 構造函數(shù)一樣工作; 構造函數(shù)拋出的任何 URISyntaxException 都會被捕獲并包裝在一個新的 IllegalArgumentException 對象中,然后拋出該對象。
提供此方法用于已知給定字符串是合法 URI 的情況,例如在程序中聲明的 URI 常量,因此如果字符串不這樣解析將被視為編程錯誤。 直接拋出 URISyntaxException 的構造函數(shù)應該用于從用戶輸入或其他可能容易出錯的源構造 URI 的情況。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
str | 要解析為 URI 的字符串 |
返回:
新的 URI
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 str 為空 |
IllegalArgumentException | 如果給定的字符串違反 RFC 2396 |
public URI parseServerAuthority() throws URISyntaxException
嘗試將此 URI 的權限組件(如果已定義)解析為用戶信息、主機和端口組件。
如果這個 URI 的權限組件已經(jīng)被識別為基于服務器的,那么它已經(jīng)被解析為用戶信息、主機和端口組件。在這種情況下,或者如果此 URI 沒有權限組件,則此方法僅返回此 URI。
否則,此方法會再次嘗試將權限組件解析為用戶信息、主機和端口組件,并拋出異常,說明無法以這種方式解析權限組件的原因。
之所以提供此方法,是因為 RFC 2396 中指定的通用 URI 語法不能始終區(qū)分格式錯誤的基于服務器的權限和合法的基于注冊表的權限。因此,它必須將前者的某些實例視為后者的實例。例如,URI 字符串“//foo:bar”中的權限組件不是基于服務器的合法權限,但作為基于注冊表的權限是合法的。
在許多常見情況下,例如當工作 URI 已知為 URN 或 URL 時,所使用的分層 URI 將始終基于服務器。因此,它們必須按原樣解析或視為錯誤。在這些情況下,聲明如
URI u = new URI(str).parseServerAuthority();
可用于確保 u 始終引用一個 URI,如果它具有權限組件,則具有基于服務器的權限以及適當?shù)挠脩粜畔?、主機和端口組件。 調(diào)用此方法還確保如果無法以這種方式解析權限,則可以根據(jù)拋出的異常發(fā)出適當?shù)脑\斷消息。
返回:
一個URI,其權限字段已被解析為基于服務器的權限
Throws:
Throw名稱 | Throw描述 |
---|---|
URISyntaxException | 如果此 URI 的權限組件已定義但不能根據(jù) RFC 2396 解析為基于服務器的權限 |
public URI normalize()
規(guī)范化此 URI 的路徑。
如果這個 URI 是不透明的,或者如果它的路徑已經(jīng)是正常的形式,那么這個 URI 被返回。 否則,將構造一個與此 URI 相同的新 URI,除了它的路徑是通過以符合 RFC 2396,第 5.2 節(jié),第 6 步,子步驟 c 到 f 的方式規(guī)范化此 URI 的路徑來計算的; 那是:
如果在它們之前沒有足夠的非“..”段以允許將其刪除,則規(guī)范化路徑將從一個或多個“..”段開始。 規(guī)范化路徑將以“。”開頭。 如果在上面的步驟 3 中插入了一個片段。 否則,規(guī)范化路徑將不包含任何“?!?或“..”段。
返回:
與此 URI 等效的 URI,但其路徑為正常格式
public URI resolve(URI uri)
根據(jù)此 URI 解析給定的 URI。
如果給定的 URI 已經(jīng)是絕對的,或者如果這個 URI 是不透明的,則返回給定的 URI。
如果給定 URI 的片段組件已定義,其路徑組件為空,并且其方案、權限和查詢組件未定義,則返回具有給定片段但所有其他組件與該 URI 相同的 URI。 這允許表示獨立片段引用的 URI,例如“#foo”,可以有效地針對基本 URI 進行解析。
否則,此方法以與 RFC 2396 第 5.2 節(jié)一致的方式構造新的分層 URI; 那是:
此方法的結果是絕對的,當且僅當此 URI 是絕對的或給定的 URI 是絕對的。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
uri | 要針對此 URI 解析的 URI |
返回:
生成的 URI
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 uri 為空 |
public URI resolve(String str)
通過解析給定的字符串構造一個新的 URI,然后根據(jù)這個 URI 解析它。
這種便捷方法的工作方式就像調(diào)用它等同于評估表達式 resolve(URI.create(str))。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
str | 要解析為 URI 的字符串 |
返回:
生成的 URI
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 str 為空 |
IllegalArgumentException | 如果給定的字符串違反 RFC 2396 |
public URI relativize(URI uri)
將給定的 URI 與此 URI 相對化。
給定 URI 與此 URI 的相對化計算如下:
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
uri | 要針對此 URI 進行相對化的 URI |
返回:
生成的 URI
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果 uri 為空 |
public URL toURL() throws MalformedURLException
從此 URI 構造一個 URL。
這種便捷方法的工作方式就好像調(diào)用它等同于在首先檢查此 URI 是否為絕對值之后評估表達式 new URL(this.toString())。
返回:
從此 URI 構造的 URL
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果此 URL 不是絕對的 |
MalformedURLException | 如果找不到 URL 的協(xié)議處理程序,或者在構造 URL 時發(fā)生了其他錯誤 |
public String getScheme()
返回此 URI 的方案組件。
URI 的方案組件(如果已定義)僅包含字母數(shù)字類別和字符串“-.+”中的字符。 方案總是以字母字符開頭。
URI 的方案組件不能包含轉義的八位字節(jié),因此此方法不執(zhí)行任何解碼。
返回:
此 URI 的方案組件,如果方案未定義,則為 null
public boolean isAbsolute()
判斷這個 URI 是否是絕對的。
當且僅當它具有方案組件時,URI 才是絕對的。
返回:
當且僅當此 URI 是絕對的,則為 true
public boolean isOpaque()
判斷此 URI 是否不透明。
當且僅當 URI 是絕對的并且其特定于方案的部分不以斜杠字符 ('/') 開頭時,URI 才是不透明的。 一個不透明的 URI 有一個方案,一個特定于方案的部分,可能還有一個片段; 所有其他組件都未定義。
返回:
當且僅當此 URI 不透明時才為 true
public String getRawSchemeSpecificPart()
返回此 URI 的原始方案特定部分。 特定于方案的部分永遠不會未定義,盡管它可能為空。
URI 的特定于方案的部分僅包含合法的 URI 字符。
返回:
此 URI 的原始方案特定部分(從不為空)
public String getSchemeSpecificPart()
返回此 URI 的已解碼方案特定部分。
此方法返回的字符串與 getRawSchemeSpecificPart 方法返回的字符串相同,但所有轉義八位字節(jié)序列均已解碼。
返回:
此 URI 的解碼方案特定部分(從不為空)
public String getRawAuthority()
返回此 URI 的原始權限組件。
URI 的權限組件(如果已定義)僅包含商業(yè)字符 ('@') 以及未保留、標點、轉義和其他類別中的字符。 如果權限是基于服務器的,則進一步限制它具有有效的用戶信息、主機和端口組件。
返回:
此 URI 的原始權限組件,如果權限未定義,則為 null
public String getAuthority()
返回此 URI 的解碼權限組件。
此方法返回的字符串與 getRawAuthority 方法返回的字符串相同,但所有轉義八位字節(jié)序列均已解碼。
返回:
此 URI 的已解碼權限組件,如果權限未定義,則為 null
public String getRawUserInfo()
返回此 URI 的原始用戶信息組件。
URI 的用戶信息組件(如果已定義)僅包含未保留、標點、轉義和其他類別中的字符。
返回:
此 URI 的原始用戶信息組件,如果用戶信息未定義,則為 null
public String getUserInfo()
返回此 URI 的已解碼用戶信息組件。
此方法返回的字符串與 getRawUserInfo 方法返回的字符串相同,只是所有轉義的八位字節(jié)序列都被解碼。
返回:
此 URI 的已解碼用戶信息組件,如果用戶信息未定義,則為 null
public String getHost()
返回此 URI 的主機組件。
URI 的主機組件(如果已定義)將具有以下形式之一:
URI 的主機組件不能包含轉義的八位字節(jié),因此此方法不執(zhí)行任何解碼。
返回:
此 URI 的主機組件,如果主機未定義,則為 null
public int getPort()
返回此 URI 的端口號。
URI 的端口組件(如果已定義)是一個非負整數(shù)。
返回:
此 URI 的端口組件,如果端口未定義,則為 -1
public String getRawPath()
返回此 URI 的原始路徑組件。
URI 的路徑組件(如果已定義)僅包含斜杠字符 ('/')、商業(yè)字符 ('@') 以及未保留、標點、轉義和其他類別中的字符。
返回:
此 URI 的路徑組件,如果路徑未定義,則為 null
public String getPath()
返回此 URI 的解碼路徑組件。
此方法返回的字符串與 getRawPath 方法返回的字符串相同,只是所有轉義八位字節(jié)序列都被解碼。
返回:
此 URI 的解碼路徑組件,如果路徑未定義,則為 null
public String getRawQuery()
返回此 URI 的原始查詢組件。
URI 的查詢組件(如果已定義)僅包含合法的 URI 字符。
返回:
此 URI 的原始查詢組件,如果查詢未定義,則為 null
public String getQuery()
返回此 URI 的解碼查詢組件。
此方法返回的字符串與 getRawQuery 方法返回的字符串相同,但所有轉義八位位組序列均已解碼。
返回:
此 URI 的已解碼查詢組件,如果查詢未定義,則為 null
public String getRawFragment()
返回此 URI 的原始片段組件。
URI 的片段組件(如果已定義)僅包含合法的 URI 字符。
返回:
此 URI 的原始片段組件,如果片段未定義,則為 null
public String getFragment()
返回此 URI 的解碼片段組件。
此方法返回的字符串與 getRawFragment 方法返回的字符串相同,但所有轉義八位字節(jié)序列均已解碼。
返回:
此 URI 的已解碼片段組件,如果片段未定義,則為 null
public boolean equals(Object ob)
測試此 URI 是否與另一個對象相等。
如果給定對象不是 URI,則此方法立即返回 false。
要使兩個 URI 被視為相等,要求兩者都是不透明的或都是分層的。它們的方案必須要么都是未定義的,要么是相等的,不考慮大小寫。它們的片段必須要么都是未定義的,要么是相等的。
要使兩個不透明的 URI 被視為相等,它們的特定于方案的部分必須相等。
對于被認為相等的兩個分層 URI,它們的路徑必須相等,并且它們的查詢必須要么都未定義,要么相等。他們的權限必須要么都是未定義的,要么都是基于注冊表的,或者都是基于服務器的。如果它們的權限被定義并且基于注冊,那么它們必須是平等的。如果它們的權限被定義并且是基于服務器的,那么它們的主機必須相同而不考慮大小寫,它們的端口號必須相同,并且它們的用戶信息組件必須相同。
在測試兩個 URI 的用戶信息、路徑、查詢、片段、權限或特定于方案的部分是否相等時,將比較這些組件的原始形式而不是編碼形式,并且比較轉義八位字節(jié)的十六進制數(shù)字而不考慮案件。
此方法滿足 Object.equals 方法的一般約定。
覆蓋:
類 Object 中的等于
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
ob | 此對象要與之比較的對象 |
返回:
當且僅當給定對象是與此 URI 相同的 URI 時,才為 true
public int hashCode()
返回此 URI 的哈希碼值。 哈希碼基于 URI 的所有組件,并滿足 Object.hashCode 方法的一般約定。
覆蓋:
類 Object 中的 hashCode
返回:
此 URI 的哈希碼值
public int compareTo(URI that)
將此 URI 與另一個對象進行比較,該對象必須是 URI。
在比較兩個 URI 的對應組件時,如果一個組件未定義但另一個已定義,則認為第一個小于第二個。 除非另有說明,否則字符串組件將根據(jù) String.compareTo 方法定義的自然、區(qū)分大小寫的順序進行排序。 通過比較它們的原始形式而不是它們的編碼形式來比較受編碼的字符串組件。
URI 的順序定義如下:
此方法滿足 Comparable.compareTo 方法的一般約定。
指定者:
接口 ComparableURI 中的 compareTo
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
that | 此 URI 要與之比較的對象 |
返回:
負整數(shù)、零或正整數(shù),因為此 URI 小于、等于或大于給定 URI
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果給定對象不是 URI |
public String toString()
將此 URI 的內(nèi)容作為字符串返回。
如果此 URI 是通過調(diào)用此類中的構造函數(shù)之一創(chuàng)建的,則返回與原始輸入字符串或根據(jù)最初給定組件計算的字符串等效的字符串(視情況而定)。 否則,此 URI 是通過規(guī)范化、解析或相對化創(chuàng)建的,因此根據(jù) RFC 2396 第 5.2 節(jié)第 7 步中指定的規(guī)則從此 URI 的組件構造一個字符串。
覆蓋:
類 Object 中的 toString
返回:
此 URI 的字符串形式
public String toASCIIString()
將此 URI 的內(nèi)容作為 US-ASCII 字符串返回。
如果此 URI 不包含其他類別中的任何字符,則調(diào)用此方法將返回與調(diào)用 toString 方法相同的值。 否則,此方法就像通過調(diào)用該方法然后對結果進行編碼一樣工作。
返回:
此 URI 的字符串形式,根據(jù)需要進行編碼,使其僅包含 US-ASCII 字符集中的字符
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: