java,cookie不是一般在浏览器关闭时被删除吗,那他怎样保存用户的历史信息

 我来答
小伟特攻
2017-03-09 · TA获得超过5235个赞
知道大有可为答主
回答量:1917
采纳率:11%
帮助的人:161万
展开全部
  一、cookie机制和session机制的区别
  具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。
  同时我们也看到,由于才服务器端保持状态的方案在客户端也需要保存一个标识,所以session
  机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择
  二、会话cookie和持久cookie的区别
  如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
  如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
  存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。
  三、如何利用实现自动登录
  当用户在某个网站注册后,就会收到一个惟一用户ID的cookie。客户后来重新连接时,这个
  用户ID会自动返回,服务器对它进行检查,确定它是否为注册用户且选择了自动登录,从而使用户务需给出明确的用户名和密码,就可以访问服务器上的资源。
  四、如何根据用户的爱好定制站点
  网站可以使用cookie记录用户的意愿。对于简单的设置,网站可以直接将页面的设置存储在cookie中完成定制。然而对于更复杂的定制,网站只需仅将一个惟一的标识符发送给用户,由服务器端的数据库存储每个标识符对应的页面设置。
  五、cookie的发送
  1.创建Cookie对象
  2.设置最大时效
  3.将Cookie放入到HTTP响应报头
  如果你创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie:存储在浏览器的内存中,用户退出浏览器之后被删除。如果你希望浏览器将该cookie存储在磁盘上,则
  需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。
  发送cookie需要使用HttpServletResponse的addCookie方法,将cookie插入到一个Set-CookieHTTP请求报头中。由于这个方法并不修改任何之前指定的Set-Cookie报头,而是创建新的报头,因此我们将这个方法称为是addCookie,而非setCookie。同样要记住响应报头必须在任何文档内容发送到客户端之前设置。
  六、cookie的读取
  1.调用request.getCookie
  要获取有浏览器发送来的cookie,需要调用HttpServletRequest的getCookies方法,这个调用返回Cookie对象的数组,对应由HTTP请求中Cookie报头输入的值。
  2.对数组进行循环,调用每个cookie的getName方法,直到找到感兴趣的cookie为止
  cookie与你的主机(域)相关,而非你的servlet或JSP页面。因而,尽管你的servlet可能只发送了单个cookie,你也可能会得到许多不相关的cookie。
  例如:
  StringcookieName=“userID”;
  Cookiecookies[]=request.getCookies();
  if(cookies!=null){
  for(inti=0;i
  Cookiecookie=cookies[i];
  if(cookieName.equals(cookie.getName())){
  doSomethingWith(cookie.getValue());
  }
  }
  }
  七、如何使用cookie检测初访者
  A.调用HttpServletRequest.getCookies()获取Cookie数组
  B.在循环中检索指定名字的cookie是否存在以及对应的值是否正确
  C.如果是则退出循环并设置区别标识
  D.根据区别标识判断用户是否为初访者从而进行不同的操作
  八、使用cookie检测初访者的常见错误
  不能仅仅因为cookie数组中不存在在特定的数据项就认为用户是个初访者。如果cookie数组为null,客户可能是一个初访者,也可能是由于用户将cookie删除或禁用造成的结果。
  但是,如果数组非null,也不过是显示客户曾经到过你的网站或域,并不能说明他们曾经访问过你的servlet。其它servlet、JSP页面以及非JavaWeb应用都可以设置cookie,依据路径的设置,其中的任何cookie都有可能返回给用户的浏览器。
  正确的做法是判断cookie数组是否为空且是否存在指定的Cookie对象且值正确。
最爱ncl123
2017-03-09
知道答主
回答量:2
采纳率:0%
帮助的人:1.8万
展开全部
cookie 浏览器关闭以后不会删除 只有清空的时候才会失效
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创幻人生
2017-03-09 · TA获得超过1.5万个赞
知道大有可为答主
回答量:2.3万
采纳率:64%
帮助的人:4064万
展开全部
这样的情况个人建议使用360安全卫士电脑清理功能清理,清理后就可以正常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2aaf279
2018-06-23
知道答主
回答量:7
采纳率:0%
帮助的人:4434
引用最爱ncl123的回答:
cookie 浏览器关闭以后不会删除 只有清空的时候才会失效
展开全部
Cookie类方法, 用于设置Cookie的生命周期
public void setMaxAge(int expiry)
设置 cookie
的最大生存时间,以秒为单位。
正值表示 cookie 将在经过该值表示的秒数后过期。注意,该值是 cookie 过期的最大 生存时间,不是 cookie 的当前生存时间。
负值意味着 cookie 不会被持久存储,将在 Web 浏览器退出时删除。0 值会导致删除 cookie。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李小斌earth
2018-06-13
知道答主
回答量:43
采纳率:0%
帮助的人:6万
展开全部

Cookie可以设置Cookie对象的有效时间,如下:

c.setMaxAge(60);//单位为秒

如果不设置过期时间,则这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。

区别开来,如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。

涉及到cookie生命周期的知识,楼主可以自行百度学习一下。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式