1. 设置cookie
  1.1 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:

 document.cookie="user_Id=828";

  1.2 如果要一次存储多个名/值对,可以使用分号加空格(; )隔开,例如:

 document.cookie="user_Id=828; user_Name=hulk";

  1.3 cookie的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格。在cookie的名中做到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?

    方法是用escape()函数进行编码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于cookie值中,而且使用此种方案还可以避免中文乱码的出现。例如:  

 document.cookie="str="+escape("I love you");
//等价于:
document.cookie="str=I%20love%20you";

    当使用escape()编码后,在取出值以后需要使用unescape()进行解码才能得到原来的cookie值,如果没有空格和汉字应该可以直接显示正确的值,具体遇到再试试吧。

  1.4 Cookies就像一个大盒子,里面又有好多小盒子,如下例子,document.cookie相当于找到大盒子,name相当于将一个小盒子起个名字,name=value相当于将value放到名为name的小盒子中,可以同时存在多个名字不同的小盒子,如下写法可以存多个值:

 document.cookie="name=value";
document.cookie="name1=value1";
document.cookie="name2=value2";
...

  1.5 如果要改变一个cookie的值,只需重新赋值,如下代码这样获取到的Cookies值为"222",而不是"111"(获取问题后面说)。:

 document.cookie="user_Id=111";
document.cookie="user_Id=222";

2. 获取cookie的值

  2.1 cookie的值可以由document.cookie直接获得,写法如下代码所示,但是这将获得以分号隔开的多个键/值对所组成的字符串,这些键/值对包括了该域名下的所有cookie,

 var strCookie=document.cookie;//获取该域名下所有Cookies
alert(strCookie);//弹窗显示

  2.2 如方法上方法中,虽然能获取到的Cookie,但是用户必须自己分析这个字符串,来获取指定的cookie值,比较麻烦,这时有第二种方法,在最后有说明,也给出了代码,简单说就是设置个方法,直接调用,急用的朋友可以直接到最后看。

3. 给cookie设置终止日期  

  不设置终止时间的Cookies都属于单会话cookie,即浏览器关闭后这些cookie将会被清除,因为会话cookie是存在内存中的。

  在实际开发中,cookie常常需要长期保存,例如保存用户登录的状态,记住密码,页面设置等信息。这可以用下面的选项来实现:

 document.cookie="user_Id=111; expires=GMT_String";

  其中GMT_String是以GMT格式表示的时间字符串,这条语句就是将userId这个cookie设置为GMT_String表示的过期时间,超过这个时间,cookie将会被自动删除,访问不到。例如:

  如果要将cookie设置为10天后过期,可以这样实现:

 <script language="JavaScript" type="text/javascript">

 //获取当前时间

 var date=new Date();

 var expireDays=10; //将date设置为10天以后的时间

 date.setTime(date.getTime()+expireDays*24*3600*1000);
/*将userId和userName两个cookie设置为10天后过期*/ document.cookie="user_Id=111;user_Name=escape(xiongda);expire="+date.toGMTString(); </script>

4. 删除cookie
  cookies没有直接删除的语句(我没找到,哪位大神知道求告知...),为了达到删除指定cookie的方法,可以将其过期时间设定为一个过去的时间,例如:

 <script language="JavaScript" type="text/javascript">
//获取当前时间
var date=new Date();
//将date设置为过去的时间
date.setTime(date.getTime()-1000);
//将user_Id这个cookie删除
document.cookie="user_Id=111; expire="+date.toGMTString();
</script>

5. 指定可访问cookie的路径

    默认情况下,如果在某个页面创建了一个cookie,那么该页面所在目录中的其他页面也可以访问该cookie。如果这个目录下还有子目录,则在子目录中也可以访问。

  例如在 www.xxxx.com/total/main.jsp 中所创建的cookie,可以被 www.xxxx.com/total 或 www.xxxx.com/total/some/c.jsp所访问,但不能被www.xxxx.com/d.html访问。

  为了控制cookie可以访问的目录,需要使用path参数设置cookie,语法如下:

 document.cookie="name=value; path=/total";

  其中total表示可访问cookie的目录。例如:

 document.cookie="user_Id=111; path=/page";

表示当前cookie仅能在page目录下使用。

  如果要使cookie在整个网站下可用,可以将cookie的path指定为根目录,例如:

 document.cookie="userId=111; path=/";

6. 指定可访问cookie的主机名(这部分没有亲自实践,一般不这样用)

  和路径类似,主机名是指同一个域下的不同主机,例如:www.baidu.com和www.google.com就是两个不同的主机名。默认情况下,一个主机中创建的cookie在另一个主机下是不能被访问的,但可以通过domain参数来实现对其的控制,其语法格式为:

document.cookie="name=value;

domain=cookieDomain";

以google为例,要实现跨主机访问,可以写为:

 document.cookie="name=value;
domain=.google.com";

这样,所有google.com下的主机都可以访问该cookie。

参考网上的例子,以及自己实践所得,写了一个获取和存储cookie的js方法,使用还是挺方便的,cookie是真的好用,由于js使用session比较麻烦,写页面还是cookie实用

主要参考这位道友的文章,修改了一些表述方式,挂上链接,大家可以做对比参考,链接:http://www.cnblogs.com/Jackie-sky/p/3672544.html

综合示例:cookie设置较为复杂,但是使用频率高,并具有一定的相似性。因此可以定义几个函数来完成cookie的通用操作,从而实现代码的复用。下面列出了常用的cookie操作及其函数实现,需要的朋友可以复制走,放到自己的项目就好了。

 /*创建cookie 无属性*/
function SetCookie(name,value){//键/值
//默认传值,不设置任何变量
  document.cookie=name+"="+escape(value);
}
/*创建cookie 设置访问路径*/
function SetCookiePath(name,value){//键/值
//将cookie设置为根目录下的所有页面可以访问,具体项目可以自己更改
  document.cookie=name+"="+escape(value)+";path=/";
} /*创建cookie 设置失效时间*/
function SetCookieTime(name,value,expireHours){//键/值/时间(天)
  var cookieString=name+"="+escape(value);
  var date=new Date();
date.setTime(date.getTime+expireHours*24*60*60*1000);
cookieString=cookieString+";expire="+date.toGMTString();
document.cookie=cookieString;
} /*创建cookie 同时设置访问路径和失效时间*/
function SetCookieTimePath(name,value,expireHours){//键/值/时间(天)
//将cookie设置为根目录下的所有页面可以访问,并且有时间限制,具体项目可以自己更改
var cookieString=name+"="+escape(value);
var date=new Date();
date.setTime(date.getTime+expireHours*24*60*60*1000);
cookieString=cookieString+";expire="+date.toGMTString();
cookieString=cookieString+";path=/"//具体项目可更改path值
document.cookie=cookieString;
}
/*根据cookie的键查询cookie*/
function GetCookie(name){//要查询的键
  var arr,reg=new RegExp("(^|)"+name+"=([^;]*)(;|$)");
  if(arr=document.cookie.match(reg))
  return unescape(arr[2]);
  else
  return null;
} /*根据cookie的键删除cookie*/
function DeleteCookie(name){//要删除的键名
  var date=new Date();
  date.setTime(date.getTime()-10000);
  document.cookie=name+"=v; expire="+date.toGMTString();
}

在jsp页面的js中使用Cookie的原理介绍以及相应方法的代码的更多相关文章

  1. 关于前台jsp页面的js取值问题

    在后程序中传一个字符串到前台页面上,后台代码model.addAttribute("ccc", "cccc"); 在页面js上用下面两种方法取值 1. var ...

  2. thinkphp在前端页面的js代码中可以使用 U方法吗? 可以使用模板变量如__URL__等吗?

    thinkphp在前端页面的js代码中可以使用 U方法吗? : 可以的! tp的U方法, 是"全局的", 什么是全局的? 就是, 可以在 "任何地方"使用的: ...

  3. javascript 如何访问 action或者controller 传给 jsp 页面的值

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  4. javascript笔记——点击按钮(或超链接)如何跳转到另外一个页面并执行目标页面的js函数

    页面跳转同时执行js代码$(function(){});url参数传递 标题的前半部分其实不必赘述,按钮也可以换成超链接.. 假设是需要在A页面上的一个按钮,点击后跳转到B页面,传一些参数后且并B页面 ...

  5. jsp页面的html代码显示不出来,提示Uncaught SyntaxError: Unexpected token <

    jsp页面的html代码显示不出来,提示Uncaught SyntaxError: Unexpected token < <input type="hidden" na ...

  6. 引用公共页面的js函数报错

    对于网站来说很多页面之间都有着大量的共享模块,如页头,页脚和用户栏等.很多时候为了方便.省事,我们在公共模块写函数,然后在别的页面里调用.但我们在引用公共的js函数时,有些可以引用,有些却报错:这是因 ...

  7. 【原创】js中利用cookie实现记住密码功能

    在登录界面添加记住密码功能,我首先想到的是在java后台中调用cookie存放账号密码,大致如下: HttpServletRequest request HttpServletResponse res ...

  8. 域名ip自动跳转 跳转指定页面的js

    域名ip自动跳转 跳转指定页面的js 为了应对百度审核,需要客户的网站在个别地区跳转到另一个页面,就搞到了这段代码,屡试不爽,超实用.下面把地址换成你要访问的网站url地址或者文件url地址即可.超实 ...

  9. 今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的解决了这个问题。

    今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的 ...

随机推荐

  1. JAVA中String = null 与 String = "" 的区别

    JAVA中String = null 与 String = ""的区别 笔者今天在Debug的时候发现的NPE(NullPointerException),辛辛苦苦地调试了半天,终 ...

  2. 团队作业5——测试与发布(Alpha版本)

    Deadline: 2017-5-7 22:00PM,以博客发表日期为准 评分基准: 按时交 - 有分,检查的项目包括后文的两个方面 测试报告 发布说明 晚交 - 0分 迟交一周以上 - 倒扣本次作业 ...

  3. 1001.A+B Format (20)的解题

    关于A+B的正确打开方式! 解题思路 gitub 也是研究了很久才学会了本地上传,中间还遇到一些问题,多亏学长的教程跟搜索引擎的帮忙解决啦! 我想还是了解题目的意思是解题的最关键,通过了查词软件跟自身 ...

  4. 第二次项目冲刺(Beta阶段)5.21

    1.提供当天站立式会议照片一张 会议内容: ①检查前一天的任务情况,做出自我反省. ②制定新一轮的任务计划. 2.每个人的工作 (1)工作安排 队员 今日进展 明日安排 王婧 #53实现多对多查重 # ...

  5. 201521123017 《Java程序设计》第8周学习总结

    1. 本周学习总结 2. 书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 for (int i = list.size()-1; i >=0; i--) {//从最后一 ...

  6. 201521123117 《Java程序设计》第6周学习总结

    1. 本周学习总结 2. 书面作业 Q1.clone方法 1.Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 答:在自定义的类中覆盖cl ...

  7. 201521123085 《JAVA程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法 1.1 Object对 ...

  8. 201521123062《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.pare ...

  9. 201521123062《Java程序设计》第1周学习总结

    1.本章学习总结 认识Java平台运行环境,运行软件 初步认识JDK,JRE,JVM基本含义 书面作业 1.为什么java程序可以跨平台运行?执行java程序的步骤是什么? Java平台运行在各平台的 ...

  10. Java 第十一周总结

    1. 本周学习总结 2. 书面作业 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法实现互斥同步访 ...