`
jdlsfl
  • 浏览: 159769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转]如何操作Cookie

阅读更多
因为可能要用到cookie,所以学了一下,但又发现不用了,为了以后不忘,写下此篇笔记。

一、cookie简介    浏览器与WEB服务器之间是使用HTTP协议进行通信的;而HTTP协议是无状态协议。也就是说,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,     它是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。     它是服务器发送给浏览器的体积很小的纯文本信息。     定义:cookie是Web浏览器存储的少量命名数据,它与某个特定的网页和网站关联在一起。     cookie实际上和某一网站和网页关联的,保存用户一定信息的文本文件。

二、cookie的属性     除名字与值外,每个cookie有四个可选属性:     1.expires:指定cookie的生存期。默认情况下cookie是暂时的,浏览器关闭就失效。     2.path:它指定了与cookie关联在一起的网页。默认是在和当前网页同一目录的网页中有效。         如果把path设置为"/",那么它对该网站的所有网页都可见了。     3.domain:设定cookie有效的域名,         如果把path设置为"/",把domain设为".sohu.com",那么 A.sohu.com和B.sohu.com         的所有网页都能够访问此cookie。     4.secure:布尔值,它指定了网络上如何传输cookie。默认情况下,cookie是不安全的,         可以通过一个不安全的,普通的HTTP协议传输;若设置cookie为安全的,那么它将         只在浏览器和服务器通过HTTPS或其它的安全协议连接在一起时才被传输。

三、cookie的操作     cookie可以用javascipt来操作,也可以用JSP来操作。     下面给大家我写的几个例子,相信大家一看就明白了:     1.javascript 操作:    
    <script language="javascript">
    //设置cookie,cookie有效期时间未GMT时间(距1970年1月1日临时的毫秒)
    //例如可以设置setCookie("password","12345",(3600000*24*180)),180有效
    function setCookie (name, value, expires) { 
var expdate = new Date();
expdate.setTime(expdate.getTime() + expires);
document.cookie = name + "=" + escape(value) +
        "; expires=" + expires.toGMTString() +  "; path=/";
    }
    
    //根据cookie名,取得cookie值
    function getCookie(name) {  
      var search; 
      search = name + "="
      offset = document.cookie.indexOf(search)
      if (offset != -1) {
        offset += search.length ;
        end = document.cookie.indexOf(";", offset) ;
        if (end == -1)
          end = document.cookie.length;
        return unescape(document.cookie.substring(offset, end));
      }
      else
        return "";
    }
   
    //删除某一cookie
    function deleteCookie(name) {   
      var expdate = new Date();
      expdate.setTime(expdate.getTime() - (3600 *24* 1000 * 1));
      setCookie(name, "", expdate);
    }
   
    //检查是否存在此cookie
    function checkCookie(cookieName,cookieValue){
if (getCookie(cookieName)==cookieValue){
  return true;
}else{
  return false;
}
    }
    </script>

    2.jsp 操作:     java中有个Cookie类:javax.servlet.http.Cookie


    //读取cookie的通用类,以Cookie[] 做参数传个构造函数;
    package com.test;
    import javax.servlet.http.*;
/**
* @author sheng_li
*
*/
public class ComCookie {
private Cookie[] cookies;
private Cookie cookie;
public ComCookie(Cookie[] cs){
  cookies = cs; 
}
/**
  * 通过cookieName,取得cookieValue,如果没有此cookie则返回默认值
  * @param cookieName
  * @param defaultValue
  * @return
  */
public String getCookieValue(String cookieName,String defaultValue) {
  for(int i=0; i< cookies.length; i++) {
    Cookie cookie = cookies[i];
    if (cookieName.equals(cookie.getName()))
   return(cookie.getValue());
  }
  return(defaultValue);
}
/**
  * 类方法,通过cookieName,取得cookieValue
  * @param cookies
  * @param cookieName
  * @param defaultValue
  * @return
  */
public static String getCookieValue(Cookie[] cookies,
       String cookieName,
       String defaultValue) {
  for(int i=0; i < cookies.length; i++) {
    Cookie cookie = cookies[i];
    if (cookieName.equals(cookie.getName()))
   return(cookie.getValue());
  }
  return(defaultValue);
}
}


JSP中:(以下内容来源于网络)

JSP是使用如下的语法格式来创建cookie的:   Cookie cookie_name =new Cookie("Parameter","Value");   例如:Cookie newCookie =new Cookie("username","waynezheng"); response.addCookie(newCookie);   解释:JSP是调用Cookie对象相应的构造函数Cookie(name,value)用合适的名字和值来创建Cookie,然后 Cookie可以通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头,本例中Cookie对象有两个字符串参数:username,waynezheng。注意,名字和值都不能包含空白字符以及下列字符: @ : ;? , " / [ ] ( ) =

  处理Cookie的属性   看到这里,有的朋友又要问了:我光知道如何创建Cookie有什么用呀?是呀,光知道如何创建Cookie而不知道怎么使用是不够的。在JSP中,程序是通过cookie.setXXX设置各种属性,用cookie.getXXX读出cookie的属性,现把Cookie的主要属性,及其方法列于下,供大家参考:  读取客户端的Cookie

类型 方法名 方法解释
String getComment() 返回cookie中注释,如果没有注释的话将返回空值.
String  getDomain() 返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同 一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始(例如.yesky.com) 
int  getMaxAge()  返回Cookie过期之前的最大时间,以秒计算。 
String getName()  返回Cookie的名字。名字和值是我们始终关心的两个部分,笔者会在后面详细介绍 getName/setName。 
String getPath() 返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。
boolean getSecure() 如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。
String  getValue() 返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。 
int getVersion()  返回Cookie所遵从的协议版本。 
void setComment(String purpose) 设置cookie中注释。
void setDomain(String pattern) 设置cookie中Cookie适用的域名
void setMaxAge(int expiry)  以秒计算,设置Cookie过期时间。
void setPath(String uri) 指定Cookie适用的路径。 
void  setSecure(boolean flag) 指出浏览器使用的安全协议,例如HTTPS或SSL。 
void setValue(String newValue) cookie创建后设置一个新的值。 
void setVersion(int v) 设置Cookie所遵从的协议版本。    


   在Cookie发送到客户端前,先要创建一个Cookie,然后用addCookie方法发送一个HTTP Header。  JSP将调用request.getCookies()从客户端读入Cookie,getCookies()方法返回一个HTTP请求头中  的内容对应的Cookie对象数组。你只需要用循环访问该数组的各个元素,调用getName方法检查各  个Cookie的名字,至找到目标Cookie,然后对该Cookie调用getValue方法取得与指定名字关联的值 。

例如
<%
 String userName=request.getParameter("username");//从提交的HTML表单中获取,用户名
 Cookie theUsername=new Cookie("username",userName);//以"username",userName值/对创建一个Cookie
 response.addCookie(theUsername);
%>
..............
<%
 Cookie myCookie[]=request.getCookies();//创建一个Cookie对象数组
 for(int n=0;n=cookie.length-1;i++);//设立一个循环,来访问Cookie对象数组的每一个元素
 Cookie newCookie= myCookie[n];
 if(newCookie.getName().equals("username")); //判断元素的值是否为username中的值
  {%>
   你好,<%=newCookie.getValue()%>!//如果找到后,向他问好
  <%}
%>
  设置Cookie的存在时间,及删除Cookie 在JSP中,使用setMaxAge(int expiry)方法来设置Cookie的存在时间,
参数expiry应是一个整数。正值表示cookie将在这么多秒以后失效。 注意这个值是cookie将要存在的最大时间,
而不是cookie现在的存在时间。 负值表示当浏览器关闭时,Cookie将会被删除。零值则是要删除该Cookie。 如:   
<%
 Cookie deleteNewCookie=new Cookie("newcookie",null);
 deleteNewCookie.setMaxAge(0);
 deleteNewCookie.setPath("/");
 response.addCookie(deleteNewCookie);
%>

分享到:
评论
1 楼 liuzl121 2012-02-07  
收藏下  写楼主的转载

相关推荐

    C#操作cookie,解密加密cookie

    本文将深入探讨如何在C#中操作Cookie,以及如何实现Cookie的加密与解密,确保数据的安全传输。 ### C#中的Cookie操作 #### 1. CookieContainer类的理解 `CookieContainer`是.NET Framework中用于存储、管理和操作...

    js操作Cookie子键+Jquery调用Ajax方法执行后台操作

    本文将深入探讨如何使用JS操作Cookie的子键,以及如何利用jQuery的Ajax方法进行无刷新的数据提交,并接收后台返回的值。 首先,让我们了解什么是Cookie和它的子键。Cookie是一种在客户端存储小量信息的方法,它由...

    js操作cookie类

    在提供的链接中,你可以在线尝试这段代码,将代码复制到指定区域并点击运行,就可以看到实际的Cookie操作效果。 总结来说,JavaScript中的Cookie是通过`document.cookie`来管理的,`getCookie`函数用于读取Cookie,...

    js操作cookie

    总结,JavaScript操作Cookie是Web开发中的基础技能,它允许我们在客户端存储和管理数据,实现诸如用户登录状态、个性化设置等功能。通过学习和实践,我们可以更好地掌握这一技术,提高Web应用的用户体验。

    Flash cookie操作

    JavaScript通常不能直接操作Flash Cookie,但通过Flash ActionScript接口,可以实现JS与Flash之间的通信,从而间接实现对Flash Cookie的操作。这种技术被称为Bridge或External Interface。 在JS中,我们可以使用...

    添加、修改、删除cookie

    以上就是使用C#操作Cookie的基本流程。需要注意的是,由于Cookie是基于HTTP协议的,它们只能在服务器与浏览器之间传递,因此所有对Cookie的操作都需要在服务器端进行。此外,由于浏览器对每个站点都有Cookie数量和...

    常用的java操作代码,获取IP,写cookie,日期转换计算

    常用的java操作代码,获取IP,写cookie,日期转换,去除html代码,时间计算等

    在C#中可以使用CookieContainer 对象来保存登录后的Cookie信息

    `CookieContainer`是.NET框架中的一个类,它提供了存储、管理和操作Cookie的方法。通过这个类,我们可以方便地添加、获取或删除Cookie。这对于处理那些需要登录验证或维护用户会话的应用程序尤为重要。 #### 如何...

    jquery cookie官方插件

    jQuery Cookie是jQuery的一个扩展插件,它提供了一种简单易用的方式来操作Cookie,使得开发者无需深入了解Cookie的工作原理,就能方便地读写Cookie。 **一、jQuery Cookie插件的安装与引入** 要使用jQuery Cookie...

    documentCookie的使用

    在JavaScript中,我们可以通过`document.cookie`属性来操作Cookie。 2. **Cookie的基本结构** 每个Cookie由名称(cookieName)和值(cookieValue)组成,用等号分隔,如`cookieName=cookieValue`。多个Cookie之间...

    cookie 代码小例子

    在JavaScript中,我们可以使用`document.cookie`属性来操作Cookie。以下是一个创建Cookie的例子: ```javascript function setCookie(name, value, days) { var expires = ""; if (days) { var date = new Date...

    c# winform 火狐浏览器 查看cookie

    在C# WinForm应用中,实现火狐浏览器的Cookie查看功能涉及到对Firefox浏览器存储Cookie的方式以及如何用C#代码操作这些数据的理解。火狐浏览器使用SQLite数据库来存储用户浏览历史、书签、密码以及Cookie等信息。...

    JavaScript入门之事件、cookie、定时等

    #### Cookie的操作 - 设置Cookie:服务器通过响应头的`Set-Cookie`字段来设置cookie。 - 读取Cookie:客户端JavaScript可以通过`document.cookie`属性读取cookie字符串,然后通过分割字符串来解析各个cookie。 ###...

    获得上次访问时间(cookie)

    本文将深入探讨如何使用Cookie来获取用户的上次访问时间,并讨论如何在Java Servlet环境中操作Cookie来删除访问时间记录。 **一、Cookie基本概念** Cookie是由服务器端发送到浏览器并存储在本地的一小块数据,它...

    cookie实现商品浏览记录

    在网页应用中,Cookie是一种非常重要的技术...总之,使用Cookie实现商品浏览记录是一种常见的实践,通过合理地设置和操作Cookie,可以为用户提供个性化的浏览体验,同时注意控制Cookie的大小和数量,以保持良好的性能。

    阿里系cookie加密(acw-sc-v2)算法 ZIP包案例为雪球Cookie加密

    阿里系的cookie加密技术,尤其是ACW-SC-V2版本,是阿里巴巴集团为了保障用户数据安全而设计的一种加密机制。这种加密方式广泛应用于其旗下的各个产品和服务中,例如在本案例中的雪球平台。雪球是一款财经资讯和社交...

    Cookie的存入和读取,并解决中文问题

    - `CookieProcess.java`: 这可能是一个Java类,用于处理Cookie的操作,包括创建、读取和设置Cookie的属性。 - `addCookies.jsp`: 这是一个JSP页面,它可能包含了向客户端发送Cookie的逻辑,通过调用`response.add...

    JS操作Cookie,子键(增删改查)纯js页面

    本教程将深入探讨如何使用纯JavaScript操作Cookie,尤其是涉及到Cookie的子键(subkeys)的增删改查操作,以及如何利用这些信息进行异步调用,实现无刷新页面交互。 首先,我们需要了解Cookie的基本结构。一个...

    Jquery.cookie

    **jQuery.cookie插件详解** ...总的来说,`jQuery.cookie`插件为开发者提供了便利的接口,使得在前端项目中管理和操作Cookie变得轻而易举。了解并熟练运用这些方法,可以帮助你更好地实现前端功能,提升用户体验。

    jquery.cookie实现json添加、查询、删除

    通过序列化和反序列化,我们可以轻松地在Cookie中操作JSON数据,实现添加、查询和删除功能。不过需要注意的是,由于Cookie大小限制(通常为4KB),不适合存储大量或复杂的数据。对于这类需求,更适合使用本地存储...

Global site tag (gtag.js) - Google Analytics