动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

探讨Web开发中的Session存储与管理

07-29 17:18 1078浏览
举报 T字号
  • 大字
  • 中字
  • 小字

我们都知道,由于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共享问题的解决方案,蛙课网推出了视 频课程:分布式Session共享解决方案

3人推荐
共同学习,写下你的评论
2条评论
Hrzhi

最后的分布式session共享解决方案的链接失效

1楼 0 举报 08-23 19:15
2楼 0 举报 09-14 10:05
军哥
程序员军哥

11篇文章贡献54110字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

五分钟读懂UML类图

江湖人称小李白12-10 10:41

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消