zoukankan      html  css  js  c++  java
  • Cookie对象工具包,对象添加,获取,修改-亲测可用

    先来了解下Cookie 和 Session对象的概念吧。

    首先,Cookie是客户端缓存技术,大小一般为4kb左右,主要存储一些比较小的信息,常用的例子有用户名和密码,且是不安全的;

    Session是服务器缓存技术,大小不做控制,数据信息存储在服务器,是安全的。

    如下是我反复测试并封装的一个Cookie工具包,供学习使用 。

     1 package com.rick.framework.utils;
     2 
     3 import java.util.HashMap;
     4 import java.util.Map;
     5 
     6 import javax.servlet.http.Cookie;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 /**
    11  * CookiesUtil.java
    12  * @author Rick
    13  * 2016 2016年5月2日 下午8:59:00
    14  * name&path : 建议采用【常量】定义
    15  */
    16 public class CookiesUtil {
    17     
    18     /**
    19      * 添加Cookie对象
    20      * @param response 请求
    21      * @param name 名称
    22      * @param value 内容
    23      * @param path 路径
    24      * @param expiry 有效时间(秒)
    25      * @return
    26      */
    27     public static boolean setCookie(HttpServletResponse response, String name, String value, String path, int expiry) {
    28         Cookie cookie = new Cookie(name, value);
    29         cookie.setMaxAge(expiry);// Cookie有效时间(秒):-1关闭浏览器失效,0立即失效,大于1为具体时间
    30         cookie.setPath(path);
    31         response.addCookie(cookie);
    32 
    33         return false;
    34     }
    35     
    36     
    37     /**
    38      * 根据名字获取cookie
    39      * @param request
    40      * @param name 名称
    41      * @param path 路径
    42      * @return
    43      */
    44     public static Cookie getCookieByName(HttpServletRequest request, String name,String path) {
    45         Map<String, Cookie> cookieMap = ReadCookieMap(request);
    46         if (cookieMap.containsKey(name)) {
    47             Cookie cookie = (Cookie) cookieMap.get(name);
    48             return cookie;
    49         } else {
    50             return null;
    51         }
    52     }
    53 
    54     /**
    55      * 移除客户端Cookie对象
    56      * @param request 请求
    57      * @param response 响应
    58      * @param name 名称
    59      * @param path 路径
    60      * @return
    61      */
    62     public static boolean removeCookie(HttpServletRequest request,HttpServletResponse response,String name,String path){
    63         //-- 清除客户端Cookie
    64         try {
    65             Cookie cookie = CookiesUtil.getCookieByName(request, name, path);
    66             if(cookie!=null){
    67                 cookie.setMaxAge(0);
    68                 cookie.setPath(path);
    69                 cookie.setValue(null);
    70                 response.addCookie(cookie);
    71                 return true;
    72             }
    73         } catch (Exception e) {}
    74         return false;
    75     }
    76     
    77     /**
    78      * 将cookie封装到Map里面
    79      * 
    80      * @param request
    81      * @return
    82      */
    83     private static Map<String, Cookie> ReadCookieMap(HttpServletRequest request) {
    84         Map<String, Cookie> cookieMap = new HashMap<String, Cookie>();
    85         Cookie[] cookies = request.getCookies();
    86         if (null != cookies) {
    87             for (Cookie cookie : cookies) {
    88                 cookieMap.put(cookie.getName(), cookie);
    89             }
    90         }
    91         return cookieMap;
    92     }
    93     
    94 }

    【登录】- 设置 Cookie

    CookiesUtil.setCookie(response, IConstant.USER_COOKIE_NAME, user.getName(), IConstant.USER_COOKIE_PATH, 60*10);//--设置该用户10分钟有效时间

    【个人中心】 - 获取Cookie

    Cookie cookie = CookiesUtil.getCookieByName(request, IConstant.USER_COOKIE_NAME,IConstant.USER_COOKIE_PATH);//-- 使用名称+路径获取Cookie对象

    【退出】 - 清除Cookie

    CookiesUtil.removeCookie(request, response, IConstant.USER_COOKIE_NAME, IConstant.USER_COOKIE_PATH);//-- 通过名称+路径删除Cookie对象

  • 相关阅读:
    HDU 1124 Factorial
    hdu 1690 Bus System
    hdu 1113 Word Amalgamation
    POJ 2482 Stars in Your Window
    hdu 1385 ZOJ 1456 Minimum Transport Cost(经典floyd)
    hdu 1907 John
    VMware 虚拟机 安装 UBuntu 9.10 命令模式转换成窗口模试
    #pragma CODE_SEG __NEAR_SEG NON_BANKED详解
    Ubuntu 下Hadoop 伪分布式 hadoop0.20.2.tar.gz 的安装
    文件拷贝代码以及疑问
  • 原文地址:https://www.cnblogs.com/rick168/p/5456904.html
Copyright © 2011-2022 走看看