`

cookie 使用实例简介 【转】

阅读更多
如何创建Cookie

   import="javax.servlet.http.Cookie"

  说了这么多,大家一定很想知道JSP是如何创建cookie了。JSP是使用如下的语法格式来创建cookie的:

  Cookie cookie_name =new Cookie("Parameter","Value");

  例如:

Cookie username_Cookie =new Cookie("username","waynezheng");
response.addCookie(username_Cookie);

  解释:JSP是调用Cookie对象相应的构造函数Cookie(name,value)用合适的名字和值来创建Cookie,然后Cookie可以通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头

本例中Cookie对象有两个字符串参数:username,waynezheng。注意,名字和值都不能包含空白字符以及下列字符:@ : ;? , " / [ ] ( ) =

  处理Cookie的属性

  看到这里,有的朋友又要问了:我光知道如何创建Cookie有什么用呀?是呀,光知道如何创建Cookie而不知道怎么使用是不够的。

在JSP中,程序是通过cookie.setXXX设置各种属性,用cookie.getXXX读出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发送到客户端前,先要创建一个Cookie,然后用addCookie方法发送一个HTTP Header。JSP将调用request.getCookies()从客户端读入Cookie,getCookies()方法返回一个HTTP请求头中的内容对应的Cookie对象数组。你只需要用循环访问该数组的各个元素,调用getName方法检查各个Cookie的名字,直至找到目标Cookie,然后对该Cookie调用getValue方法取得与指定名字关联的值。
  例如
  <%
   //从提交的HTML表单中获取,用户名
   String userName=request.getParameter("username");


   //以"username", userName 值/对 创建一个Cookie
   Cookie theUsername=new Cookie("username",userName);


   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); //删除该Cookie
   deleteNewCookie.setPath("/");
   response.addCookie(deleteNewCookie);
  %>  

 

 

一、 前言

说起来,Cookie应该是一种应用较久的技术了。早在HTML刚刚出现的时候,在每个独立的页面之间没有办法记录和标识不同的用户。后来人们就发明了Cookie技术,当用户访问网页时,它能够在访问者的机器上创立一个文件,我们把它叫作Cookie,写一段内容进去,来标识不同的用户。如果下次用户再访问这个网页的时候,它又能够读出这个文件里面的内容,这样网页就知道上次这个用户已经访问过该网页了。

虽然现在网页的制作技术比起几年以前已经发展了许多。不过有些时候,Cookie还是能够帮我们很多忙的。接下来,我们就来看看,如何在写JSP文件的时候,用JSP操作Cookie。
=======================================

二、 保存写入Cookie

其实用JSP操作Cookie是非常简单的,我们来看下面一段JSP程序:

........(中间略)

//保存写入Cookie
<%
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName, "Test_Content");
cookie.setMaxAge(10);   //存活期为10秒
response.addCookie(cookie);
%>

........(其他内容)


这样我们就设置了一个Cookie,很简单吧?

我们来仔细研究一下这段代码:

  Cookie cookie=new Cookie(cookieName, "Test_Content");

这一行建立了一个Cookie对象,初始化有两个参数,第一个参数cookieName定义了Cookie的名字,后一个参数,也是一个字符串,定义了Cookie的内容。也就是我们希望网页在用户的机器上标识的文件内容。

接下来一行:cookie.setMaxAge(10),调用了Cookie中的setMaxAge方法,设定Cookie在用户机器硬盘上的存活期为10秒。一个Cookie在用户的硬盘里面存在的时间并不是无限期的,在建立Cookie对象的时候,我们必须制定Cookie的存活期,超过了这个存活期后,Cookie文件就不再起作用,会被用户的浏览器自行删除。如果我们希望用户在下次访问这个页面的时候,Cookie文件仍然有效而且可以被网页读出来的话,我们可以将Cookie的存活期设得稍微长一些。比如cookie.setMaxAge(365*24*60*60)可以让Cookie文件在一年内有效。

三、 读取出Cookie

Cookie文件创建好后,自然还需要我们把它读出来,否则我们不是白费力气吗?接下来我们看看如何读出在用户硬盘上的Cookie。

........(中间略)

Name value

<%
Cookie cookies[]=request.getCookies(); //读出用户硬盘上的Cookie,并将所有的Cookie放到一个cookie对象数组里面
Cookie sCookie=null;
String svalue=null;
String sname=null;

for(int i=0;i<cookies.length-1;i++{    //用一个循环语句遍历刚才建立的Cookie对象数组
sCookie=cookies[i];   //取出数组中的一个Cookie对象

sname=sCookie.getName(); //取得这个Cookie的名字
svalue=sCookie.getValue(); //取得这个Cookie的内容
%>

<%
}
%>

  name    value
<%=name%> <%=svalue%>

........(其他内容)

这一小段JSP文件可以读出用户硬盘上的所有有效的Cookie,也就是仍然在存活期内的Cookie文件。并用表格的形式列出每个Cookie的名字和内容。

我们来逐行分析一下这段代码:
Cookie cookies[]=request.getCookies() 我们用request.getCookies()读出用户硬盘上的Cookie,并将所有的Cookie放到一个cookie对象数组里面。
接下来我们用一个循环语句遍历刚才建立的Cookie对象数组,我们用sCookie=cookies[i]取出数组中的一个Cookie对象,然后我们用sCookie.getValue()和sCookie.getName()两个方法来取得这个Cookie的名字和内容。

通过将取出来的Cookie的名字和内容放在字符串变量中,我们就能对其进行各种操作了。在上面的例子里,可通过循环语句的遍历,将所有Cookie放在一张表格中进行显示。
=======================================

四、 需要注意的一些问题

通过上面两个简单的例子,可以看到,用JSP进行Cookie的操作,是非常简单的。不过我们在实际操作中还要注意一些问题:

1. Cookie的兼容性问题

Cookie的格式有2个不同的版本,第一个版本,我们称为Cookie Version 0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC 2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目前还不被Javax.servlet.http.Cookie包所支持。

2. Cookie的内容

同样的Cookie的内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。这也就是为什么我们在例子中设定Cookie的内容为"Test_Content"的原因。

虽然在Cookie Version 1规定中放宽了限制,可以使用这些字符,但是考虑到新版本的Cookie规范目前仍然没有为所有的浏览器所支持,因而为保险起见,我们应该在Cookie的内容中尽量避免使用这些字符。

 

分享到:
评论

相关推荐

    jquery cookie 实例下载

    本实例聚焦于jQuery与Cookie的交互,包括如何设置、删除和查看Cookie,以及如何设定其有效期。下面我们将深入探讨这些知识点。 首先,让我们了解什么是jQuery Cookie。jQuery本身并不直接支持Cookie操作,但有一些...

    jquerycookie实例

    总结来说,“jquerycookie实例”是关于使用jQuery和相关的Cookie插件来管理浏览器Cookie的实践应用。了解这些基本操作对于进行用户跟踪、个性化体验以及维持会话状态等Web开发任务至关重要。通过熟练掌握这些技术,...

    Flash as3 cookie 操作实例源码

    这个“Flash AS3 Cookie操作实例源码”压缩包包含了一个具体的示例,教你如何在ActionScript 3(AS3)环境中进行Cookie的操作。 在AS3中,我们没有内置的库来直接处理Cookie,但可以通过使用`flash.net....

    c#实现cookie和session的登陆实例

    本实例将探讨如何在C#环境下利用Cookie和Session来处理用户登录状态。 首先,我们要理解Cookie和Session的基本概念。Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并存储在本地。每次用户访问同一网站时...

    jsp操作cookie实例

    本实例将详细介绍如何在JSP中创建、读取、更新和删除Cookie。 ### 一、创建Cookie 创建Cookie主要通过HttpServletResponse对象的`addCookie(Cookie cookie)`方法。首先,我们需要创建一个Cookie对象,并设置其属性...

    cookie的使用例子

    ### Cookie的使用方法与实例详解 #### 一、Cookie简介 在Web开发中,Cookie是一种常用的客户端存储技术,用于在用户的浏览器中存储少量的数据。这些数据可以被网站用来跟踪用户的状态,例如记住用户的登录信息或者...

    cookie小实例(给初学的同学作参考)

    Servlet可以使用HttpServletResponse的addCookie()方法来创建Cookie,使用HttpServletRequest的getCookies()方法来读取Cookie,以及使用HttpServletResponse的deleteCookie()方法来删除Cookie。 下面,我们将通过一...

    javascript 文本框下拉提示与cookie应用实例

    总结来说,这个实例展示了如何使用JavaScript和CSS创建文本框下拉提示,同时利用Cookie存储用户的选择,以实现更个性化的交互体验。在实际开发中,这样的设计可以应用于搜索框、自动补全或者任何需要提供预设选项供...

    cookie实例

    在IT行业中,Cookie是Web开发中的一个重要概念,用于在客户端和服务器之间传递状态信息。Cookie主要用来存储用户数据,如登录状态、...通过实践和学习"cookie实例",开发者可以更好地掌握Cookie的使用,提高用户体验。

    Cookie实例保存账号和密码

    本文将深入探讨“Cookie实例保存账号和密码”的概念,通过两个示例页面`login.jsp`和`bean.jsp`来阐述如何实现这个功能。 首先,我们需要了解Cookie的基本原理。Cookie是由服务器端发送到浏览器的一小段文本信息,...

    php session登录验证实例与 cookie登录验证实例

    例如,使用cookie存储用户的标识,而将敏感信息(如权限)存储在服务器端的session中。这样,即使cookie被窃取,攻击者也无法获取完整的用户信息。 总之,PHP session和cookie在登录验证方面各有利弊。在设计系统时...

    JAVA100例之实例81Cookie计数器

    "JAVA100例之实例81Cookie计数器"是一个典型的示例,旨在教会开发者如何使用Cookie来实现一个简单的访问计数功能。下面我们将深入探讨这个实例涉及的知识点。 1. **Cookie基本概念**: - Cookie是由服务器发送到...

    cookie注入实例

    cookie注入实例,未见过的注入方法,安全测试,渗透测试的新思路

    cookie欺骗实例借鉴.pdf

    cookie欺骗实例借鉴.pdf

    JQcookie实例

    本实例将重点介绍如何使用jQuery的一个插件——JQcookie,来方便地进行Cookie的读取和设置。 JQcookie是一个轻量级的jQuery插件,它提供了与jQuery语法一致的方法来操作Cookie,解决了不同浏览器之间的兼容性问题。...

    JavaWeb基础-Cookie和Session的简单使用案例

    在实际应用中,开发者通常结合使用Cookie和Session,比如用Cookie存储用户偏好,用Session管理用户登录状态。同时,为了增强安全性,可以定期刷新Session ID,或者设置合理的Session过期时间,避免长时间未操作的...

    Servlet对Cookie和Session的管理源码实例

    虽然Cookie和Session主要依赖浏览器,但可以通过其他方式实现后台跟踪,如使用数据库或分布式缓存存储会话数据。这种方式通常用于跨域应用或移动应用,其中Session ID可以通过非HTTP方式传递(如WebSocket、API调用...

    jsp源码实例.rar_cookie_javascript cookie_jsp 实例_jsp 搜索_jsp 表单

    在这个名为"jsp源码实例.rar_cookie_javascript cookie_jsp 实例_jsp 搜索_jsp 表单"的压缩包中,包含了五个关于JSP的源码实例,这些实例涵盖了从基本的输出操作到更复杂的cookie管理和搜索引擎功能。以下是这些实例...

    Cookie技术应用实例

    Cookie技术应用实例,可以实现资源共享,很好用的。

Global site tag (gtag.js) - Google Analytics