連載
» 2005年02月15日 10時00分 公開

JavaTips 〜JSP/サーブレット編:クッキー値の設定をスクリプトレスで実現

[山田祥寛,@IT]

 「クッキー値を取得(Jakarta TagLibs+式言語)」では、式言語、Requestタグライブラリを利用して、クッキー値の取得を簡素化する方法について紹介しました。引き続き、本TIPSではJakarta TagLibsを利用して、クッキーの設定をスクリプトレスで実現する方法について紹介することにしましょう。

 Jakarta TagLibsの中で、クッキー設定のようなクライアントへの応答部分を担うのはResponseタグライブラリの役割です。Responseタグライブラリ(jakarta-taglibs-response-current.zip)もRequestタグライブラリ同様、以下のサイトから入手することができます。

http://jakarta.apache.org/site/binindex.cgi

 解凍したフォルダに含まれるtaglibs-response.jarをアプリケーションルート配下の「/WEB-INF/lib」フォルダに、taglibs-response.tldを「/WEB-INF」フォルダに、それぞれコピーしたうえで、web.xmlを以下のように編集してください。

web.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <taglib>
 
<taglib-uri>http://jakarta.apache.org/taglibs/response-1.0</taglib-uri>
<taglib-location>/WEB-INF/tld/taglibs-response.tld</taglib-location>
  </taglib>
</web-app>
注:本TIPSでは、サーブレット2.3仕様に基づいて、web.xmlを記述していますが、もしもサーブレット2.4仕様に基づいてタグライブラリの有効化を行うならば、<taglib>要素は<jsp-config>要素の配下に記述する必要があります。サーブレット2.4環境でのweb.xmlの記述方法について詳細は、「J2EE1.4に対応したweb.xmlを記述する」を参照してください。

 それでは、Responseタグライブラリを利用してクッキー(名前はauthor、値はYamada、有効期限は180日)を設定してみることにしましょう。

<%@ taglib prefix="res"
    uri="http://jakarta.apache.org/taglibs/response-1.0" %>
<res:addCookie name="author">
  <res:value>Yamada</res:value>
  <res:maxAge>${60*60*24*180}</res:maxAge>
</res:addCookie>

 クッキーの各種属性は、<res:addCookie>要素の属性、もしくは配下の子要素として指定することができます。単純な固定値を指定する場合には<res:addCookie>要素の属性を、ほかのタグライブラリによる処理結果などから値を指定したい場合には、配下の子要素を使用してください。なお、クッキー名だけは<res:addCookie>要素の属性としてしか指定することができません。

主要なクッキー属性の指定方法
<res:addCookie>
要素の属性
<res:addCookie>
要素の子要素
概要
name なし クッキーの名前
value <res:value> クッキーの値
maxAge <res:maxAge> 有効期限(単位は秒)
domain <res:domain> 有効なドメイン
path <res:path> 有効なパス
secure <res:secure> クッキーに発行にSSLが必要か
version <res:version> クッキーのバージョン
comment <res:comment> コメント

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。