探讨Web开发中的Session存储与管理
2018-12-12 09:23:07来源:博客园 阅读 ()
我们都知道,由于HTTP协议是无状态的协议,一次浏览器和服务器的交互过程就是:
浏览器:你好吗?
服务器:很好!
这就是一次会话,对话完成后,这次会话就结束了,服务器端并不能记住这个人,下次再对话时,服务器端并不知道是上一次的这个人,所以服务端需要记录用户的状态时,就需要用某种机制来识别具体的用户,这个机制就是Session;
服务端如何识别特定的客户?这个时候需要使用Cookie;
每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端,用 Cookie 来实现Session跟踪的,第一次创建Session时,服务端会在HTTP协议中向客户端 Cookie 中记录一个Session ID,以后每次请求时会把这个会话ID发送到服务器,这样服务端就知道客户端是谁了;
那么如果客户端的浏览器禁用了 Cookie 怎么办?
一般这种情况下,会使用一种叫做URL重写的技术来进行session会话跟踪,即每次HTTP请求,URL后面都会被附加上一个诸如 sessionId=xxxxx 这样的参数,服务端据此来识别客户端是谁;
Session会话管理及带来的问题
在Web项目开发中,使用Session来存储与记录用户的状态或者相关的数据;
通常情况下Session交由容器(Tomcat)来负责存储和管理,但是如果项目部署在多台Tomcat中,则Session管理存在很大的问题;
1、多台Tomcat之间无法共享Session,比如用户在Tomcat A服务器上已经登录了,但当负载均衡跳转到Tomcat B时,由于Tomcat B服务器并没有用户的登录信息,Session就失效了,用户就退出了登录;
2、一旦Tomcat容器关闭或重启也会导致Session会话失效;
因此如果项目部署在多台Tomcat中,就需要解决Session共享的问题,有关session共享问题的解决方案,可以了解一下动力节点Java视频教程
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Spring WebFlux 学习笔记 - (一) 前传:学习Java 8 Stream Ap 2020-06-11
- eclipse下创建Maven项目(包含webapp目录结构) 2020-06-09
- SpringBoot通过web页面动态控制定时任务的启动、停止、创建 2020-06-09
- 为什么阿里巴巴Java开发手册中不允许魔法值出现在代码中? 2020-06-09
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用 2020-06-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash