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

Cookie介绍和应用

阅读更多

在Servlet中显示地设置和读取Cookie

一,什么是Cookie?  

     Cookie是Web服务器利用set-cookie响应报头发送给客户端的一段消息。客户端在随后的请求中返回给服务器,服务器可以读取(而不可以改变)该消息。  

     Cookie不会以任何方式得到解释和执行,以名-值对的显示保存消息,服务器通过再次发送修改后的cookie来改变cookie。 

 浏览器对Cookie大小和数量有限制。

二,Cookie的优点和缺点  

    在Servlet或JSP中避免使用Cookie存储敏感数据。 用户可能选择关闭Cookie(那就使用URL重写),因此尽可能地不依赖于Cookie。  如果可以在禁用Cookie情况下为用户提供合理的功能,那就这样做。

    1,Cookie的优点   

         在电子商务会话中标识用户,使用servlet提供的专用于会话跟踪的API :javax.servlet.http.Cookie;   记录用户名和密码,相对于安全性要求比较低的站点。   

         定制站点:   

             对于简单页面设置,使用Cookie记录用户的喜好,直接将页面的设置存储在Cookie中完成定制。    

              对于复杂页面设置,使用Cookie将唯一标识发送给用户,由服务器端的数据库存储与每个标识符对应的页面设置。   

        定向广告:    

              首次访问不存在相应的Cookie和搜索的东西不和任何广告分类匹配时,网站显示随机广告。    有Cookie情况下,通过记录用户搜索内容,识别用户兴趣,在页面上显示定向的广告。  

    2,Cookie的缺点   

          对用户隐私造成极大威胁。比方搜索记录   Cookie数据的共享,将Cookie与图片关联。二个网站可以通过相同的第三方网站载入图片,共享用户的相关数据。  

三,Cookie的发送和读取  

       Servlet使用javax.servlet.http.Cookie类封装Cookie信息。  使用HttpServletResponse来读取Cookie信息。    

       (1),向客户端发送Cookie   

               1,创建Cookie对象。     

                        使用Cookie构造函数创建一个Cookie实例。给出字符串:Cookie的名和Cookie的值。名和值不能包含某些特殊字符。      

               2,获取和设置Cookie在客户端最大保存时间。将会话级别的Cookie存储在客户端中。                         getMaxAge和setMaxAge方法。以秒为单位。  设置为负值表示为会话级别cookie,让客户端浏览器在会话结束后删除该Cookie。 设置为0 则指示浏览器删除该cookie;但实际不是这样,所以设置为1更好!  

               3,将Cookie插入到HTTP响应报头中。

                      如同前面一样,任何响应报头必须在任何文档发送到客户端之前设置。    使用response.addCookie方法创建新的set-cookie响应报头,不修改之前的请求报头中的set-cookie报头。  

       (2)从客户端读取Cookie   

              1,使用request.getCookie,返回Cookie对象数组,没有则返回null。       

               2,循环Cookie对象数组,调用getName找到需要的cookie,然后调用getValue方法来获取cookie值。   

 四,Cookie的属性  

           属性是从服务器发送到浏览器的响应报头的一部分,但它不属于由浏览器发送返回给服务器的请求报头。  所以cookie属性只只用于服务器发送到客户端的cookie;对于来自客户端的cookie并没有这些属性。  也就是说我们只可以在服务器端操作cookie属性,将cookie发送给客户端。而从客户端来的cookie中的属性不可操作。    

            使用cookie.setXxx和getXxx方法来设置和获取属性,Xxx为属性的名字。   

            1,setDomain(String domainPattern)和getDomain():设置和读取cookie适用的域。  

                     一般cookie返回给主机名与发送该cookie的主机名完全相同的主机。如果需要返回给其他主机,使用该方法设置指定的域。   域必须以点号开始。对于非国家域,必须包含2个点号。对于国家域必须包含3个点号。    

            2,setMaxAge(int lifeTime)和getMaxAge():设置和获取cookie的最大保存时间,秒为单位,默认为负值。 设置为负值表示为会话级别cookie,让客户端浏览器在会话结束后删除该Cookie。   注意设置为0 则理论上指示浏览器删除该cookie;但实际不是这样,所以设置为1更好!    

             3,getName:获取cookie的名称。   cookie创建之后不能改变它的名称。   

             4,setValue(String cookieValue)和getValue():设置和获取cookie的值   setValue一般用于改变输入cookie的值,并将它们发送出去。

             5,setPath(String path)和getPath():设置和获取cookie的路径;如果没有指定一个路径,浏览器只将该cookie返回给发送cookie的页面所在“目录”中或之下的URL。   cookie.setPath("/")指定网站上的所有URL都应该接收该cookie。    

            6,setSecure(boolean secureFlag)和getSecure():设置或获取布尔值表示cookie是否通过加密来连接。默认false。

五,使用Cookie区别初访者和再访者  

        检查唯一命名的Cookie是否存在:如果存在则为初访者;如果不存在该Cookie则为再访者,并设置输出Cookie。  不能仅因为Cookie数组为null就认为用户为初访者,数组非空也可能为初访者。  必须遍历Cookie数组,检查比较Cookie名和值和预期是否一致。如果不一致则添加Cookie,显示为初访者准备的信息;如果一致则显示再访者的信息。

六,会话Cookie和持久Cookie  

          设置和获取cookie的最大保存时间,设置为负值表示为会话级别cookie.设置为正整数表示为持久级别cookie    

七,使用Cookie记录用户简单信息  

         对于简单的用户信息,可以直接将信息记录在Cookie中。  对于复杂的用户信息,在Cookie中存储用户的唯一标识,而把用户信息存储在数据库中。

         1,记录用户名,在指定的时间内自动登陆。当用户使用该用户名进行操作的时候,要在服务器端要对返回的cookie做检查。  

         2,定制站点:   对于简单页面设置,使用Cookie记录用户的喜好,直接将页面的设置存储在Cookie中完成定制。   对于复杂页面设置,使用Cookie将唯一标识发送给用户,由服务器端的数据库存储与每个标识符对应的页面设置。

八,客户端获取Cookie的脚本代码 

  1. function getCookie(parameter)  
  2.   
  3. {  
  4.   
  5.         var reg,allCookie,allCookie2,iLen,iStart,iEnd;  
  6.   
  7.         allCookie = document.cookie;  
  8.   
  9.         reg = new RegExp(parameter);  
  10.   
  11.         if((allCookie.search(reg) == -1)||(allCookie.indexOf(parameter+"=")<0))  
  12.   
  13.         {  
  14.   
  15.             return "";  
  16.   
  17.         }  
  18.   
  19.         else  
  20.   
  21.         {  
  22.   
  23.             iLen = parameter.length;  
  24.   
  25.             iStart = allCookie.search(reg) + iLen +1;  
  26.   
  27.             allCookie2 = allCookie.substr(iStart);  
  28.   
  29.             iEnd = iStart + allCookie2.search(/;/i);    
  30.   
  31.             if((iStart - 1) == iEnd){  
  32.   
  33.                 return allCookie.substr(iStart);  
  34.   
  35.             }  
  36.   
  37.             else{  
  38.   
  39.                 return allCookie.substr(iStart,iEnd - iStart);  
  40.   
  41.             }  
  42.   
  43.         }  
  44.   
  45. }

分享到:
评论

相关推荐

    Cookie技术应用实例

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

    Cookie的应用例子

    一个关于Cookie应用的例子,比较不错的。

    javaweb之cookie和session的应用

    javaweb cookie session

    Cookie的简单应用

    使用Cookie做的简单登录页面,实现功能登录功能,登录成功后记录Cookie信息,再次进入不用登录,并记录登录次数。登录错误并显示错误次数,大于3次后无权登录。 ps:用户名密码为accp 没有连数据库所以帐号密码是...

    asp.net Cookie的应用于购物车

    Cookie应用于购物车,只供参考学习

    cookie的应用设置

    为项目程序设置浏览器的cookie值,解决cookie不能存入中文的问题。

    浏览器中使用JS操作Cookie详解

    ​关于Cookie的概念和应用,大家可以看看我前面的几篇文章。并且在Cookie详解这篇文章中,介绍了如何在服务器端和使用JavaScript创建Cookie,并设置属性。 ​我们知道,Cookie是存储在客户端的,并且现在前后端分离...

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

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

    关于java应用cookie

    Cookie cookieUserName = new Cookie("userName", userName); cookieUserName.setMaxAge(60); //Cookie保存时间 //创建用户密码Cookie对象 Cookie cookiePassword = new Cookie("password", password); ...

    asp.net的session和cookie的应用

    这个对于web开发很有用途,这个是我总结下来的.............

    Cookie的应用技巧

    Cookie应该是一种应用较久的技术了。早在HTML刚刚出现的时候,在每个独立的页面之间没有办法记录和 标识不同的用户。后来人们就发明了Cookie技术,当用户访问网页时,它能够在访问者的机器上创立一个文件,我们把它...

    Cookie的应用.doc

    Cookie的应用.docCookie的应用.doc

    laravel-cookie-consent, 让你的Laravel 应用程序符合疯狂的欧盟cookie规则.zip

    laravel-cookie-consent, 让你的Laravel 应用程序符合疯狂的欧盟cookie规则 让你的Laravel 应用符合疯狂的欧盟cookie法则赞助商 如果你希望快速向 Laravel 项目添加安全令牌认证,可以查看 auth0 SDK的Laravel 和 ...

    cookie 在javascript中的应用

    cookie javascript 应用 详解: 添加该cookie" onclick="add()" /&gt; 读取所有cookie" onclick="getall()" /&gt; 读取该名称cookie的值" onclick="get()" /&gt; 删除该名称cookie" onclick="del()" /&gt; &lt;/div&gt;

    Web应用安全:Cookie参数越权.pptx

    例如,用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和数据B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据(数据B),...

    python cookie反爬处理的实现

     应用场景:cookie没有有效时长且不是动态变化 自动处理  使用session机制  使用场景:动态变化的cookie  session对象:该对象和requests模块用法几乎一致.如果在请求的过程中产生了cookie,如果该请求使用session...

    Cookie,Session,Application的区别与应用

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等。下面分别介绍它们的用法和区别。 方法 信息量大小 作用域和保存时间 应用范围 保存位置

    JS cookie Java cookie regex 整理结果

    自己整理的关于java和jscookie的实际应用,以及regex的应用,绝对好用。

    Cookie,Cookie的使用

    说起来,Cookie应该是一种应用较久的技术了。早在HTML刚刚出现的时候,在每个独立的页面之间没有办法记录和 标识不同的用户。后来人们就发明了Cookie技术,当用户访问网页时,它能够在访问者的机器上创立一个文件,...

    j2ee实验二:学习使用Session和Cookie

    j2ee实验二:学习使用Session和Cookie

Global site tag (gtag.js) - Google Analytics