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对象

  • 相关阅读:
    ELK+Kafka集群日志分析系统
    Centos 6.5 部署 redmine 3.3
    Centos 6.5 搭建l2tp 服务端和客户端
    Logstash之multiline 插件
    MYSQL MHA
    windows上给yii2安装插件
    YII2框架的安装
    Apache服务器配置项和虚拟机配置
    浮点数的比较
    微信自定义菜单总结
  • 原文地址:https://www.cnblogs.com/rick168/p/5456904.html
Copyright © 2011-2022 走看看