TOPサーバ構築・運用> Cookie情報を取得する
はじめてのサーバサイドJava
はじめてのサーバサイドJava

第8回:Cookieとセッション情報

著者:山田 祥寛   2006/5/8
前のページ  1  2  3  次のページ
Cookie情報を取得する

   それでは、具体的にJSPページからCookieを保存/取得する方法について説明していきましょう。ここでは、cookie.jsp(リスト1)で入力した電子メールアドレスをcookie_rec.jsp(リスト2)でCookieとして保存します。
リスト1:cookie.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<html>
<head>
<title>Cookie情報を保存する</title>
</head>
<body>
<form method="POST" action="cookie_rec.jsp">
   E-Mailアドレス:
   <input type="text" name="email" size="40" maxlength="100"
      value="${cookie['email'].value}" /> (3)
   <input type="submit" value="送信" />
</form>
</body>
</html>

リスト2:cookie_rec.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="res" uri="http://jakarta.apache.org/taglibs/response-1.0" %>
<res:addCookie name="email"> (1)
   <res:value>${param['email']}</res:value>
   <res:maxAge>15552000</res:maxAge>
</res:addCookie>
<c:redirect url="cookie.jsp" /> (2)


   そのため、2度目にcookie.jspにアクセスすると、1度目に入力したアドレスがデフォルト表示されます(図3)。

2度目(右図)のアクセス時に、1度目(左図)で入力された値をデフォルト表示
図3:2度目(右図)のアクセス時に、1度目(左図)で入力された値をデフォルト表示
(画像をクリックすると別ウィンドウに拡大図を表示します)


Cookie保存にはResponseタグライブラリ

   Cookieを保存するには、Responseタグライブラリに含まれる<res:addCookie>タグを利用すると便利です(リスト2の1)。Responseタグライブラリは、(JSTLではなく)Jakarta Taglibsサブプロジェクトから提供されるタグライブラリです(設定方法はコラム「Jakarta Taglibsのインストール方法」を参照)(注)。

※注: コラム「Jakarta Taglibsのインストール方法」は書籍のみとなります。

   <res:addCookie>要素は、name属性(Cookie名)と<res:value>要素(Cookie値)、<res:maxAge>要素(有効期限)といった設定に基づいて、クライアントにCookieを送信します。<res:maxAge>要素には秒単位で有効期限を設定します。ここでは、15552000秒(6か月)の有効期限を設定しています。有効期限が無指定、または"-1"の場合にはブラウザを閉じたタイミングで、"0"の場合は直ちにCookieは削除されます。

   Cookieを追加したあとは、<c:redirect>要素で元のcookie.jspにリダイレクトします(リスト2の2)。


Cookieの値を出力する

   クライアントに保存されたCookieの値にアクセスするのは、暗黙オブジェクトcookieの役割です(リスト1の3)。ただし、ここで注意しなければならないのは、${cookie['Cookie名']}で返されるのはCookieオブジェクトであるという点です。Cookie値にアクセスするには、${cookie['email'].value}のように、Cookieオブジェクトのvalueプロパティを介する必要があります。

前のページ  1  2  3  次のページ


WINGSプロジェクト  山田 祥寛
著者プロフィール
有限会社WINGSプロジェクト   山田 祥寛
Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト(http://www.wings.msn.to/)」の代表。主な著書に「10日でおぼえる入門教室シリーズ(Jakarta・JSP/サーブレット・PHP・XML)」(以上、翔泳社)、「書き込み式 SQLのドリル」(ソシム)など。最近ではIT関連技術の取材、講演まで広くを手がける毎日。

INDEX
第8回:Cookieとセッション情報
  ページ間で情報を保持するには?
Cookie情報を取得する
  セッションによる情報の引き継ぎ