JSP/サーブレットでのCookieの設定と取得についての備忘録です。
Cookieの設定
Cookieクラス(javax.servlet.http.Cookie)のオブジェクトを生成して、名前とそれに紐づく値を設定します。
そしてCookieオブジェクトをレスポンスに付加して返します。
Cookieの設定
protected void doGet(HttpServletRequest request, HttpServletResponse response){
Cookie cookie = new Cookie("XxxName", "XxxValue");
cookie.setValue("YyyName", "YyyValue");
// 90日間有効なCookie
cookie.setMaxAge(60 * 60 * 24 * 90);
response.addCookie(cookie);
}
Cookieの取得
設定よりも簡単で、getCookiesメソッドでリクエストからCookieオブジェクトを取得するだけです。
Cookieの取得
protected void doGet(HttpServletRequest request, HttpServletResponse response){
// 存在しなければnullとなる
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
System.out.println(cookie.getName() + ":" + cookie.getValue());
}
}
Cookieのプロパティ
Cookieのプロパティは以下で設定・取得します。
Setter | Getter | 説明 |
---|---|---|
setComment(String) | getComment() | コメント |
setDomain(String) | getDomain() | 生成されたドメイン名(RFC2109) |
setHttpOnly(boolean) | isHttpOnly() | HTTP通信ヘッダのみで有効なCookieか否か(デフォルトはfalseで無効) |
setMaxAge(int) | getMaxAge() | 有効期限(秒) |
setPath(String) | getPath() | クライアントがCookieを返す対象のパス |
setSecure(boolean) | getSecure() | HTTPSまたはSSLの場合にのみCookieを送る(デフォルトはfalse) |
setValue(String, String) | getValue(String) | Cookieに値を設定・取得する |
setVersion(int) | setVersion() | Cookieのプロトコルバージョン(0ならNetscape Cookie、1ならRFC2109) |