Session那点事

前言:在Web开发中,服务器可以为每个用户创建一个会话对象(Session对象),注意:一个浏览器独占一个Session对象(默认情况下)。因此,在需要保存数据时,服务器程序可以把用户数据写到浏览器独占的Session中,当用户用浏览器访问其他程序时,其他程序可以从用户的Session中取出数据为用户服务。

一.Session实现原理

Session是基于Cooike实现的,服务器通过Cookie形式回写给用户的SessionId,值得一提的是,这个Cookie是没有有效期的,只有浏览器进程结束,这个Cookie才消失。

通过一张图来说明工作原理。

二. Session的生和死

大家都知道Session这个对象时服务器创建的,那服务器在什么时候创建这个对象呢?当执行
.getSession 这句代码的时候,服务器就会创建一个Session对象。

那Session对象在什么时候消亡?默认情况下,不使用Session对象30分钟后服务器自动摧毁该对象。我们也可以在web.xml文件中配置<session-timeout>这个标签来设定被摧毁时间,也可以执行session.invalidate()这句代码摧毁Session对象。

最后说个小细节,如果用户禁用Cookie,那么浏览器就会收不到服务器回写的SessionId,这时候服务器该怎么解决呢?

可以调用response.encodeURL(url)这个方法重写URL,在超链接后面加上SessionId回写给浏览器。

Session那点事,布布扣,bubuko.com

时间: 2024-11-08 18:33:35

Session那点事的相关文章

扒一扒Cookie和Session的那些事

首先,众所周知:cookie是客户端技术——cookie是把用户的数据写给用户的浏览器:session是服务端技术——session是把用户的数据写到用户独占的session中. 下面具体来扒一扒他们之间数据保存的区别: cookie保存用户数据的原理: Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器. 当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样,web资源处理的就是用户各自的数据了. session保存用户数据的原理: S

cookie 和 session 的一些事 中间件

cookie 和 session cookie 1. 保存在浏览器上一组组键值对,服务器让浏览器进行设置. 2. 为什么要用cookie? HTTP协议是无状态.使用cookie保存状态. 3. django中的操作 设置: response.set_cookie(key,value,max_age=5) response.set_signed_cookie(key,value,max_age=5,salt='xxx') 获取: request.COOKIES request.COOKIES[k

Django进阶-cookie和session

COOKIE cookie的由来 由于HTTP请求是没有状态的 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要"保持状态". cookie是什么 是服务器发送出来存储在浏览器上的一组组键值对;下次访问服务器时浏览器会自动携带这些键值对,以便

ActiveMq整理之java应用

一.JMS 更多介绍参考 "http://baike.baidu.com/link?url=LNCEOGgqEX-uSKuRJooyG1RSfS7CTWDKYT8OOouhxLk_yWNN-0wNSWq7KjNQ259a9pfL95janJi8v8-drvdHqa" 1.1背景 当前,CORBA.DCOM.RMI等RPC中间件技术已广泛应用于各个领域.但是面对规模和复杂度越来越高的分布式系统,这些技术也显示出其局限性: 1.同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果才

用做网页开发经历了三个阶段(附长篇讨论) good

用做网页开发经历了三个阶段:第一阶:傻干阶段使用Intraweb,傻瓜型,无需知道javascript,html,css,会pascal就可以了. 第二阶:困惑阶段使用Intraweb,有很多限制,比如资料少,界面不容易做漂亮,没有源代码等等.于是转向研究其他开发工具.首先吸引眼球的是Nodejs,前后台用一种语言Javascript,爽,运行速度也不赖.随着PHP7的发布,注意力也被PHP7的高性能所吸引,玩了一阵PHP7.当然还有以前摸过的Tomcat/asp.net,各种框架一大堆.还有,

Tornado之抽屉实战(1)--分析与架构

项目模拟地址:http://dig.chouti.com/ 知识点应用: AJAX  用于偷偷发请求 原生ajax jQuery  ajax($.ajax) iframe伪造 上传文件 传统Form 弊端:会刷新页面   提醒:enctype='multiprt/form-data'记住这个特殊的设置 ajax上传:FormData方式(不是所有的浏览器都支持),Form表单+iframe(兼容性好) session  依赖cookie 验证码   基于session来做 Form验证 分页 数

抽屉之Tornado实战(1)--分析与架构

项目模拟地址:http://dig.chouti.com/ 知识点应用: AJAX  用于偷偷发请求 原生ajax jQuery  ajax($.ajax) iframe伪造 上传文件 传统Form 弊端:会刷新页面   提醒:enctype='multiprt/form-data'记住这个特殊的设置 ajax上传:FormData方式(不是所有的浏览器都支持),Form表单+iframe(兼容性好) session  依赖cookie 验证码   基于session来做 Form验证 分页 数

Session与Cookie间不得不说的一些事

在很久很久以前,刚有浏览器和网页的时候,web开发者发现了一个问题,我必须要在客户端这边保存一些东西才能实现某些功能,比如大家喜闻乐见的购物车.用户登录.自动登陆等.但是客户端只有一个浏览器,怎么在用户也就是客户端那边保存数据呢?于是大佬们一拍桌子,Cookie就诞生了! 我把Cookie理解为一个键-值形式存储再加上有效时间的一个容器,除此之外Cookie还有一个作用范围的概念(作用范围指的是域和路径,域的意思是根域名和端口,除非在设置cookie的时候特别指定域名),可以认为在同一个域里面的

Zookeeper中Session Timeout的那些事

前言: RDS系统致力于MySQL数据的高可用,高可靠,高性能以及在线扩展功能,实现这些特性的主要逻辑功能都运行在管理服务器上,一旦管理服务器宕机,数据库的在线扩展功能/备份功能/故障恢复功能等都无从谈起.然而,之前RDS系统管理服务器却是单点服务,为了保证整个系统的稳定性,管理服务器需要实现高可用,结合当前主流的高可用方案,决定使用Zookeeper来实现服务的高可用. 基本设计方案原理: 如下图所示,管理服务器A B C会在zk的root节点上注册临时序列节点/root/manager000