Cookie简介
Cookie是键值对, 由服务器端生成写到浏览器端, java中创建cookie并写回cookie的代码如下:
Cookie c = new Cookie("cookie--key", "cookie—value");
c.setMaxAge(3600);//表示3600秒
c.setDomain("localhost");//设置cookie的域,域与当前项目的域不一样是不能写回到浏览器的,一般不用设置,默认就是当前项目的域名
c.setPath("/");//路径,/表示根目录,默认是"/项目名"
response.addCookie(c);//添加cookie到response中
response.sendRedirect(request.getContextPath()+"/index.jsp");
浏览器端收到上述cookie如下:
因为设置了maxAge为3600秒即1小时,因此其过期时间显示为2013年12月31日 11:46:33, 而我当前时间为2013年12月31日 10:46:33, 正好延迟3600秒即1小时.
一, Cookie的生命周期
如果没有设置maxAge, 默认是当前会话结束时.
如果设置了maxAge, 则直到设定时间.
什么叫会话结束?
就是浏览器关闭时, 关闭浏览器上的tab页不算会话结束.
二, cookie 什么时候产生
访问html不产生cookie
访问jsp , servlet产生cookie , 如下是访问了一个空的test.jsp产生的cookie:
这个cookie不是程序员创建的, 而是服务器自动创建的, 包含的信息就是就jsessionid, 域和路径都是默认的, 过期时间是会话结束.
提问: 当你登录网站后, 然后关闭浏览器, 再重新进入该网站还是登录状态吗?
不是, 但有的网站确实不需要登录啊?这是因为在登录时, 程序员给你的cookie做了处理
怎样处理后才能保持登录状态呢?
每次访问(除访问html)服务器就会自动创建一个名为JSESSIONID, 值为JSESSIONID值的cookie写到浏览器端, 而这个cookie的过期时间是会话结束时, 所以只要改变这个cookie的过期时间就可以达到第二次进入还是登录状态, 代码如下:
Cookie c = new Cookie("JSESSIONID",request.getSession().getId());
c.setMaxAge(3600);//表示3600秒
c.setPath("/");//路径,/表示根目录,默认是"/项目名"
response.addCookie(c);//添加cookie到response中
response.sendRedirect(request.getContextPath()+"/index.jsp");
浏览器端接收到cookie如下:
这时有了两个都叫JSESSIONID的cookie, 图中被选中的cookie的过期时间是2013年12月31日 12:02:35, 我当前时间是2013年12月31日 11:02:35, 因此在一个小时内, 不管我关不关闭浏览器, 再次进入该网站,一直都是登录状态(前提是服务器端的session过期时间大于1小时), 上面那个JSESSIONID的cookie是服务器自动产生的,过期时间是会话结束时
三, Session的生命周期
Tomcat中默认是30分钟, 在tomcat的conf/web.xml中有如下配置:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
其中的30表示30分钟, 我们想给自己的项目配置session的生命周期, 可以在自己项目中的web.xml中也进行上述配置即可,如改为60分钟:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
这个30分钟是指一共就存活30分钟, 还是说距最后一次访问30分钟?
网上两种说法有争议, 不如自己测一下, 将session过期时间设为1分钟,利于测试.
结果是距最后一次访问30分钟而不是一共30分钟,测试过程:
1, 将session生命周期设为1分钟后, 启动项目, 登录后隔5秒钟就刷新一次页面,一直持续了2分钟还是处于登录状态, 说明session还在
2, 停止刷新, 静置1分钟, 再次刷新, 已经不是登录状态, 说明session已经丢失
- 大小: 90.7 KB
- 大小: 84.8 KB
- 大小: 91.4 KB
分享到:
相关推荐
Application,Session,Cookie,ViewState和Cache生命周期
本文较为详细的比较了php中session与cookie区别。...cookie的生命周期是累计的,从创建时就开始计算,20分钟后生命周期就结束,即cookie无效; session的生命周期是间隔的。从创建时开始计时,如果
cookie和session的用法原理,生命周期
它是通过 Session ID 来判断的,什么是 ...如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。我们来手动设置 Session 的生存期: <?php ses
如果不设置 过期时间,则表示这个 Cookie生命周期为 浏览器会话期间 , 只要关闭浏览器,cookie就消失了. 这个生命期为浏览会话期的cookie,就是会话Cookie; 存储: 一般保存在内存,不在硬盘; 如果设置了过期...
如果cookie不设置生命周期,则以浏览器关闭而关闭,这种cookie一般存储在内存而不是硬盘上.若设置了生命周期则相反,不随浏览器的关闭而消失,这些cookie仍然有效直到超过设定的过 期 时间。 session 一种类似散列表的...
会话 session 和 cookie(3)_cookie 的生命周期
• cookie的维护与生命周期(有效时间) • session的维护与生命周期(回收机制) • cookie与session之间的区别与联系 • 问题1:禁用cookie后session为什么会失效? • 问题2:IE浏览器下丢失session,每次刷新页面,...
1、session 存放在服务器端,cookie 存放在客户端,存在两种状态:“ 第一种:持久 cookie 具有时效性,以文件的形式存放在客户机硬盘中,时间一到生命周期结束自动被删除。第二种:临时 cookie 又叫会话 cookie 放在...
因为我们短信验证码生命周期控制的非常严格!而且数据用完后不需要存储. 所以建议直接把数据存储在缓存/内存中! 1.方案1: 使用session或cookie存储! session在当前浏览器有效! cookie 存储在用户本地不安全!session和...
线程的创建方式与生命周期 线程核心机制,基础概念扩展 多线程并发访问,同步控制 线程间通信,等待/通知机制 锁锁机制,API详解 Fork/Join 框架机制详解 Executor线程池框架简介 面向对象 泛型机制与反射原理 ...
在上文Nginx+Tomcat关于Session的管理中简单介绍了如何使用redis来集中管理session,本文首先将介绍默认的管理器是如何管理Session的生命周期的,然后在此基础上对Redis集中式管理Session进行分析。 Tomcat Manager...
众所周知,Session对象的生命周期关闭浏览器之后就会销毁,那该如何持久化的保存Session对象的数据呢?(ps:将session对象的值保存到数据库当中就可以了)使用SQL Server数据库保存Session session对象案例 记住...
假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的...
假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的...
模块二:使用eclipse和idea快速开发jsp(idea和tomcat的相关配置、eclipse创建web项目、jsp页面元素、jsp九大内置对象、四大作用域对象、解决get/post请求乱码问题、cookie和session详解、请求重定向);模块三:...
J2EE servlet&jsp 练习二答案 学习使用Session和Cookie 开发一个简单的购物车; 开发一个简单的用户登录提示系统 设定Session生命周期; 开发一个下载文件的Java EE Web应用; 开发一个Session监听器
视频中对类、对象、修饰符、封装、继承、多态、异常、Servlet的生命周期、session、cookie等有详细讲解
如果没有登陆的话会弹出登陆层,提示输入学号密码,如果用户已经在之前查看某本书的详细时已经登陆,则不会要求再登陆,这里的用户名密码与数据库验证成功后保存在cookie中,且生命周期默认与session相同,即关闭...
n1345 UpdatePanel服务器端页面执行生命周期 n1346 UpdatePanel客户端页面执行生命周期 n1347 取消当前异步回传 n1348 中断上一个异步回传 n1349 在一次异步回传中传递额外的信息 n13410 优雅地处理UpdatePanel错误 ...