Session和Cookie的联系
1.Session和Cookie都是用来跟踪浏览器用户身份的方式。客户端与服务器端之间保持状态的解决方案
2.Http是一种无状态的协议,Session通过SessionID来区分不同的客户,Session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie。
所以,一般情况下,session需要借助cookie才能正常。
简单来说,因为Http是一种无状态协议,一般情况下,Session需要借助Cookie才能正常实现。
Session和Cookie的区别
1.Cookie数据存放在客户的浏览器上,Session存放在服务器上。即Cookie用户可见,相对不安全,Session用户不可见,安全。但Cookie可以加密
2.Cookie是字符串,存放信息,一般大小不超过4K,单个站点限制20个。Session中存放的是对象。
3.作用域区别:Session不能区分路径,Session在任何一个地方都可以获取到.Cookie可以设置路径参数,那么在同网站不同路径下是不同的。
4.创建区别,Session不是有客户端访问就创建,直到某server端程序(如Servlet)调用HttpServletRequest.getSession(true)这样的语句时才会被创建
Cookie是服务端将Cookie放入到HTTP响应报头实现的
Cookie还可以通过JS和VBScript创建
5.结束区别:
关于Session和Cookie生命周期的区别。
Cookie分为会话Cookie和持久Cookie。Cookie可以设置过期时间。设置了过期时间,Cookie会被保存在硬盘上,以便下次使用
Session结束是:
A.程序调用HttpSession.invalidate()
B.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间
C.服务器进程被停止
再次注意关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。
Session实现
A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。
B.由于cookie可以被人为的禁止,必须有其它的机制以便在cookie被禁止时仍然能够把session id传递回服务器,经常采用的一种技术叫做URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。
C.另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。
Cookie可以干什么
1.用户自动登录和用户登录次数。
2.SSO单点登录
Session分布式的几种实现方式
一、Session Replication 方式管理 (即session复制)
例子: resin/tomcat web 插件
二、Session Sticky 方式管理
例子:Nginx Sticky
三、Session Focus 缓存集中式管理 (互联网使用)
例子:Redis,memcached
或者是:
NFS共享文件系统 :共享目录服务器mount到各频道服务器的本地session目录
基于数据库的Session共享:MySql数据库保存Session
基于Cookie的Session共享 :用Cookie保存Session信息
绝大部分内容参考自:http://aoyouzi.iteye.com/blog/2310193