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

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

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

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

 package com.rick.framework.utils;

 import java.util.HashMap;
import java.util.Map; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* CookiesUtil.java
* @author Rick
* 2016 2016年5月2日 下午8:59:00
* name&path : 建议采用【常量】定义
*/
public class CookiesUtil { /**
* 添加Cookie对象
* @param response 请求
* @param name 名称
* @param value 内容
* @param path 路径
* @param expiry 有效时间(秒)
* @return
*/
public static boolean setCookie(HttpServletResponse response, String name, String value, String path, int expiry) {
Cookie cookie = new Cookie(name, value);
cookie.setMaxAge(expiry);// Cookie有效时间(秒):-1关闭浏览器失效,0立即失效,大于1为具体时间
cookie.setPath(path);
response.addCookie(cookie); return false;
} /**
* 根据名字获取cookie
* @param request
* @param name 名称
* @param path 路径
* @return
*/
public static Cookie getCookieByName(HttpServletRequest request, String name,String path) {
Map<String, Cookie> cookieMap = ReadCookieMap(request);
if (cookieMap.containsKey(name)) {
Cookie cookie = (Cookie) cookieMap.get(name);
return cookie;
} else {
return null;
}
} /**
* 移除客户端Cookie对象
* @param request 请求
* @param response 响应
* @param name 名称
* @param path 路径
* @return
*/
public static boolean removeCookie(HttpServletRequest request,HttpServletResponse response,String name,String path){
//-- 清除客户端Cookie
try {
Cookie cookie = CookiesUtil.getCookieByName(request, name, path);
if(cookie!=null){
cookie.setMaxAge(0);
cookie.setPath(path);
cookie.setValue(null);
response.addCookie(cookie);
return true;
}
} catch (Exception e) {}
return false;
} /**
* 将cookie封装到Map里面
*
* @param request
* @return
*/
private static Map<String, Cookie> ReadCookieMap(HttpServletRequest request) {
Map<String, Cookie> cookieMap = new HashMap<String, Cookie>();
Cookie[] cookies = request.getCookies();
if (null != cookies) {
for (Cookie cookie : cookies) {
cookieMap.put(cookie.getName(), cookie);
}
}
return cookieMap;
} }

【登录】- 设置 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对象

Cookie对象工具包,对象添加,获取,修改-亲测可用的更多相关文章

  1. javascript里面的数组,json对象,动态添加,修改,删除示例

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. mybatis自动生成代码插件mybatis-generator使用流程(亲测可用)

    mybatis-generator是一款在使用mybatis框架时,自动生成model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间 坐着在idea上用maven构建spri ...

  3. IntelliJ IDEA2017 激活方法 最新的(亲测可用)

    IntelliJ IDEA2017 激活方法(亲测可用): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的(如果你成 ...

  4. C#.NET中对称和非对称加密、解密方法汇总--亲测可用

    C#.NET中对称和非对称加密.解密方法汇总--亲测可用   在安全性要求比较高的系统中都会涉及到数据的加密.解密..NET为我们封装了常用的加密算法,例如:MD5,DES,RSA等.有可逆加密,也有 ...

  5. Jrebel & Xrebel 在线激活方法 (亲测可用)

    一开始用eclipse的时候虽然这是一个狂吃内存的家伙,但是调试代码是真的舒服,修改过的代码可以不用重启热加载,后来转idea,虽然idea很完美但是也有不足的地方,比如代码调试就不能热加载. 还好有 ...

  6. 亲测可用!免费下载QQ音乐大部分资源!

    优化后亲测可用!免费下载QQ音乐大部分资源 通知 时间问题 博客园这边暂时停更要下载的去GitHub或者90盘 GitHub项目地址 https://github.com/TotoWang-hhh/m ...

  7. 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用

    一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...

  8. IntelliJ13+tomcat+jrebel实现热部署(亲测可用)

       网上有很多介绍intellij idea整合jrebel插件实现热部署的文章,但是有的比较复杂,有的不能成功,最后经过各种尝试,实现了整合,亲测可用!步骤说明如下:   一.先下载jrebel安 ...

  9. [转]QT子线程与主线程的信号槽通信-亲测可用!

    近用QT做一个服务器,众所周知,QT的主线程必须保持畅通,才能刷新UI.所以,网络通信端采用新开线程的方式.在涉及到使用子线程更新Ui上的控件时遇到了点儿麻烦.网上提供了很多同一线程不同类间采用信号槽 ...

随机推荐

  1. 简单理解js的prototype属性

    在进入正文之前,我得先说说我认识js的prototype这个东西的曲折过程. 百度js的prototype的文章,先看看,W3School关于prototype的介绍: 你觉得这概念适合定义js的pr ...

  2. iOS XCode启用/关闭Clang Warnings

    前言:warnings是编码中很重要的一个环节,编译器给出合理的warning能帮助开发者找到自己代码的问题,防止很多bug产生.  默认用XCode创建一个工程,会自动开启一些重要的warnings ...

  3. 树状sql--采用递归方式获取节点

    创建数据库 create table City(id varchar(3) primary key , pid varchar(3) , name varchar(10)) 插入数据 insert i ...

  4. 浏览器桌面通知--Notification

    前言 最近项目上要用到浏览器桌面通知,之前虽然知道有这个东西,但是一直没有用过,借此机会了解下桌面通知的机制,在此分享下. 1.权限 首先需要明确的是,不是所有网页都可以发桌面通知的,不然不得烦死,那 ...

  5. postgresql修炼之道学习笔记(1)

    好好学习吧. 本笔记 仅作为摘要记录 前两章,主要是数据库对比和安装等. 对比,就比多说了,总是和别人比较,会显得自己身价低,呵呵. 安装也有很多文章,不多说. 第二章提到了一些简单的配置, 其在 d ...

  6. hasOwnProperty 递归 简单回调 链式调用

    1.hasOwnProperty 函数的返回值为Boolean类型.如果对象object具有名称为propertyName的属性,则返回true,否则返回false. function Box(){ ...

  7. JavaMail发送邮件的小程序

    首先加入jar包javax.mail.jar package com.tideway.javamail; import java.util.ArrayList; import java.util.Da ...

  8. XPath 运算符

    XPath 表达式可返回节点集.字符串.逻辑值以及数字. XPath 运算符 下面列出了可用在 XPath 表达式中的运算符: 运算符 描述 实例 返回值 | 计算两个节点集 //book | //c ...

  9. 改变this指针的apply,call,bind的区别

    apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. Jav ...

  10. javascript原型对象

    先来做个复习,ES5中有有几种数据类型呢? 5种基本数据类型 Undefined Null Boolean Number String 1种复杂数据类型 Object 除了基本数据类型,万物皆对象,记 ...