|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.net.HttpCookie
public final class HttpCookie
HttpCookie 物件表示一個 http cookie,該 cookie 帶有伺服器和使用者代理之間的狀態資訊。廣泛採用 Cookie 來創建有狀態 (stateful) Session。
有 3 種 http cookie 規範:
Netscape 草案
RFC 2109 - http://www.ietf.org/rfc/rfc2109.txt
RFC 2965 - http://www.ietf.org/rfc/rfc2965.txt
HttpCookie 類別可以接受所有這 3 種語法形式。
| 建構子摘要 | |
|---|---|
HttpCookie(String name,
String value)
建構帶有指定名稱和值的 cookie。 |
|
| 方法摘要 | |
|---|---|
Object |
clone()
創建並返回此物件的一個副本。 |
static boolean |
domainMatches(String domain,
String host)
檢查主機名是否在域中的實用方法。 |
boolean |
equals(Object obj)
測試兩個 http cookie 的相等性。 |
String |
getComment()
返回描述此 cookie 用途的註釋;如果該 cookie 沒有註釋,則返回 null。 |
String |
getCommentURL()
返回描述此 cookie 用途的註釋 URL;如果 cookie 沒有註釋 URL,則返回 null。 |
boolean |
getDiscard()
返回 cookie 的丟棄屬性 |
String |
getDomain()
返回為此 cookie 設置的域名。 |
long |
getMaxAge()
返回以秒為單位指定的 cookie 最大生存時間。 |
String |
getName()
返回 cookie 的名稱。 |
String |
getPath()
返回瀏覽器將此 cookie 返回到的伺服器上的路徑。 |
String |
getPortlist()
返回 cookie 的埠號列表屬性 |
boolean |
getSecure()
如果瀏覽器僅通過安全協議發送 cookie,則返回 true;如果瀏覽器可以使用任何協議發送 cookie,則返回 false。 |
String |
getValue()
返回 cookie 的值。 |
int |
getVersion()
返回此 cookie 遵守的協議版本。 |
boolean |
hasExpired()
報告此 http cookie 是否已過期。 |
int |
hashCode()
返回此 http cookie 的雜湊碼。 |
static List<HttpCookie> |
parse(String header)
根據 set-cookie 或 set-cookie2 頭字元串建構 cookie。 |
void |
setComment(String purpose)
指定一個描述 cookie 用途的註釋。 |
void |
setCommentURL(String purpose)
指定一個描述 cookie 用途的註釋 URL。 |
void |
setDiscard(boolean discard)
指定使用者代理是否應該無條件丟棄 cookie。 |
void |
setDomain(String pattern)
指定應在其中顯示此 cookie 的域。 |
void |
setMaxAge(long expiry)
設置 cookie 的最大生存時間,以秒為單位。 |
void |
setPath(String uri)
指定客戶機應該返回 cookie 的路徑。 |
void |
setPortlist(String ports)
指定 cookie 的埠號列表,該列表在 Cookie 頭中限制可能將 cookie 發送回的埠號。 |
void |
setSecure(boolean flag)
指示瀏覽器是否只能使用安全協議(如 HTTPS 或 SSL)發送 cookie。 |
void |
setValue(String newValue)
在創建 cookie 之後將新值分派給 cookie。 |
void |
setVersion(int v)
設置此 cookie 遵守的 cookie 協議版本。 |
String |
toString()
建構此 cookie 的一個 cookie 頭字元串表示形式,其格式為對應的 cookie 規範定義的格式,但沒有前導 "Cookie:" 標記。 |
| 從類別 java.lang.Object 繼承的方法 |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| 建構子詳細資訊 |
|---|
public HttpCookie(String name,
String value)
名稱必須遵守 RFC 2965。這意味著它只能包含 ASCII 字母數字字元,不能包含逗號、分號或空格,也不能以 $ 字元開頭。cookie 的名稱在創建之後不得更改。
該值可以是伺服器選擇發送的任何值。可能只有該伺服器需要其值。cookie 的值在使用 setValue 方法創建後可以更改。
預設情況下,根據 RFC 2965 cookie 規範創建 cookie。可以使用 setVersion 方法更改版本。
name - 指定 cookie 名稱的 Stringvalue - 指定 cookie 值的 String
IllegalArgumentException - 如果 cookie 名稱包含非法字元,或者它是保留給 cookie 協議使用的標記之一
NullPointerException - 如果 name 為 nullsetValue(java.lang.String),
setVersion(int)| 方法詳細資訊 |
|---|
public static List<HttpCookie> parse(String header)
header - 指定 set-cookie 頭的 String。頭應該以 "set-cookie" 或 "set-cookie2" 標記開始;或者它不應有任何前導標記。
IllegalArgumentException - 如果頭字元串違反 cookie 規範的語法;或者 cookie 名稱包含非法字元;或者 cookie 名稱是保留給 cookie 協議使用的標記之一
NullPointerException - 如果頭字元串為 nullpublic boolean hasExpired()
public void setComment(String purpose)
purpose - 一個 String,指定要顯示給使用者的註釋getComment()public String getComment()
null。
String;如果沒有註釋,則返回 nullsetComment(java.lang.String)public void setCommentURL(String purpose)
purpose - 一個 String,指定要顯示給使用者的註釋 URLgetCommentURL()public String getCommentURL()
null。
String;如果沒有,則返回 nullsetCommentURL(java.lang.String)public void setDiscard(boolean discard)
discard - true 表示無條件丟棄 cookiegetDiscard()public boolean getDiscard()
setDiscard(boolean)public void setPortlist(String ports)
ports - 指定埠號列表的 String,它是以逗號分隔的數字序列getPortlist()public String getPortlist()
setPortlist(java.lang.String)public void setDomain(String pattern)
RFC 2965 指定了域名的形式。域名以點 (.foo.com) 開頭,意味著在指定域名系統(Domain Name System,DNS)區域中(例如,www.foo.com,但不是 a.b.foo.com)cookie 對於伺服器是可見的。預設情況下,cookie 只返回給發送它們的伺服器。
pattern - 套件含域名(在其中此 cookie 可見)的 String;域名形式符合 RFC 2965getDomain()public String getDomain()
StringsetDomain(java.lang.String)public void setMaxAge(long expiry)
正值表示 cookie 將在經過該值表示的秒數後過期。注意,該值是 cookie 過期的最大 生存時間,不是 cookie 的當前生存時間。
負值意味著 cookie 不會被持久存儲,將在 Web 瀏覽器退出時刪除。0 值會導致刪除 cookie。
expiry - 指定 cookie 最大生存時間的整數,以秒為單位;如果為 0,則應立即丟棄 cookie;否則,cookie 的最大生存時間沒有指定。getMaxAge()public long getMaxAge()
-1 表示 cookie 將保留到瀏覽器關閉為止。
setMaxAge(long)public void setPath(String uri)
cookie 對於指定目錄中的所有頁面及該目錄子目錄中的所有頁面都是可見的。cookie 的路徑必須包括設置 cookie 的 servlet,例如 /catalog,它使 cookie 對於伺服器上 /catalog 下的所有目錄都是可見的。
有關設置 cookie 路徑名稱的更多資訊,請參考 RFC 2965(可從 Internet 上獲得)。
uri - 指定路徑的 StringgetPath()public String getPath()
String,例如 /catalogsetPath(java.lang.String)public void setSecure(boolean flag)
預設值為 false。
flag - 如果為 true,則僅在使用安全協議時將 cookie 從瀏覽器發送到使用的伺服器;如果為 false,則在任何協議上都可以發送getSecure()public boolean getSecure()
true;如果瀏覽器可以使用任何協議發送 cookie,則返回 false。
true;否則返回 falsesetSecure(boolean)public String getName()
Stringpublic void setValue(String newValue)
對於 Version 0 cookie,值不應包含空格、方括號、圓括號、等號、逗號、雙引號、斜槓、問號、at 符號、冒號和分號。空值在所有瀏覽器上的行為不一定相同。
newValue - 指定新值的 StringgetValue()public String getValue()
StringsetValue(java.lang.String)public int getVersion()
setVersion(int)public void setVersion(int v)
v - 如果 cookie 應該遵守原始 Netscape 規範,則 v 為 0;如果 cookie 應該遵守 RFC 2965/2109,則 v 為 1
IllegalArgumentException - 如果 v 既不為 0,也不為 1getVersion()
public static boolean domainMatches(String domain,
String host)
cookie 規範中描述了這個概念。要理解該概念,首先需要定義一些術語:
有效主機名 = hostname(如果主機名包含圓點)
或者 = hostname.local(如果主機名不包含圓點)
如果符合以下條件,則主機 A 的名稱在域上比對主機 B 的名稱:
- 它們的主機名字元串在字元串上的比較是相同的;或者
- A 是一個 HDN 字元串,且形式為 NB,其中 N 是一個非空(null)名稱字元串,B 的形式為 .B',B'是一個 HDN 字元串。(因此,x.y.com 在域上比對 .Y.com,但不比對 Y.com。)
如果符合以下條件,則主機不在域中(RFC 2965 第 3.3.2 節):
- Domain 屬性的值不包含嵌入的圓點,且該值不是 .local。
- 派生於請求主機的有效主機名在域上不比對 Domain 屬性。
- 請求主機是一個 HDN(而非 IP 位址)且形式為 HD,其中 D 是 Domain 屬性的值,H 是包含一個或多個圓點的字元串。
範例:
- 對於 Domain=.foo.com,來自請求主機 y.x.foo.com 的 Set-Cookie2 將被拒絕,因為 H 是 y.x,包含一個圓點。
- 對於 Domain=.foo.com,來自請求主機 x.foo.com 的 Set-Cookie2 將被接受。
- 帶有 Domain=.com 或 Domain=.com. 的 Set-Cookie2 將始終被拒絕,因為沒有嵌入的圓點。
- 帶有 Domain=ajax.com 的 Set-Cookie2 將被接受,Domain 的值將被賦予 .ajax.com,因為在值前面加了一個圓點。
- 對於 Domain=.local,來自請求主機範例的 Set-Cookie2 將被接受,因為請求主機的有效主機名是 example.local,example.local 在域上比對 .local。
domain - 要用於檢查主機名的域名host - 相關主機名
public String toString()
Object 中的 toStringpublic boolean equals(Object obj)
僅當兩個 cookie 來自相同域(不區分大小寫)、具有相同名稱(不區分大小寫)並具有相同路徑(區分大小寫)時,結果才為 true。
Object 中的 equalsobj - 要與之比較的參考物件。
Object.hashCode(),
Hashtablepublic int hashCode()
getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()
Object 中的 hashCodeObject.equals(java.lang.Object),
Hashtablepublic Object clone()
Object 中的 cloneCloneable
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。