刚好有时间把cookie和session重新回顾一下,在上次做登录页面记忆跳转功能时,发现无法使用cookie,因为只要关闭当前页面或者从当前页面跳转到其它页面cookie就失效了,自然也就无法做记忆功能了。

        首先,我看的是JSP中的cookie,不是其它语言中的。当然了,虽然我没有去查过,但是我觉得cookie这种开发知识,应该在所有web开发语言(或者规则)中都是相同或相通的吧。(下面说正事)

        cookie是服务器生成,存储在客户端浏览器(浏览器进程的内存)或者硬盘中的,它可以分为内存cookie和硬盘cookie,顾名思义就是存储在内存中的cookie,和存储在硬盘中的cookie,如果是内存cookie,那么一旦关闭当前浏览器窗口cookie就失效了,如果是硬盘cookie,那么它是不会根据浏览器关闭而失效的,它只会根据最初设置它的生命周期的时间而失效,没到时间它就一直有效。那么内存cookie的生存周期是多久呢?一般默认是30分钟,但是这个应该是可以根据服务器端的配置而更改的。在默认的时间内,只要不关闭当前浏览器窗口,cookie就是一直有效的,但是一旦关闭当前浏览器窗口,浏览器进程就会结束,分配的内存也会被清空,cookie自然也就失效了。

        那么怎么样在生成cookie时设置是内存cookie还是硬盘cookie呢?如果在生成cookie时有设置cookie的最大生存时间而不是让它默认为30分钟,那么它就是硬盘cookie,如果没有设置这一步,而是默认的最大生存时间,那么它就是内存cookie。

        可是上次我用cookie做登录记忆功能为什么失败了呢?又想了想,为什么呢?好像也不是路径的问题,因为我依稀记得我查看了cookie的有效路径是当前域下的根目录,为什么只要关闭当前页面cookie就失效了呢?想了想,是因为我用的谷歌浏览器做的测试?谷歌好像是为每一个页面都生成了一个子进程,所以只要关闭或者跳转走就认为是进程关闭,内存被释放了?有可能啊,那为什么session也是使用cookie来做校验的,为什么session就不会因为关闭当前页面而失效呢,或许是session的作用范围更大,在整个览器的父进程中都有效?或许吧,以后有机会再慢慢探索,也或许我一会就像明白了吧!O(∩_∩)O哈哈~

        如有错误还请留言指正,谢谢!