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. centos 7 && dotnet core 2.0 && nginx && supervisor

    前提 系统:centos 7 目录:/home/wwwroot/www.wuball.com dotnet core 2.0 官方指引 sudo rpm --import https://packag ...

  2. Java的构造器

    初始化和清理是涉及安全的两个问题.C++和Java都引入了构造器(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法. 可以假想为编写的每个类都定义一个initialize()方 ...

  3. 如何在sublime+chrome中调试php代码?

    1.搭建php本地运行环境具体点击如何使用phpstudy本地搭建多站点(每个站点对应不同的端口) 2.下载php_xdebug.dll, [5.3版以上的php下载地址]http://pecl.ph ...

  4. 软件工程(GZSD2015)学生博客列表

    2015年贵州师范大学软件工程课程学生博客列表 陈小丽 郑倩 唐洁 周娟 李利思 肖俊 罗文豪 周静 徐明艳 毛涛 邓洪虹 岳庆 李盼 安坤 何亚 涂江凤 张义平 杨明颢 杨家堂 胡贵玲 寿克霞 吴明 ...

  5. 201521123114 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 1.数据库的定义:是为了实现一定目的按某种规则组织起来的"数据"的"集合" ...

  6. [js高手之路]Node.js模板引擎教程-jade速学与实战4-模板引用,继承,插件使用

    一.block 模块复用 把需要复用的模块用block定义 block后面跟上模块的名字,引用一次block 内容就会被复用一次 编译之后的结果: 二,继承模板(extends) 在实际开发中,网站的 ...

  7. 关于args的一个小bug

    我在开始学习Java的时候就有点疑惑,到底main方法中的args到底是什么?经过我的一些思考,然后结合代码写一点自己的看法. 下面来看一段代码: /** * @author 薛定谔的猫 * 关于ar ...

  8. 二分求最长上升子序列 二分LIS

    #include <iostream> #include <cstring> #define N 50010 using namespace std; int n; int n ...

  9. IDEA配置Tomcat

    如何用IDEA写Servlet在我别的博文有! 注意:如果不能成功启动Tomcat,很有可能是JDK版本和Tomcat版本不匹配,此时你可以降低JDK版本试试

  10. JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】

    什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...