Cookie对象工具包,对象添加,获取,修改-亲测可用
先来了解下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对象工具包,对象添加,获取,修改-亲测可用的更多相关文章
- javascript里面的数组,json对象,动态添加,修改,删除示例
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- mybatis自动生成代码插件mybatis-generator使用流程(亲测可用)
mybatis-generator是一款在使用mybatis框架时,自动生成model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间 坐着在idea上用maven构建spri ...
- IntelliJ IDEA2017 激活方法 最新的(亲测可用)
IntelliJ IDEA2017 激活方法(亲测可用): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的(如果你成 ...
- C#.NET中对称和非对称加密、解密方法汇总--亲测可用
C#.NET中对称和非对称加密.解密方法汇总--亲测可用 在安全性要求比较高的系统中都会涉及到数据的加密.解密..NET为我们封装了常用的加密算法,例如:MD5,DES,RSA等.有可逆加密,也有 ...
- Jrebel & Xrebel 在线激活方法 (亲测可用)
一开始用eclipse的时候虽然这是一个狂吃内存的家伙,但是调试代码是真的舒服,修改过的代码可以不用重启热加载,后来转idea,虽然idea很完美但是也有不足的地方,比如代码调试就不能热加载. 还好有 ...
- 亲测可用!免费下载QQ音乐大部分资源!
优化后亲测可用!免费下载QQ音乐大部分资源 通知 时间问题 博客园这边暂时停更要下载的去GitHub或者90盘 GitHub项目地址 https://github.com/TotoWang-hhh/m ...
- 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用
一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...
- IntelliJ13+tomcat+jrebel实现热部署(亲测可用)
网上有很多介绍intellij idea整合jrebel插件实现热部署的文章,但是有的比较复杂,有的不能成功,最后经过各种尝试,实现了整合,亲测可用!步骤说明如下: 一.先下载jrebel安 ...
- [转]QT子线程与主线程的信号槽通信-亲测可用!
近用QT做一个服务器,众所周知,QT的主线程必须保持畅通,才能刷新UI.所以,网络通信端采用新开线程的方式.在涉及到使用子线程更新Ui上的控件时遇到了点儿麻烦.网上提供了很多同一线程不同类间采用信号槽 ...
随机推荐
- CXF WebService整合SpringMVC的maven项目
首先推荐博客:http://www.cnblogs.com/xdp-gacl/p/4259481.html http://blog.csdn.net/hu_shengyang/article/de ...
- 项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”
项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx” 编译新下载的代码出错 修改包管理器的源为 http://www.nuget.org/api/v2/ .重试后成功 ...
- mark asp.net mvc
http://weblogs.asp.net/scottgu/Tags/MVC http://weblogs.asp.net/scottgu/asp-net-mvc-framework-part-1 ...
- [转]DAO层,Service层,Controller层、View层
来自:http://jonsion.javaeye.com/blog/592335 DAO层 DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DA ...
- My family No.1
Ok, in my family, there are seven people including my father, mother, three sisters, one brother and ...
- HDU 1880 魔咒词典(字符串哈希)
题目链接 Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一 ...
- 运用node的文件系统模块批量修改文件名
如果我们需要大批量修改一个文件中的名称,比如,删除文件名中的副本时,就可以借助node的文件系统模块,快捷快速的完成. 首先建立一个js文件(changeName.js),代码如下: // 引入f ...
- uexQQ插件学习心得
uexQQ插件学习心得 uexQQ插件的作用:通过qq可以分享图文,音乐,应用到相应的qq空间.支持手机客户端分享和手机webQQ分享.下面我们就来看一看他的一些方法. 我们先说一下分享的步骤,这个步 ...
- IDEA 搭建自己的第一个 SpringMvc Hello Word
1.首先 安装IDEA 2.配置nexus ,来实现 Maven对项目 包的引用,发布. 在配置过程中 http://192.168.10.38:8081/nexus/content/groups/p ...
- 初探Spring Batch
此系列博客皆为学习Spring Batch时的一些笔记: 为什么我们需要批处理? 我们不会总是想要立即得到需要的信息,批处理允许我们在请求处理之前就一个既定的流程开始搜集信息:比如说一个银行对账单,我 ...