session会话跟踪详解
最近学了session会话,来说下我对session会话机制的理解吧。
一、session是什么?
session是jsp隐式对象(会话对象)
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。由于web server对每一个客户端请求都没有历史记忆;
session用来保存客户端状态信息;
二、什么是会话(session)跟踪?
首先, HTTP请求是无状态的,通俗点说,就是你打开一个网页,和打开下一个网页之间,没有任何关系, 数据不会保存共用的。 其次, 会话,就是人的对话, 一次会话指从开始聊天到聊天结束, 在这里就是指,你进入一个网站一直访问浏览,直接到你退出这个网站,或者关浏览器, 这是一次会话, 会话跟踪, 就是在你多次访问一个网站之间要保存数据, 多次请求要保存共有的数据,就叫会话跟踪了
三、session ID的作用
当程序需要为某个客户端(浏览器)的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session ID,服务器在响应时,会将Session对象的ID(session ID通过临时Cookie的方式响应给浏览器,浏览器的临时Cookie会存下sessionID,每次请求都会带上sessionID,可以根据这个ID判断是不是同1个用户访问;如果已包含一个session ID,则说明以前已经为此客户端创建过session,服务器就按照session ID把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session ID,则为此客户端创建一个session并且生成一个与此session相关联的session ID,session ID的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。
如果有多个浏览器同时请求服务器,服务器会根据SessionID找到对应的浏览器,开不同的浏览器是不同的会话,同一个浏览器是同一个会话
四、HTTP协议与状态保持
-http是无状态(stateless)的通信协议,当客户端发出请求时,服务器才会建立连接,一旦请求结束,服务器变短断开连接
session是解决http协议无状态问题的服务端解决方案,它能让客户端和服务端一系列交互动作变成一个完整的事务,能使网站变成一个真正意义上的软件。
五、 session对象何时被销毁?
session在下列情况下被销毁
1.程序调用HttpSession.invalidate();(销毁服务器上的session对象,重新发起请求时,会认为是一个新的会话,session ID不同)
2.距离上一次收到客户端发送的session ID时间间隔超过了session的超时设置;
3.服务器进程被停止(非持久session)
4.浏览器关闭
六、举例阐述四种会话跟踪技术的特点,应用场景
隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话应用
1、URL传递参数
url?参数名=值&参数名=值
2、隐藏表单域
3、使用Cookie
保存在客户端的
永久性Cookie 设置了有效时间的,就是永久性的
会以文件的形式保存在浏览器的临时文件夹中
临时性Cookie 当客户端关闭之后,Cookie就没有了
只是保存在浏览器的缓存中
4、使用会话对象session
session的默认失效时间是30分钟
在web.xml中可以配置session的失效时间
<session-config>
<session-timeout>10</session-timeout>
</session-config>
七、Cookie与Session的区别
1.Cookie是存在浏览器中的,Session是存在服务器中的
2.Cookie的安全性要低于Session,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3.Cookie可能会被用户禁用
Session的数据是存在服务器内存中,关掉浏览器,会清空Session
临时性Cookie存在浏览器的缓存中,关掉浏览器,会清空
永久性Cookie是存在临时文件中,到达有效期前,一直存在
相关推荐
Session详解
主要介绍了Zend Framework入门教程之Zend_Session会话操作,结合实例形式详细分析了Zend_Session会话操作的具体使用技巧,需要的朋友可以参考下
主要介绍了JavaWeb Session 会话管理的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
php5的session详解.pdf php5 的session详解其一:什么是session? php5 的session 详解之二:有两种方法传递 一个会话ID: php5 的session 详解之三:session安全 php5 的session 详解之四:……
Session会话控制 Session是TensorFlow为了控制和输出文件的执行语句,运行session.run()就能获得运算结果或者部分运算结果。我们在这里使用一个简单的矩阵相乘的例子来解释Session的两个用法。 首先我们要加载...
session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。 session在WEB技术中占有非常重要的份量。由于网页是一...
• 会话控制的产生背景/概念 • cookie的维护与生命周期(有效时间) • session的维护与生命周期(回收机制) • cookie与session之间的区别与联系 • 问题1:禁用cookie后session为什么会失效? • 问题2:IE浏览器下...
Spring mvc 分步式session的实例详解 Session代表服务器与浏览器的一次会话过程,它的信息是保存在服务器端的。在Servlet中,session指的是HttpSession类的对象。服务器在创建session后,会把sessionid以cookie的...
PHP内置的绘画存储机制是把全部的会话数据保存在服务器上的文本文件里面,这些文件通常都是保存在服务器上的临时目录里。如果并发量大,读写效率非常低。而Redis对高并发的支持非常好,所以,可以使用redis替代文件...
主要介绍了SpringMVC拦截器实现监听session是否过期详解,还是比较不错的,这里分享给大家,供需要的朋友参考。
本文实例讲述了ThinkPHP中Session用法。分享给大家供大家参考。具体如下: 在ThinkPHP封装了Session类,用户可以直接使用,常用的方法有: ...ThinkPHP 默认开启了 session 会话,因此在使用 Session 类之前不需要使用
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地...
一、ip_hash: ip_hash使用源地址哈希算法,将同一客户端的请求总是发往同一个后端服务器,除非该服务器不可用。 ip_hash语法: ... 当后端服务器宕机后,session会丢失; 来自同一局域网的客户端会被转发到
偶然发现Tomcat会话时间的半小时,并不是说会话创建后,只有半小时的有效使用时间,而是说会话空闲半小时后,会被删除。索性就翻了一下源码。做了一番整理。 注:空闲时间,指的是同一个会话两次请求之间的间隔时间 ...
Http会话管理演示文稿,包含对Cookie和Session的详解介绍以及使用,能够帮助我们了解会话原理及编程中应用