Java,cookie一般都是关闭浏览器就删除,那他怎么保存用户的历史信息呢?
具体来说,cookie机制采用在客户端维护状态的方案,而会话机制采用在服务器端维护状态的方案。
同时,我们还看到,在服务器端保存状态的方案也需要在客户端保存一个标识符,所以会话
该机制可能需要使用cookie机制来保存身份,但实际上还有其他选择。
第二,会话cookie和持久cookie的区别
如果不设置过期时间,则意味着该cookie的生命周期在浏览器会话期间。只要关闭浏览器窗口,cookie就会消失。这种生存期为浏览会话的cookie称为会话cookie。会话cookie通常不存储在硬盘上,而是存储在内存中。
如果设置了过期时间,浏览器会将cookies保存到硬盘,关闭后再次打开浏览器。这些cookies将保持有效,直到超过过期时间。
存储在硬盘上的Cookie可以在不同的浏览器进程之间共享,比如两个ie窗口。对于存储在内存中的cookie,不同的浏览器有不同的处理方式。
三、如何使用实现自动登录
当用户在网站上注册时,他们将收到一个带有唯一用户ID的cookie。当客户稍后重新连接时,这
用户ID会自动返回,服务器会对其进行检查,确定是否是注册用户并选择了自动登录,这样用户只需给出明确的用户名和密码就可以访问服务器上的资源。
第四,如何根据用户的兴趣爱好定制站点
网站可以使用cookie来记录用户的愿望。对于简单的设置,网站可以直接将页面的设置存储在cookie中来完成定制。而对于更复杂的定制,网站只需要给用户发送一个唯一的标识符,服务器端数据库存储每个标识符对应的页面设置。
动词 (verb的缩写)发送cookie
1.创建Cookie对象
2.设置最大老化时间
3.将Cookie放在HTTP响应头中。
如果您创建一个cookie并将其发送到浏览器,默认情况下它是一个会话级cookie:它存储在浏览器的内存中,并在用户退出浏览器后被删除。如果您希望浏览器将cookie存储在磁盘上,那么
你需要使用maxAge并给出以秒为单位的时间。将最长时效设置为0会指示浏览器删除cookie。
要发送Cookie,需要使用HttpServletResponse的addCookie方法将cookie插入Set-CookieHTTP请求头。因为这个方法不修改任何以前指定的Set-Cookie头,而是创建一个新的头,所以我们把这个方法称为addCookie,而不是setCookie。还要记住,在将任何文档内容发送给客户机之前,必须设置响应头。
六、饼干阅读
1.调用request.getCookie
要获取浏览器发送的cookie,需要调用HttpServletRequest的getCookies方法,该方法返回与HTTP请求中cookie头输入的值相对应的cookie对象数组。
2.遍历数组并调用每个cookie的getName方法,直到找到感兴趣的cookie。
Cookie与您主机(域)相关,与您的servlet或JSP页面无关。因此,尽管您的servlet可能只发送一个cookie,但您可能会获得许多不相关的cookie。
例如:
StringcookieName = " userID
cookiecookies[]= request . get cookies();
如果(饼干!=null){
for(inti = 0;我
cookiecookie = cookies[I];
if(cookiename . equals(cookie . getname()){
doSomethingWith(cookie . getvalue());
}
}
}
七、如何使用cookie检测首次访客
A.调用HttpServletRequest.getCookies()获取Cookie数组。
b .在循环中查找指定名称的cookie是否存在以及对应的值是否正确。
c .如果是,则退出循环,并设置区别标志。
d .根据区分标志判断用户是否为首次访问者,从而进行不同的操作。
第八,使用cookie检测首次访问者的常见错误。
仅仅因为cookie数组不存在于特定的数据项中,用户就不能被认为是第一个访问者。如果cookie数组为空,则客户可能是第一次访问,也可能是用户删除或禁用cookie的结果。
但是如果数组不为空,只是说明客户去过你的网站或者域,但不代表访问过你的servlet。其他servlet、JSP页面和非JavaWeb应用都可以设置cookie,其中的任何cookie都可能根据路径设置返回给用户的浏览器。
正确的做法是判断cookie数组是否为空,以及指定的Cookie对象是否存在,值是否正确。