`
A牛哥哥
  • 浏览: 147263 次
社区版块
存档分类
最新评论

cookie的创建和session的生命周期等

阅读更多
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生命周期

    Application,Session,Cookie,ViewState和Cache生命周期

    php中session与cookie的比较

    本文较为详细的比较了php中session与cookie区别。...cookie的生命周期是累计的,从创建时就开始计算,20分钟后生命周期就结束,即cookie无效; session的生命周期是间隔的。从创建时开始计时,如果

    Day09_cookie & Session

    cookie和session的用法原理,生命周期

    关于PHP5 Session生命周期介绍

    它是通过 Session ID 来判断的,什么是 ...如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。我们来手动设置 Session 的生存期: &lt;?php ses

    带你了解session和cookie作用原理区别和用法

     如果不设置 过期时间,则表示这个 Cookie生命周期为 浏览器会话期间 , 只要关闭浏览器,cookie就消失了.  这个生命期为浏览会话期的cookie,就是会话Cookie; 存储:   一般保存在内存,不在硬盘;  如果设置了过期...

    详解PHP中cookie和session的区别及cookie和session用法小结

    如果cookie不设置生命周期,则以浏览器关闭而关闭,这种cookie一般存储在内存而不是硬盘上.若设置了生命周期则相反,不随浏览器的关闭而消失,这些cookie仍然有效直到超过设定的过 期 时间。 session 一种类似散列表的...

    cookie_demo2.zip

    会话 session 和 cookie(3)_cookie 的生命周期

    PHP会话控制:Session与Cookie详解

    • cookie的维护与生命周期(有效时间) • session的维护与生命周期(回收机制) • cookie与session之间的区别与联系 • 问题1:禁用cookie后session为什么会失效? • 问题2:IE浏览器下丢失session,每次刷新页面,...

    kisso单点登录

    1、session 存放在服务器端,cookie 存放在客户端,存在两种状态:“ 第一种:持久 cookie 具有时效性,以文件的形式存放在客户机硬盘中,时间一到生命周期结束自动被删除。第二种:临时 cookie 又叫会话 cookie 放在...

    django-实现登录短信验证.docx

    因为我们短信验证码生命周期控制的非常严格!而且数据用完后不需要存储. 所以建议直接把数据存储在缓存/内存中! 1.方案1: 使用session或cookie存储! session在当前浏览器有效! cookie 存储在用户本地不安全!session和...

    免费超全面的Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结

    线程的创建方式与生命周期 线程核心机制,基础概念扩展 多线程并发访问,同步控制 线程间通信,等待/通知机制 锁锁机制,API详解 Fork/Join 框架机制详解 Executor线程池框架简介 面向对象 泛型机制与反射原理 ...

    浅谈Tomcat Session管理分析

    在上文Nginx+Tomcat关于Session的管理中简单介绍了如何使用redis来集中管理session,本文首先将介绍默认的管理器是如何管理Session的生命周期的,然后在此基础上对Redis集中式管理Session进行分析。 Tomcat Manager...

    asp.net session对象的持久化

    众所周知,Session对象的生命周期关闭浏览器之后就会销毁,那该如何持久化的保存Session对象的数据呢?(ps:将session对象的值保存到数据库当中就可以了)使用SQL Server数据库保存Session session对象案例 记住...

    JS设置cookie、读取cookie、删除cookie

    假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的...

    JavaScript之cookie技术详解

    假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的...

    吴天雄--JavaWeb完整笔记.doc

    模块二:使用eclipse和idea快速开发jsp(idea和tomcat的相关配置、eclipse创建web项目、jsp页面元素、jsp九大内置对象、四大作用域对象、解决get/post请求乱码问题、cookie和session详解、请求重定向);模块三:...

    J2EE servlet&jsp 练习二答案

    J2EE servlet&jsp 练习二答案 学习使用Session和Cookie 开发一个简单的购物车; 开发一个简单的用户登录提示系统 设定Session生命周期; 开发一个下载文件的Java EE Web应用; 开发一个Session监听器

    韩顺平java视频教程-百度网盘地址.txt

    视频中对类、对象、修饰符、封装、继承、多态、异常、Servlet的生命周期、session、cookie等有详细讲解

    SSM图书预约系统包含mysql数据库脚本导入即可运行.rar

    如果没有登陆的话会弹出登陆层,提示输入学号密码,如果用户已经在之前查看某本书的详细时已经登陆,则不会要求再登陆,这里的用户名密码与数据库验证成功后保存在cookie中,且生命周期默认与session相同,即关闭...

    ASP.NET.4揭秘 卷2

    n1345 UpdatePanel服务器端页面执行生命周期 n1346 UpdatePanel客户端页面执行生命周期 n1347 取消当前异步回传 n1348 中断上一个异步回传 n1349 在一次异步回传中传递额外的信息 n13410 优雅地处理UpdatePanel错误 ...

Global site tag (gtag.js) - Google Analytics