一直都是简单去js实现cookie的一些操做,今天把js对cookie操做系统的整理了一遍,包括:js读取cookie,js添加cookie,js删除cookie,示例以下:javascript
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> <title>cookie处理函数练习(为我所写,非我所想:改善面向对象)</title> <mce:script language="JavaScript" type="text/javascript"><!-- function addCookie(objName,objValue,objHours){//添加cookie var str = objName + "=" + escape(objValue); if(objHours > 0){//为0时不设定过时时间,浏览器关闭时cookie自动消失 var date = new Date(); var ms = objHours*3600*1000; date.setTime(date.getTime() + ms); str += "; expires=" + date.toGMTString(); } document.cookie = str; alert("添加cookie成功"); } function getCookie(objName){//获取指定名称的cookie的值 var arrStr = document.cookie.split("; "); for(var i = 0;i < arrStr.length;i ++){ var temp = arrStr[i].split("="); if(temp[0] == objName) return unescape(temp[1]); } } function delCookie(name){//为了删除指定名称的cookie,能够将其过时时间设定为一个过去的时间 var date = new Date(); date.setTime(date.getTime() - 10000); document.cookie = name + "=a; expires=" + date.toGMTString(); } //读取出来全部的cookie字筗串了 function allCookie(){//读取全部保存的cookie字符串 var str = document.cookie; if(str == ""){ str = "没有保存任何cookie"; } alert(str); } function $(m,n){ return document.forms[m].elements[n].value; } function add_(){ var cookie_name = $("myform","cookie_name"); var cookie_value = $("myform","cookie_value"); var cookie_expireHours = $("myform","cookie_expiresHours"); addCookie(cookie_name,cookie_value,cookie_expireHours); } function get_(){ var cookie_name = $("myform","cookie_name"); var cookie_value = getCookie(cookie_name); alert(cookie_value); } function del_(){ var cookie_name = $("myform","cookie_name"); delCookie(cookie_name); alert("删除成功"); } // --></mce:script> //添加cookie function addCookie(name,value,expires,path,domain){ var str=name+"="+escape(value); if(expires!=""){ var date=new Date(); date.setTime(date.getTime()+expires*24*3600*1000);//expires单位为天 str+=";expires="+date.toGMTString(); } if(path!=""){ str+=";path="+path;//指定可访问cookie的目录 } if(domain!=""){ str+=";domain="+domain;//指定可访问cookie的域 } document.cookie=str; } //取得cookie function getCookie(name){ var str=document.cookie.split(";") for(var i=0;i<str.length;i++){ var str2=str[i].split(”=”); if(str2[0]==name)return unescape(str2[1]); } } //删除cookie function delCookie(name){ var date=new Date(); date.setTime(date.getTime()-10000); document.cookie=name+”=n;expire=”+date.toGMTString(); } //删除全部cookie function delAllCookie() { tmpArr = document.cookie.split(";"); delKey = new Array(); for(i in tmpArr) { if(tmpArr[i].indexOf("mykeywords") != -1) { delKey.push(decodeURIComponent(tmpArr[i].split("=")[0])); } } today = new Date(); today.setTime(today.getTime() - 10000); for(i in delKey) { name = delKey[i]; document.cookie = name+"='';expires="+today.toGMTString(); } tmpArr = delKey = today = ""; }
// Date() 的构造器设置以毫秒为单位 // .getTime() 方法返回时间,单位为毫秒 // 因此要设置15分钟到期,要用60000毫秒乘15分钟 var expiration = new Date((new Date()).getTime() + 15 * 60000); document.cookie = "username=" + escape(form.username.value)+ "; expires =" + expiration.toGMTString() + "; path=" + "/" + "; _ domain=" + "mydomain.com" + "; secure"; // 咱们定义一个函数,用来读取特定的cookie值。[获得指定名字的cookie对象哦!] function getCookie(cookie_name) { var allcookies = document.cookie; var cookie_pos = allcookies.indexOf(cookie_name); // 若是找到了索引,就表明cookie存在, // 反之,就说明不存在。 if (cookie_pos != -1) { // 把cookie_pos放在值的开始,只要给值加1便可。 cookie_pos += cookie_name.length + 1; var cookie_end = allcookies.indexOf(";", cookie_pos); if (cookie_end == -1) { cookie_end = allcookies.length; } var value = unescape(allcookies.substring(cookie_pos, cookie_end)); } return value; } // 调用函数 var cookie_val = getCookie("username");
<%@ page contentType="text/html; charset=ISO8859_1" %> <% Cookie _cookie=new Cookie("user_delfancom", "delfan"); _cookie.setMaxAge(30*60); // 设置Cookie的存活时间为30分钟 response.addCookie(_cookie); // 写入客户端硬盘 out.print("写Cookie完成"); %>
<% Cookie cookies[]=request.getCookies(); // 将适用目录下全部Cookie读入并存入cookies数组中 Cookie sCookie=null; String sname=null; String name=null; if(cookies==null) // 若是没有任何cookie out.print("none any cookie"); else { out.print(cookies.length + "<br>"); for(int i=0;i<cookies.length; i++) // 循环列出全部可用的Cookie { sCookie=cookies[i]; sname=sCookie.getName(); name = sCookie.getValue(); out.println(sname + "->" + name + "<br>"); } } %>须要注意的两个问题: 1. Cookie有个适用路径的问题, 就是说若是 writecookie.jsp和readcookie.jsp要放在赞成目录下, 若是不在同一目录下, 则写的时候须要设置路径,为readcookie.jsp所在的路径. 2. 读入Cookie数组的时候须要判断是否为空(null), 网上不少代码都没有写出这一点.