session机制及session的应用
来源:互联网 发布:2017年女声网络红歌 编辑:程序博客网 时间:2024/05/22 23:00
session简介
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。使用上比Cookie简单一些,相应的也增加了服务器的存储压力。
客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内里。每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。需要注意只有第一次访问JSP、Servlet等程序时才会创建Session,访问HTML、IMAGE等静态资源并不会创建Session。Session生成后,只要用户继续访问,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。服务器就会更新Session的最后访问时间,并维护该Session。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了,默认的过期时间是30分钟。
cookie与session的关系
关系
比较
cookie存储在客户端,session存储在服务器端。也因此:cookie相对来说不如session安全
cookie存储大小和数量有限制,session理论上是无限制的。
cookie的销毁:默认为关闭浏览器,设置过期时间后则过期后就会销毁,
session的销毁:某个请求周期内调用了Session.invalidate()方法,session被销毁;或者是session超时后自动销毁;或者客户端关掉浏览器。
java操作session
HttpSession session = request.getSession(); session.setAttribute("key", value); session.getAttribute("key"); session.removeAttribute("key"); session.setMaxInactiveInterval(60);//单位为秒session.invalidate(); //删除所有session中保存的键
集群环境中session共享问题
在讲到解决这些问题之前,我们首先要考虑下session如何存储才是高效,是存在内存、文件还是数据库了?文件和数据库的存储方式都是将session的数据固化到硬盘上,操作硬盘的方式就是IO,IO操作的效率是远远低于操作内存的数据,因此文件和数据库存储方式是不可取的,所以将session数据存储到内存是最佳的选择。因此最好的解决方案就是使用分布式缓存技术,例如:memcached和redis,将session信息的存储独立出来也是解决session同步问题的方法。
Tomcat的session同步也有使用memcache的解决方案,大家可以参加下面的文章:
tomcat集群session同步之memcache方案
但是该方案只是解决了同步问题,session机制任然和web容器紧耦合,我们需要一个高效、可扩展的解决方案,那么我们就应该不是简单的把session独立出来存储而是设计一个完全独立的session机制,它既能给每个web应用提供session的功能又可以实现session同步,下面是一篇用zookeeper实现的分布式session方案:
基于ZooKeeper的分布式Session实现
- session机制及session的应用
- session机制及应用详解
- session的理解及应用
- session机制详解以及session的相关应用
- session机制详解以及session的相关应用
- session机制详解以及session的相关应用
- session机制详解以及session的相关应用
- session机制详解以及session的相关应用
- session机制详解以及session的相关应用
- session机制详解以及session的相关应用
- Cookie及Session机制
- Magento session机制的分析与应用
- Magento session机制的分析与应用
- Web应用中session的实现机制
- session机制在web应用
- Session机制的本质
- Session的跟踪机制
- session的工作机制
- websocket node.js 小实例
- LoRa开发3:终端驱动设计
- PHP:Thinkphp实现省市区三级联动
- 如何在 Qt中调用 WinRt API
- 解决微信分享SDK,混淆报错Can't process class [com/tencent/wxop/stat/al.class]
- session机制及session的应用
- solr linux安装启动报错
- ORA-28000: the account is locked-的解决办法
- 怎么知道recyclerview是否在滑动
- eclipse打包成可运行.jar文件
- java开发 mvc框架
- WinForm中ListView设置选中行背景颜色,字体格式
- javascript事件的绑定
- 前端的学习方法