サーブレットCookie操作まとめ


Cookieの概要
Cookieはサーバがブラウザに送信する体積の小さい純粋なテキスト情報であり,ユーザが後で同じWebサーバにアクセスするとブラウザはそれらをそのままサーバに送信する.サーバーにクライアントに保存されていた情報を読み取ることで、Webサイトは閲覧者にオンライン取引中にユーザーの身分を識別したり、セキュリティの要求が高くない場合、ユーザーが名前とパスワードを繰り返し入力したり、ポータルサイトのホームページをカスタマイズしたり、広告を的確に投入したりすることを避けることができます. 
   
Cookieの目的は、ユーザーに便利さをもたらし、ウェブサイトに付加価値をもたらすことです.多くの誤報があるが、実際にCookieは深刻な安全上の脅威をもたらすことはない.Cookieは永遠にいかなる方法で実行されないので、ウイルスをもたらしたり、システムを攻撃したりすることはありません.また、ブラウザは一般的に300個のCookieしか保存できないため、サイトごとに最大20個のCookieが保存され、各Cookieのサイズは4 KBに制限されているため、Cookieはハードディスクを満たすことはなく、「サービス拒否」攻撃手段として使用されません. 
   
サーブレットのCookie API
Cookieをクライアントに送信するには、まずnew Cookie(name,value)を呼び出して適切な名前と値で1つ以上のCookieを作成し、cookieを通過する.setXXXは各種属性を設定し、responseを通過する.addCookie(cookie)はcookieを応答ヘッダに加える. 
   
クライアントからCookieを読み込むには、サーブレットがrequestを呼び出すべきである.getCookies()は、getCookies()メソッドがCookieオブジェクトの配列を返します.ほとんどの場合、配列の各要素にループアクセスして指定した名前のCookieを探し、指定した名前に関連付けられた値を取得するには、CookieにgetValueメソッドを呼び出します. 
   
Cookieの作成
   
Cookieオブジェクトのコンストラクション関数を呼び出すと、Cookieを作成できます.Cookieオブジェクトのコンストラクション関数には、Cookie名とCookie値の2つの文字列パラメータがあります.名前と値に空白文字と次の文字を含めることはできません.
   [ ] ( ) = , "/? @ : ; 
   
Cookieプロパティの読み取りと設定
   
Cookieを送信する応答ヘッダに追加する前に、Cookieのさまざまなプロパティを表示または設定できます.これらの方法を要約して説明します.
   getComment/setComment 
Cookieのコメントを取得/設定します. 
  getDomain/setDomain 
Cookieが適用するドメインを取得/設定します.一般に、Cookieは、送信されたサーバ名が全く同じサーバのみを返す.ここではブラウザにCookieを同じドメイン内の他のサーバに返すように指示することができます.注意ドメインは、.sitename.comなどのポイントで開始する必要があります.非国家クラスのドメイン(.com、.edu、.govなど)は、2つのポイントを含む必要があります.国家クラスのドメイン(.com.cn、.edu.ukなど)は、3つのポイントを含む必要があります. 
  getMaxAge/setMaxAge 
Cookieが期限切れになるまでの時間を秒単位で取得/設定します.この値を設定しない場合、Cookieは現在のセッションでのみ有効です.つまり、ユーザーがブラウザを閉じる前に有効であり、これらのCookieはディスクに保存されません.LongLivedCookieの説明を参照してください. 
  getName/setName 
Cookieの名前を取得/設定します.本質的に、名前と値は私たちが常に関心を持っている2つの部分です.HttpServiceRequestのgetCookiesメソッドはCookieオブジェクトの配列を返すため、通常、この配列にループでアクセスして特定の名前を検索し、getValueで値をチェックします. 
  getPath/setPath 
Cookieが適用するパスを取得/設定します.パスを指定しない場合、Cookieは現在のページが存在するディレクトリとそのサブディレクトリの下にあるすべてのページに戻ります.ここでの方法は、より一般的な条件を設定するために使用することができる.例えば、someCookie.setPath("/")では、サーバ上のすべてのページがクッキーを受信できます. 
  getSecure/setSecure 
Cookieが暗号化された接続(すなわちSSL)でしか送信できないかどうかを示すboolean値を取得/設定します. 
  getValue/setValue 
Cookieの値を取得/設定します.前述したように、名前と値は実際には私たちが常に関心を持っている2つの側面です.ただし、名前を論理タグ(すなわち、名前が存在する場合はtrueを表す)とする例外もあります. 
  getVersion/setVersion 
Cookieが従うプロトコルバージョンを取得/設定します.デフォルトバージョン0(元のNetscape仕様に従う).バージョン1はRFC 2109に準拠しているが、まだ広くサポートされていない.
 
servlet操作クッキーのいくつかの例
 import javax.servlet.http.Cookie;//  cookie 
 Cookie c=new Cookie("name","hhh");//cookie   
  c.setMaxAge(60*60*24*365);//     
  c.setPath("/");           //  
  c.setDomain("192.168.0.115");//  
  response.addCookie(c);       //          

//  cookie[] ,        cookie
public  String getCookieValue(Cookie[] cookies, String cookieName, String defaultValue) { 
      for(int i=0; i<cookies.length; i++) { 
      Cookie cookie = cookies[i]; 
      if (cookieName.equals(cookie.getName())) 
      return(cookie.getValue()); 
      } 
      return(defaultValue); 
      }
Cookie[] c=request.getCookies();//  cookie[] 
        String coo=this.getCookieValue(c, "name", "nocoo");//  cookie 

 
//        cookie
Cookie c=new Cookie("name","hhh");
  c.setMaxAge(0);//      0           cookie
  c.setPath("/");
  c.setDomain("192.168.0.115");
  response.addCookie(c);
クッキーの使用は簡単です.