`
uule
  • 浏览: 6352002 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

CookiesUtil - 使用Cookie缓存KEY

 
阅读更多

Cookie总结

Cookie介绍及JavaScript操作Cookie方法详解

JS操作Cookies包括(读取添加与删除)

 

document.cookie = "name=value;path=path"
document.cookie = "name=value;expires=date;path=path"
document.cookie = "username=Darren;path=/;domain=qq.com"

 

cookie的读取操作:

function getCookie(c_name){
    if (document.cookie.length>0){  //先查询cookie是否为空,为空就return ""
      c_start=document.cookie.indexOf(c_name + "=")  //通过String对象的indexOf()来检查这个cookie是否存在,不存在就为 -1  
      if (c_start!=-1){ 
        c_start=c_start + c_name.length+1  //最后这个+1其实就是表示"="号啦,这样就获取到了cookie值的开始位置

        c_end=document.cookie.indexOf(";",c_start)
		  		//其实我刚看见indexOf()第二个参数的时候猛然有点晕,后来想起来表示指定的开始索引的位置...这句是为了得到值的结束位置。因为需要考虑是否是最后一项,所以通过";"号是否存在来判断

        if (c_end==-1) 
                                  c_end=document.cookie.length  
        return 
                                 unescape(document.cookie.substring(c_start,c_end));
                         //通过substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基础,想了解的可以搜索下,在文章结尾处也会进行讲解cookie编码细节
      } 
    }
    return "";
}

 

设置cookie:

使用方法:setCookie('username','Darren',30)

function setCookie(c_name, value, expiredays){
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

 

Cookie结合缓存使用:

1. 本地生成一个全局唯一标识,放入Cookie中

2. 缓存根据这个标识缓存用户登录数据

3. 需要用到用户信息时,先从用户主机的Cookie中取出该唯一标识

4. 根据取出的标识,从缓存中取得用户信息

 

//保存:
	
	public static void cacheUser(CDO cdoUser, HttpServletResponse response) {
		String aa = UUID.randomUUID().toString();
		String bb = aa.replaceAll("-", "");
		CookiesUtil.removeAllHistoryCookie(ServletActionContext.getRequest(), ServletActionContext.getResponse(), "sid_1more_cookie");
		
		// 存入Cookie
		Cookie cookie = new Cookie(Constant.ACTIVITY_WX_COOKIES, bb);
		cookie.setPath("/");
		cookie.setDomain(ProPertiesUtil.getValue("/server.properties","cookieServer"));
		cookie.setMaxAge(60*60*1);
		cookie.setSecure(false);
		response.addCookie(cookie);

		// memcache
		CacheUtil.put("u_" + bb, cdoUser, 60 * 60 * 1);
	}
	
	
	private final static String HISTORY_PATH = "/"; //Cookie的路径
    private final static int TIME = 3600 * 24 * 130; //130天
    public static final String ACTIVITY_WX_COOKIES = "sid_cookie";	
    //清除所有浏览
    public static void removeAllHistoryCookie(HttpServletRequest request, HttpServletResponse response, String cookieName) {
        Cookie[] cookies = request.getCookies();
        if (null == cookies || cookies.length == 0) {
            return;
        }
        for (Cookie thisCookie : cookies) {
            if (thisCookie.getName().startsWith(cookieName)) {
                thisCookie.setMaxAge(0);   // 删除这个cookie
                thisCookie.setPath(HISTORY_PATH);
                response.addCookie(thisCookie);
            }
        }
    }
	
	
	
//获取:
	String idkey = CookieUtil.getCookieValue("sid_cookie", request);
	Object obj = CacheUtil.get("u_" + idkey);
	
	CDO cdoUser = null;
	
	if(obj != null){
		cdoUser = (CDO) obj;
		long lwxuserId = cdoUser.getIntegerValue("lwxuserId");
	}

 

工具类:

public class CookieUtil {

	  public static String getCookieValue(String key, HttpServletRequest request)
	  {
			Cookie[] cookie = request.getCookies();
			if (cookie == null)
				return null;
				
			for (int i = 0; i < cookie.length; i++)
			{
			  if (cookie[i].getName().equals(key))
			  {
					return cookie[i].getValue();
			  }
			}
			return null;
	  }
}

 

缓存工具类CacheUtil省略

 

 

前台放Cookie,后台取Cookie:

//前台放Cookie
function addCookie(name,value,expires,path,domain){ 
	var str=name+"="+value; 
	if(expires!=""){ 
		var date=new Date(); 
		date.setTime(date.getTime()+expires*1000); 
		str+=";expires="+date.toGMTString(); 
	} 
	if(path!=""){ 
	  str+=";path="+path;//指定可访问cookie的目录 
	} 
	if(domain!=""){ 
	  str+=";domain="+domain;//指定可访问cookie的域 
	} 
	document.cookie=str; 
} 

function showShare(){
	addCookie("zhezhaokey","12344",10,"/",".1more.com");	
}

  

//后台取Cookie:
String key = CookieUtil.getCookieValue("zhezhaokey", request);

public static String getCookieValue(String key,HttpServletRequest request)
	{
	     Cookie cookie[]=request.getCookies();
	     if(cookie==null)
	    	 return null;
	     for(int i=0;i<cookie.length;i++)
	     {
	    	 if(cookie[i].getName().equals(key))
	    	 {
	    		  return cookie[i].getValue();
	    	 }
	     }
		 return null;
    }

 。。

 

 

 

分享到:
评论

相关推荐

    JquerySession-JqueryCookie缓存插件(实例+注释说明)

    **jQuery Session & Cookie缓存插件详解** 在Web开发中,数据存储是不可或缺的一部分,而Session和Cookie作为客户端与服务器之间交互数据的重要手段,经常被用于实现用户状态管理。jQuery库提供了一些方便的方法来...

    flask-session-cookie-manager

    标题“flask-session-cookie-manager”指的是一个Python应用,它专门针对Flask框架,用于管理和操作session cookie。在Web开发中,session cookie是服务器用来跟踪用户状态的一种方式,特别是在无状态的HTTP协议上...

    flask-session-cookie-manager-master.zip

    本项目“flask-session-cookie-manager-master.zip”显然是一款针对Flask Web框架的session管理工具,它专注于session的加密与解密。Flask是一个轻量级的Python Web服务器网关接口(WSGI)应用框架,广泛用于快速...

    前端开源库-universal-cookie-koa

    使用`universal-cookie-koa`的步骤如下: 1. 安装库:`npm install universal-cookie-koa`或`yarn add universal-cookie-koa` 2. 引入库:在`Koa`应用中引入`universal-cookie-koa`,并挂载中间件。 ```javascript ...

    前端项目-angular-translate-storage-cookie.zip

    在提供的压缩包“bower-angular-translate-storage-cookie-master”中,通常会包含以下内容: 1. `src/` 目录:包含源代码文件,如`.js`文件,实现了Cookie存储服务。 2. `demo/` 目录(可能有):可能包含一个演示...

    java特性--cookie保存用户和密码

    提供的压缩包文件"t70cookie"可能包含了实现这个功能的源代码,可以作为学习如何在实际项目中使用Cookie保存用户登录信息的参考。 理解并熟练运用这些Java特性及Cookie机制,对于开发具有用户会话管理功能的Web...

    隐私橡皮擦Privacy Eraser 就会删除所有数字足迹 - Web 浏览器缓存、Cookie、浏览历史记录、地址栏历史记录

    只需单击一下,Privacy Eraser 就会删除所有数字足迹 - Web 浏览器缓存、Cookie、浏览历史记录、地址栏历史记录、键入的 URL、自动完成表单历史记录、保存的密码、index.dat 文件、Windows 运行历史记录、搜索历史...

    spring-security cookie认证

    Spring Security 支持使用Cookie进行认证,这通常涉及到Remember-Me服务,允许用户在一段时间内无需重新登录。 1. **Cookie身份验证流程**: - 用户首次登录时,服务器验证其凭据(如用户名和密码)。 - 如果验证...

    Laravel开发-laravel-cookie-consent

    在本文中,我们将深入探讨如何在 Laravel 开发中利用 "laravel-cookie-consent" 这一工具,以符合欧盟的 GDPR(一般数据保护条例)关于 cookie 使用的规定。"laravel-cookie-consent" 是一个由 Silktide 开发的库,...

    js-cookie.js

    js_cookie源码下载,js-cookie用于操作cookie,笔者是因为一开始不会弄,后来会整下来了,鉴于自身经历,故将其分享出来。

    前端Cookie工具,获取Cookie数据,获取Cookie数据key名称,清除站点所有Cookie数据

    本文将深入探讨如何使用JavaScript来操作Cookie,包括获取Cookie数据、获取Cookie数据的key名称以及清除站点所有Cookie数据的方法。 首先,我们要了解Cookie的基本概念。Cookie是由服务器端设置并在客户端存储的一...

    利用js-cookie实现前端设置缓存数据定时失效

    以上示例展示了如何使用js-cookie库来控制前端缓存数据的定时失效。需要注意的是,这种方法依赖于客户端的时间准确性,因此在实际使用时要考虑客户端时间可能被用户手动修改或系统时间同步问题导致的偏差。 总结来...

    前端开源库-tiny-cookie

    在压缩包文件"tiny-cookie-master"中,可能包含了源代码、示例、文档和测试等内容。源代码可以帮助我们了解库的实现细节,学习如何优雅地处理Cookie操作。示例可以快速上手,了解如何在实际项目中使用该库。文档可能...

    lua-resty-cookie:用于OpenRestyngx_lua的HTTP cookie操作的Lua库

    lua-resty-cookie-该库解析Nginx的HTTP Cookie头,并返回cookie中的每个字段。 目录 地位 该库已准备就绪。 概要 lua_package_path " /path/to/lua-resty-cookie/lib/?.lua;; " ; server { location / test { ...

    一行代码让微信小程序支持 cookieweapp-cookie-master.zip

    1. **安装**: 首先,将`cookieweapp-cookie-master`解压到你的微信小程序项目目录下,或者使用npm命令进行安装:`npm install cookieweapp-cookie --save`。 2. **引入**: 在需要使用Cookie功能的页面或全局`app.js`...

    weapp-cookie:一行代码让微信、头条、百度、支付宝小程序支持 cookie,兼容 uni-app :cookie::rocket: One line of code allows weapp to support cookie(wx weixin wxapp cookie)

    可使用 api 获取、设置 cookie 支持 domain/path 作用域 Install npm install weapp-cookie --save # 将 npm 包复制到 vendor 文件夹,避免小程序可能不能找到文件(Tips:支持npm包的开发环境无需此步) cp -rf ....

    browser-cookie 获取浏览器cookie

    - 如果不确定或不关心所使用的浏览器,则可以使用`browser_cookie3.load()`函数自动检测并加载cookies。 5. **注意事项**: - 确保在使用`browser_cookie3`之前已在相应的浏览器中登录目标网站。 - 需要注意的是...

    Edit-This-Cookie-1.5.0.zip

    1. **下载并解压缩**:首先,从可靠的来源下载 "Edit-This-Cookie-1.5.0.zip" 文件,然后使用解压缩工具(如WinRAR或7-Zip)将其内容提取到本地文件夹。 2. **开启Chrome开发者模式**:打开Chrome浏览器,点击右上角...

    ASP.NET MVC 身份验证-利用cookie记录登录用户

    ASP.NET MVC 身份验证-利用cookie记录登录用户

Global site tag (gtag.js) - Google Analytics