java之cookie

 

  1. package test;  
  2. import java.util.Hashtable;  
  3. import java.util.Iterator;  
  4. import java.util.Set;  
  5. import javax.servlet.http.Cookie;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8. /** 
  9.  * Cookie的操作类 
  10.  * @author shy.qiu 
  11.  * 
  12.  */  
  13. public class CookieHandler {  
  14.     /** 
  15.      * 创建cookie 
  16.      *  
  17.      * @param response 
  18.      *            回应 
  19.      * @param nameValues 
  20.      *            存入cookie的键值对 
  21.      * @param days 
  22.      *            设置cookie的有效期 
  23.      */  
  24.     public static void createCookie(HttpServletResponse response,  
  25.             Hashtable<String, String> nameValues, int days) {  
  26.         Set<String> set = nameValues.keySet();  
  27.         Iterator<String> it = set.iterator();  
  28.         for (; it.hasNext();) {  
  29.             String name = (String) it.next();  
  30.             String value = (String) nameValues.get(name);  
  31.             // 生成新的cookie  
  32.             Cookie cookie = new Cookie(name, value);  
  33.             // 设置有效日期  
  34.             cookie.setMaxAge(days * 24 * 60 * 60);  
  35.             // 设置路径(默认)  
  36.             cookie.setPath("/");  
  37.             // 把cookie放入响应中  
  38.             response.addCookie(cookie);  
  39.         }  
  40.     }  
  41.     /** 
  42.      * 读取Cookie 
  43.      *  
  44.      * @param request 
  45.      * @return Hashtable 返回cookie的键值对 
  46.      */  
  47.     public static Hashtable<String, String> getCookies(  
  48.             HttpServletRequest request) {  
  49.         Cookie[] cookies = request.getCookies();  
  50.         Hashtable<String, String> cookieHt = new Hashtable<String, String>();  
  51.         if (cookies.length > 0) {  
  52.             for (int i = 0; i < cookies.length; i++) {  
  53.                 Cookie cookie = cookies[i];  
  54.                 cookieHt.put(cookie.getName(), cookie.getValue());  
  55.             }  
  56.         }  
  57.         return cookieHt;  
  58.     }  
  59.     /** 
  60.      * 修改cookie中指定键的值 
  61.      *  
  62.      * @param request 
  63.      * @param name 
  64.      *            指定的键 
  65.      * @param value 
  66.      *            值 
  67.      */  
  68.     public static void setCookieValueByName(HttpServletRequest request,  
  69.             String name, String value) {  
  70.         Cookie[] cookies = request.getCookies();  
  71.         if (cookies.length > 0) {  
  72.             for (int i = 0; i > cookies.length; i++) {  
  73.                 if (name.equalsIgnoreCase(cookies[i].getName())) {  
  74.                     cookies[i].setValue(value);  
  75.                 }  
  76.             }  
  77.         }  
  78.     }  
  79.     /** 
  80.      * 得到指定键的值 
  81.      *  
  82.      * @param request 
  83.      * @param name 
  84.      *            指定的键 
  85.      * @return String 值 
  86.      */  
  87.     public static String getCookieValueByName(HttpServletRequest request,  
  88.             String name) {  
  89.         Cookie[] cookies = request.getCookies();  
  90.         String resValue = "";  
  91.         if (cookies.length > 0) {  
  92.             for (int i = 0; i > cookies.length; i++) {  
  93.                 if (name.equalsIgnoreCase(cookies[i].getName())) {  
  94.                     resValue = cookies[i].getValue();  
  95.                 }  
  96.             }  
  97.         }  
  98.         return resValue;  
  99.     }  
  100.     /** 
  101.      * 销毁cookie 
  102.      *  
  103.      * @param request 
  104.      * @param response 
  105.      */  
  106.     public static void deletesCookie(HttpServletRequest request,  
  107.             HttpServletResponse response) {  
  108.         Cookie[] cookies = request.getCookies();  
  109.         if (cookies != null) {  
  110.             for (int i = 0; i < cookies.length; i++) {  
  111.                 Cookie cookie = cookies[i];  
  112.                 // 销毁  
  113.                 cookie.setMaxAge(0);  
  114.                 response.addCookie(cookie);  
  115.             }  
  116.         }  
  117.     }  
  118. }  

Cookies集合是附属于Response对象及Request对象的数据集合,使用时需要在前面加上Response或Request;如果用户要读取Cookies,则必须使用Request对象的Cookies集合

 需要注意的是,只有在服务器未被下载任何数据给浏览器前,浏览器才能与Server进行Cookies集合的数据交换,一旦浏览器开始接收Server所下载的数据,Cookies的数据交换则停止,为了避免错误,要在程序和前面加上response.Buffer=True。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值