澳门皇冠金沙网站-澳门皇冠844网站

热门关键词: 澳门皇冠金沙网站,澳门皇冠844网站

对cookie的基本操作,Java管理Cookie增删改查操作

更多干货推荐

//删除
Cookie.deleteCookie = function(sName, sPath, sDomain) {
    var sCookie = sName   "=; expires="   (new Date(0)).toGMTString(); // 设置名称为空,过期时间为0,也可以设置过期时间为负数 (var sCookie = sName   "=; expires=-1"; )
    if (sPath) {
        sCookie  = "; path="   sPath;
    }

3.2 读取cookie

读取cookie就像存储cookie一样简单,因为document.cookie对象的值就是cookie。因此任何时候当你想要获取cookie的时候就可以使用document.cookie这个字符串。在document.cookie这个字符串中,它包含了一系列name=value这样通过分号;分隔的键值对。可以使用字符串string的split()方法将cookie字符串分割,获取cookie的每一个name以及对应的value。

获取所有的cookie,如下代码所示,

<html>
    <head>
        <script type="text/javascript">
            function readCookie() {
                var allCookies = document.cookie
                document.write("All cookies : "   allCookies)
                // get all the cookies pairs in an array
                cookieArray = allCookies.split(';')
                for (var i = 0; i < cookieArray.length; i  ) {
                    name = cookieArray[i].split('=')[0]
                    value = cookieArray[i].split('=')[1]
                    document.write("Key is : "   name   " and Value is : "   value)
                }
            }
        </script>
    </head>
    <body>
        <form name="myform" action="">
            <p>click the following button and see the result:</p>
            <input type="button" value="Get Cookie" onclick="readCookie()"/>
        </form>
    </body>
</html>
说明
负数 浏览器关闭后cookie就失效
0 马上清除cookie
正数 设置过期时间,单位:秒

function test() {
    Cookie.setCookie("test", "cookieTest");
    alert(Cookie.getCookie("test"));
    alert(Cookie.getCookie("test2")); // ???
    Cookie.deleteCookie("test");
    alert(Cookie.getCookie("test"));

1. Cookie是什么

Web浏览器和服务器通过HTTP协议进行数据交流和通信,并且HTTP协议是无状态(stateless)的协议,所谓HTTP无状态,总结大概就是如下4点,

  • HTTP协议对于事务处理没有记忆能力。
  • 对同一个url请求没有上下文关系。
  • 每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影。
  • 服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器。

很多商业新的网站都需要在不同页面之间共享会话信息,例如在一个用户完成注册之后,在诸如下单和个人中心页面,都需要用户的登录信息,而无状态的HTTP协议无法达到这样的要求。那么通过什么样的技术才能在不同页面之间共享用户的会话信息呢?这就是cookie的用武之地了。

简单来说,cookie就是为了保存浏览器和服务器之间的会话状态,用以提升用户体验的一个存储介质。说起来cookie真是一个很甜很萌的命名呢,也许正是因为cookie优化了用户体验,像个小甜点一样让人开心吧。

public static Cookie getCookieByName(HttpServletRequest request, String name) { if (StringUtils.isBlank { return null; } Cookie[] cookies = getCookies; if (null != cookies) { for (Cookie cookie : cookies) { if (name.equals(cookie.getName { return cookie; } } } return null;}

Cookie.getCookie = function(sName) {
    var cookieArray = document.cookie.split(";"); //得到分割的名值对
    var tempCookie = new Object();
    for (var i = 0; i < cookieArray.length; i ) {
        var tempArr = cookieArray[i].split("="); //将名称和值分开
        if (tempArr[0] == sName) { //如果是指定的cookie,返回它的值
            return unescape(tempArr[1]);
        }
    }
    return "There's no such a cookie name!";
}

3.3 设置cookie有效期

为了延长当前浏览器会话中的cookie的生命周期,可以通过expires属性为cookie设置一个失效期,如下代码所示,设置cookie的有效期为1个月,

<html>
    <head>
        <script>
            function writeCookie() {
                var now = new Date()
                now.setMonth(now.getMonth()   1)
                cookieValue = escape(document.myform.customer.value)   ";"
                document.cookie = "name="   cookieValue
                document.cookie = "expires="   now.toUTCString()   ";"
                document.write("Setting Cookies : "   "name="   cookieValue)
            }
        </script>
    </head>
    <body>
        <form name="myform" action="">
            Enter name: <inpu type="text" name="customer">
            <input type="button" value="Set Cookie" onclick="writeCookie()">
        </form>

    </body>
</html>
public static boolean addCookie(HttpServletResponse response, String name, String value, int maxAge) { if (StringUtils.isBlank || StringUtils.isBlank { return false; } Cookie cookie = new Cookie(name.trim(), value.trim; if (maxAge <= 0) { maxAge = Integer.MAX_VALUE; } cookie.setMaxAge; cookie.setPath; response.addCookie; return true;}

js被C#、JAVA等开发者视为声名狼藉的附属编程语言是有道理的,比如说,对cookie的操作。js就没有一套类似C#的现成处理方案,而只能由你自己去完成。下面我就将自己学习的用面向对象的思想对cookie进行处理的学习笔记整理一下,以飨读者。
cookie的常见操作分析:
(1)设置cookie 包括了添加和修改功能,事实上如果原有cookie 名称已经存在,那么添加此cookie 就相当于修改了此cookie。在设置cookie 的时候可能还会有一些可选项,用于指cookie  的声明周期、访问路径以及访问域和安全性等等。为了让cookie 中能够存储中文,该方法中还需要对存储的值进行编码。 
(2)取一个cookie的值,该方法接收cookie 名称为参数,返回该cookie 的值。因为在存储该值的时候已经进行了编码,所以取值时应该能自动解码,然后返回(这里其实可以自己设置返回什么,而不单单是"取一个值"而已)。
(3)删除一个cookie,删除cookie 只需将一个cookie 的过期事件设置为过去的一个时间即可,它接收一个cookie 的名称为参数,从而删除此cookie(我的实现还将cookie名称设置为空,这是考虑到今后可能会有多个cookie要设置的时候,名称发生冲突的情况)。
(4)其他 (这里让读者自己去考虑其他的操作,不赘述了。)
好的,你一定又猜到我要说什么了,对头,code is cheap.看代码:

3.1 存储cookie

创建cookie最简单的方式就是为document.cookie对象赋值一段字符串,如下代码所示,

document.cookie = "key1=value1;key2=value2;expires=date";

在这里,expires属性是可选的,如果你为expires属性设置一个有效的日期或时间,那么该cookie将在给定的日期或时间之后失效,此后cookie的值就不能访问了。

注意:cookie的值(value)不能包含逗号,分号;空白符。因此,在存储一个值到cookie之前,应该先用javascript内置的escape()函数对值的内容进行编码;反过来,读取cookie值的时候,应该先用unescape()函数对cookie值进行解码。

存储cookie的代码如下所示,

<html>
    <head>
    <script type="text/javascript">
    function writeCookie() {
        if (document.myform.customer.value == "") {
            alert("Enter some value")
            return
        }
        cookieValue = escape(document.myform.customer.value)   ";"
        document.cookie = "name="   cookieValue
        document.write("Setting Cookies : "   "name="   cookieValue)
    }
    </script>
    </head>
    <body>
        <form name="myform" action="">
            Enter name: <input type="text" name="customer"/>
            <input type="button" value="Set Cookie" onclick="writeCookie()"/>
        </form>
    </body>
</html>

从所有cookie中循环判断进行获取指定cookie。

图片 1图片 2Code
/* 对cookie的操作 */
//创建
var Cookie = new Object();

3.4 删除cookie

如果将cookie删除,那么后面的请求试图访问cookie将会得到空的字符串。为了删除cookie,将cookie的失效期设置为一个过去的时间,如下代码所示,设置了cookie的失效期为1个月之前,

<html>
   <head>
      <script type="text/javascript">
            function writeCookie() {
               var now = new Date();
               now.setMonth( now.getMonth() - 1 );
               cookieValue = escape(document.myform.customer.value)   ";"
               document.cookie="name="   cookieValue
               document.cookie = "expires="   now.toUTCString()   ";"
               document.write("Setting Cookies : "   "name="   cookieValue)
            }
      </script>
   </head>
   <body>
      <form name="myform" action="">
         Enter name: <input type="text" name="customer"/>
         <input type="button" value="Set Cookie" onclick="wirteCookie()"/>
      </form>
   </body>
</html>

1.史上最强 Java 中高级面试题整理

//设置(修改)属性和方法
Cookie.setCookie = function(sName, sValue, oExpires, sPath, sDomain, bSecure) {
    var sCookie = sName   "="   escape(sValue);  // 名称和值
    if (oExpires) {
        sCookie  = "; expires="   oExpires.toGMTString(); // 过期时间
    }
    if (sPath) {
        sCookie  = "; path="   sPath; // 访问路径
    }
    if (sDomain) {
        sCookie  = "; domain="   sDomain; // 访问路径
    }
    if (bSecure) {
        sCookie  = "; true"; // 安全性
    }
    document.cookie = sCookie;
}

2. Cookie工作原理

在浏览器和服务器通信时,服务器以cookie的格式向用户的浏览器发送一些数据,如果浏览器可以接收cookie,它会将cookie以纯文本(plain text record)的形式存储在用户的磁盘上。现在,当用户访问网站的另一个页面的时候,浏览器会将相同的cookie发送给服务器用来取回相关信息。一旦服务器获取到客户端发送的cookie信息,服务器就会知道之前与该浏览器通信时存储的什么内容。

Cookie并不是什么复杂的概念,它是一串记录了如下5个可变长度字段的纯文本,

  • Expires − 失效期,表示cookie失效的日期。如果expires是空白,那么在用户关闭浏览器的时候,该cookie就会失效。
  • Domain − 域名
  • Path − 路径,存储cookie的文件路径或一个web页面。一般来说推荐设置path为空,这样你可以从任何路径或页面获取到cookie。
  • Secure − 安全,如果包含了secure,那么只能从安全的服务器获取cookie;如果secure字段为空,则没有上述限制。
  • Name=Value,cookie都是以键值对的形式进行存储和读取的。

最初,cookie是为CGI编程而设计。cookie中包含的数据可以自动地在web浏览器和web服务器之间传播,所以服务器上的CGI脚本(scripts)可以对客户端存储的cookie进行读写操作。

在javascript中,可以通过Document对象的cookie属性来熟练地操作浏览器的cookie。javascript可以读取、创建、修改和删除应用于当前页面的cookie内容。

Cookie的值。

}

3. Cookie操作

与数据库类似,cookie也有相关的增删改查的操作,总结起来包括cookie的存储、读取、设置有效期以及删除等,下面通过代码逐个讲解。

本文由澳门皇冠金沙网站发布于编辑程序,转载请注明出处:对cookie的基本操作,Java管理Cookie增删改查操作