为什么session会出现?

接上文《关于cookie》的后话。毕竟cookie是放在客户端的,单方面的保证总是显得那么无力,如果有点什么意外导致cookie失踪,那无状态的问题其实还是没解决,只是让无状态出现的几率等于客户端出事的几率罢了。这个时候,为了做个保底,至少在服务器和客户端他们两个想交互的时候,不会突然相忘于江湖,session就这么出来了。

session是什么

简单的说,session就是在服务器和客户端第一次见面的时候由服务器做的文本(信物),自己拿着,在浏览器发送请求的时候放在cookie头上,让http请求顺路捎过去。这样双方靠着双方手上的信物想起彼此,从而进行交互。
因为信物是在服务器手里,所以即使客户端出了问题,在session周期内的时间里只要再次访问,双方也还能认识彼此。

session的流程

二、关于session

Session的几种存储方式

session Cookie: 保存session id的方式可以学习cookie,把session id 放在客户端,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器,这种cookie称为session cookie。

URL重写: 由于cookie可以被人为的禁用,必须有其它的机制以便在cookie被禁用时仍然能够把session id传递回服务器, 经常采用的一种技术叫做URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息, 另一种是作为查询字符串附加在URL后面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。

Session的生命周期

WEB服务器无法判断当前的客户端浏览器是否还会继续访问,也无法检测客户端浏览器是否关闭,所以,即使客户已经离开或关闭了浏览器, WEB服务器还要保留与之对应的HttpSession对象。

随着时间的推移而不断增加新的访问客户端,WEB服务器内存中将会因此积累起大量的不再被使用的HttpSession对象,并将最终导致服务器内存耗尽。

WEB服务器采用“超时限制”的办法来判断客户端是否还在继续访问,如果某个客户端在一定的时间之内没有发出后续请求,WEB服务器则认为客户端已经停止了活动, 结束与该客户端的会话并将与之对应的HttpSession对象变成垃圾。

如果客户端浏览器超时后再次发出访问请求,WEB服务器则认为这是一个新的会话的开始,将为之创建新的HttpSession对象和分配新的会话标识号。

相关文章:

  • 2021-12-07
  • 2022-01-09
  • 2021-12-13
  • 2021-09-28
  • 2022-01-05
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-01
  • 2021-06-27
  • 2022-01-12
  • 2021-11-04
  • 2022-12-23
相关资源
相似解决方案