|
|||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--javax.servlet.http.Cookie
Cookie を生成します。Cookie は少量の情報を Servlet から Web ブラウザに送り、 ブラウザにそれを維持しもらい、以降のアクセスでサーバに送り返してもらう仕組です。 Cookie の値はクライアントを一意に識別できるようになっているので一般にセッション管理に用いられています。
Cookie には名前と値が一つありますが、他にコメントやパス、ドメイン、 最長存続期間、バージョンといったオプショナルな属性もあります。 Web ブラウザの中にはオプショナルな属性の扱いにバグがあるものがあります。 このため、Servlet の相互運用性を高めるためにはあまり使わないほうがいいでしょう。
Servlet は HttpServletResponse.addCookie(javax.servlet.http.Cookie)
メソッドを使って、
Cookie をブラウザに送ります。
このメソッドは HTTP レスポンスヘッダにブラウザに送り返す Cookie フィールドを一度にひとつだけ追加します。
ブラウザは一つの Web サーバに対して 20 個、全体で 300 個のクッキーが保持できるものとされています。
またブラウザは、クッキーに4KB という上限を設けてもかまいません。
ブラウザは HTTP リクエストヘッダに Cookie フィールドを付けて
Servlet に送り返してきます。Cookie はリクエストから取得しますが、
このとき HttpServletRequest.getCookies()
メソッドを使います。
同じ名前でもパス属性が違う Cookie がいくつも存在することは十分ありうることです。
Cookie が使われていると、その Webページのキャッシュに影響します。 HTTP/1.0 ではこのクラスを使って生成された Cookie があるページはキャッシュしません。 このクラスは HTTP/1.1 で規定されているキャッシュ制御をサポートしていません。
このクラスは Version 0(Netscpe が考案した Cookie) と Version 1 (RFC2109 で規定されている Cookie) の 2種類の仕様をサポートしています。 デフォルトでは最も相互運用性があると考えられるVersion 0 で Cookie を生成します。
コンストラクタの概要 | |
Cookie(String name,
String value)
指定された名前と値で Cookie を生成します。 |
メソッドの概要 | |
Object |
clone()
標準の java.lang.Object.clone メソッドをオーバライドしています。
|
String |
getComment()
この Cookie がどのような目的で使われるかを記述したコメントを返します。 |
String |
getDomain()
この Cookie にセットさえているドメイン名を返します。 |
int |
getMaxAge()
Cookie の最長存続期間の値を秒単位の数値で返します。 |
String |
getName()
Cookie の名前を返します。 |
String |
getPath()
ブラウザが送り返してきた Cookie に含まれているサーバ上のパスを返します。 |
boolean |
getSecure()
セキュアなプロトコルを使っている場合のみ、 ブラウザが Cookie を送ってくるようになっているなら true を返します。
|
String |
getValue()
Cookie の値を返します。 |
int |
getVersion()
それぞれの仕様に取り込まれた Cookie のプロトコルのバージョンを返します。 |
void |
setComment(String purpose)
Cookie がどのような目的をもっているのかを記述するコメントをセットします。 |
void |
setDomain(String pattern)
この Cookie がどこで生成されたかを表すドメインを指定します。 |
void |
setMaxAge(int expiry)
Cookie の最長存続期間を秒単位で設定します。 |
void |
setPath(String uri)
クライアントがこの Cookie を返さなくてはいけないパスを指定します。 |
void |
setSecure(boolean flag)
HTTPS や SSL のようなセキュアなプロトコルを使っている場合のみ Cookie を送り返すようにブラウザに指示します。 |
void |
setValue(String newValue)
Cookie が生成された後で、新しい値を設定します。 |
void |
setVersion(int v)
この Cookie が採用しているプロトコルのバージョンを設定します。 |
クラス java.lang.Object から継承したメソッド |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public Cookie(String name, String value)
名前は RFC 2109 に従ったものでなければいけません。つまり、 使えるのは ASCII 英数字のみでカンマやセミコロン、空白が入っていたり、 $ 文字で始まっていていはいけません。また、Cookie の名前は後で、 変更することはできません。
サーバが送る値には、そのような制約はありません。
値はおそらく、それを付与したサーバでなければ意味のないものでしょう。
Cookie で維持する値は setValue
メソッドを使うと、
生成時だけではなく、後になってから変更できます。
デフォルトでは Cookie は Netscape が考案した Cookie
仕様に従った形式で生成されます。バージョンは setVersion
メソッドを使って変更できます。
name
- Cookie の名前を指定するString
value
- Cookie の値を指定するString
IllegalArgumentException
- Cookie の名前に不正な文字(例えば、
カンマ、スペース、セミコロン)か、
Cookie プロトコルで予約されている字句のどれかが含まれている場合setValue(java.lang.String)
,
setVersion(int)
メソッドの詳細 |
public void setComment(String purpose)
purpose
- ユーザに表示するコメント指定するString
getComment()
public String getComment()
null
を返します。
String
。
コメントがない場合は
null
を返します。setComment(java.lang.String)
public void setDomain(String pattern)
ドメイン名の形式は RFC2109 で指定されています。ドメイン名は
(.foo.com
のように) ドットで始まります。
このように設定すると、Cookie は指定された Domain Name System (DNS)
のゾーン内のサーバから見えるようになります(例えば、www.foo.com
)
からは見えるけれど、a.b.foo.com
からは見えないというようにです)。
デフォルトでは Cookie を付与したサーバにしか送り返しません。
pattern
- この Cookie が見えてもよいドメイン名を指定するString
。
RFC2109 に従った形式で指定getDomain()
public String getDomain()
String
setDomain(java.lang.String)
public void setMaxAge(int expiry)
正の値が指定されると Cookie はある秒数が過ぎた後、削除されます。 この値は、Cookie の有効期限が切れる 最長 存続期間であることに注意してください。 Cookie の現在までの存続期間ではありません。
負の値は Cookie が永続的に保存されないことを意味しています。 この場合、 Web ブラウザが終了すると Cookie も削除されます。 0 という値を指定すると Cookie が削除されることになります。
expiry
- Cookie の最長存続期間を秒単位で指定する整数値。
負の値は Cookie を保存しない、
0 なら Cookie を削除する意味となる。getMaxAge()
public int getMaxAge()
-1
で、Cookie はブラウザが停止されるまでの間、
維持されます。
setMaxAge(int)
public void setPath(String uri)
この値を指定すると Cookie が該当するディレクトリ内、さらに、 サブディレクトリに存在する全てのページから参照できるようになります。 Cookie のパスには Cookie をセットした Servlet が含まれていなければなりません。 例えば、/catalog を指定したとします。このとき、 サーバの /catalog 以下の全てのディレクトリから Cookie が見えるようになります。
Cookie のパス名指定についての詳細は RFC2109 (インターネットで公開されています。) を参照してください。
uri
- パスを指定するString
getPath()
public String getPath()
String
。
例えば /catalog のようなパス名setPath(java.lang.String)
public void setSecure(boolean flag)
デフォルト値は false
です。
flag
- true
にすると、セキュアなプロトコルを使用しているときのみブラウザからサーバに Cookie を送り返す。
一方、false
にすると,
どのようなプロトコルであっても送り返す。getSecure()
public boolean getSecure()
true
を返します。
また、
どのようなプロトコルでもブラウザが Cookie を送れるようになっている場合は false
を返します。
true
。
その他のプロトコルでは false
(訳注: 原文に誤りがあるので訂正した。)setSecure(boolean)
public String getName()
String
public void setValue(String newValue)
バージョン0 の Cookie では、値は 空白、山形かっこ、丸かっこ、
等号、カンマ、二重引用符、スラッシュ、引用記号、アットマーク、
コロン、セミコロンを含んでいてはいけません。
空の値を設定した場合のふるまいはブラウザに依存します。
(訳注: 角かっこ、中かっこ、バックスラッシュ、疑問符、タブも含んではいけません。)
newValue
- 新しい値を指定するString
getValue()
,
Cookie
public String getValue()
String
setValue(java.lang.String)
,
Cookie
public int getVersion()
setVersion(int)
public void setVersion(int v)
RFC2109 は未だに新しいものと受け取られていて、 バージョン1 は実験的な仕様と考えられています。 商用サイトではまだ使わないでください。
v
- オリジナルの Netscape の仕様にしたがっているなら
0 を、また、RFC2109 にしたがっているなら
1 を指定getVersion()
public Object clone()
java.lang.Object.clone
メソッドをオーバライドしています。
このメソッドは Cookie のコピーを返します。
Object
内の clone
|
|||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
このドキュメントは、Ja-Jakarta Project により翻訳されました。コメントがある場合は、jajakarta-report@jajakarta.good-day.netまでお願いします。
Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.