为什么登陆后,只要不关闭浏览器,session就能一直存在?当然session的数据是保存在服务器上的,但服务器是怎么识别这些数据都是谁的呢?答案是sessionid,每一个浏览者都唯一的sessionid,这就很好的区分了不同浏览者的不同session了.sessionid是怎么产生的?应该是第一次访问服务器的时候随即生成的.假如是111,然后他的登陆信息是true,服务器就知道sessionid为111已经登陆了,这些信息都存在了服务器上了.但当浏览者继续操作的时候,也就是打开该系统的另一个页面的时候sessionid怎么办?如何传递?打开另一个页面的时候其实相当于重新访问系统,如果没有特殊的处理机制,系统会再次重新分配一个sessionid的,这样的话就失去意义了~!所以sessionid在第一次访问后应该存在了客户端.能寸哪呢?当然,只能寸在cookie中了,这就是为什么关闭cookie,session就失去作用了

保存session id的几种方式

A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。
B.由于cookie可以被人为的禁止,必须有其它的机制以便在cookie被禁止时仍然能够把session id传递回服务器,经常采用的一种技术叫做URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。
C.另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

二十五、session cookie和session对象的生命周期是一样的吗

当用户关闭了浏览器虽然session cookie已经消失,但session对象仍然保存在服务器端

二十六、是否只要关闭浏览器,session就消失了

程序一般都是在用户做log off的时候发个指令去删除session,然而浏览器从来不会主动在关闭之前通知服务器它将要被关闭,因此服务器根本不会有机会知道浏览器已经关闭。服务器会一直保留这个会话对象直到它处于非活动状态超过设定的间隔为止。
之所以会有这种错误的认识,是因为大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个session id就消失了,再次连接到服务器时也就无法找到原来的session。
如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求报头,把原来的session id发送到服务器,则再次打开浏览器仍然能够找到原来的session。
恰恰是由于关闭浏览器不会导致session被删除,迫使服务器为session设置了一个失效时间,当距离客户上一次使用session的时间超过了这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。
  由此我们可以得出如下结论:
  关闭浏览器,只会是浏览器端内存里的session cookie消失,但不会使保存在服务器端的session对象消失,同样也不会使已经保存到硬盘上的持久化cookie消失。

打开两个浏览器窗口访问应用程序会使用同一个session还是不同的session

通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的session id,这样我们信息共享的目的就达不到了。
此时我们可以先把session id保存在persistent cookie中(通过设置session的最大有效时间),然后在新窗口中读出来,就可以得到上一个窗口的session id了,这样通过session cookie和persistent cookie的结合我们就可以实现了跨窗口的会话跟踪。

2.cookies的属性有:Domain(域):哪个站点发的哪个站点拿走
                   Expires:是否过期
                   Haskeys:是否包含关键
                   path:存放的路径
                   secure:是否安全

注:---cookies的设置在 sever端设置,路径与域一起构成cookie的作用范围

?这个是什么意思的啊?为什么会是在服务器端进行设置的呢?

---若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie 保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式

IE与FF的区别哦!FF是共享的而IE当打开不同的窗口的时候是不共享 的

3.session(会话):适用于同一客户在一个站点,不同页面上的浏览;适用于同一客户在一个页面上,不断的刷新。

6.当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。

IE中:

有效的窗中包括

1.Session对象只在建立Session对象的窗口中有效。

2.在建立Session对象的窗口中新开链接的窗口

无效的窗口包括

1.直接启动IE浏览器的窗口

2.不是在建立Session对象的窗口中新开链接的窗口

文章出处:DIY部落(http://www.diybl.com/course/3_program/java/javashl/20090306/158663.html)

转载于:https://www.cnblogs.com/yanfan/archive/2011/05/28/2989487.html

jsp中session 和 cookies区别相关推荐

  1. php 中session与cookies的区别,php中session和cookie的区别

    php中session和cookie的区别 本文较为详细的比较了php中session与cookie区别.分享给大家供大家参考.具体分析如下: 1.存放的位置 cookie保存在客户端,session ...

  2. jsp中session 失效设置

    jsp中session 失效设置 一般web系统都需要控制session自动失效的时间,从而控制用户访问系统超时.设置session失效有以下三种方式: 1.在主页面或者公共页面中加入:session ...

  3. JSP中getParameter和getAttribute区别

    (1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法 (2)当两个Web组件之间为链接关系时,被链接的组件通过getParameter ...

  4. JSP中Session的使用

    JSP session使用方法 <%@page contentType="text/html;charset=GB2312"%> <html>   < ...

  5. Flask中session和cookies的设置、删除、修改、获取

    一.session配置 1.在配置文件中导入session包. 2.在配置文件中加入SECRET="123456"#涉及到加盐算法,用于生成session_id和csrf_toke ...

  6. JSP中session的简单应用——以购物车为例

    题目 编写两个页面,一个显示一些历史图书的名称和价格,一个显示一些计算机书名的名称和价格.每本书后面都有一个链接--购买,单击该链接,能够将该书本加到购物车:每个页面上都有链接,单击该链接,将该图书从 ...

  7. response.getWriter()和jsp中out对象的区别

    两者的主要区别:1.内置对象out的类型是JspWriter: response.getWrite()返回的类型是PrintWriter: out和response.getWriter的类不一样,一个 ...

  8. session和Cookies的区别

    cookie 和Session的区别 Cookie 会话:用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话 ...

  9. java中session的作用_java中session的工作原理是什么?和Cookies有何区别?

    现在大家学习的东西和以前大不相同了,越来越多的人倾向于去学习高新技术以获得更好的发展.java是很多人的第一选择.java中的知识还是很多的,今天就来为大家介绍一下. 首先来说一下java中sessi ...

最新文章

  1. NGUI 学习笔记实战——制作商城UI界面
  2. Developer Tools
  3. leetcode887 鸡蛋掉落
  4. 程序员 面试笔记 C++ 程序设计的基础 第10章
  5. 雾霾模糊?图像增强教你如何去雾
  6. leetcode344题:反转字符串
  7. vc6.0 debug 比 release 快??_快速入门快应用——quickapp构建与发布
  8. 位图保存到数据库 VC ado 类
  9. Python函数combination
  10. php转调页面,转调踏莎行上巳道中作
  11. Python常用函数总结(按照字母顺序)
  12. 2019年,实现 React 动画的 5 种最常用方式
  13. MATLAB画区域专题地图(省边界)
  14. io复用相对于多进程、多线程的优势
  15. Rabbitmq客户端接收消息为字符数组解决
  16. C#语言实例源码系列-实现加密exe文件
  17. 笔记 - 汽车之家的反爬手段
  18. 微信小程序 - (广告、优惠券)弹出与关闭
  19. JavaScript入门基础学习总结
  20. 交换机设备登录账号权限1_交换机上配置RADIUS登录认证

热门文章

  1. JZOJ 5609. 【NOI2018模拟3.28】Tree BZOJ 4919: [Lydsy1706月赛]大根堆
  2. BZOJ 3211: 花神游历各国
  3. linux dns语法检测工具,DNS解析检查工具之nslookup
  4. win10无法连接wifi_手机连接WIFI但是无法上网?3个办法帮您解决!
  5. mysql备份一个表到ftp_备份部分mysql表并上传至指定ftp服务器目录中
  6. 什么叫基于web的网站_什么叫响应式网站?响应式网站模板教程
  7. linux重定向文件不存在,shell 12 21 filename重定向的含义和区别
  8. 文本分类入门(五)训练Part 2
  9. 地理信息系统(GIS)
  10. EMNLP 2020 《MUTANT: A Training Paradigm for Out-of-Distribution Generalization in VQA》论文笔记