session 的实现
session 的原理不难,但是具体实现它可是很有技巧的,一般需要三个组件配合完成,它们分别是 Manager
、Provider
和 Session
三个类(接口)。
1、浏览器通过 HTTP 协议向服务器请求路径 /content
的网页资源,对应路径上有一个 Handler 函数接收请求,解析 HTTP header 中的 cookie,得到其中存储的 sessionID,然后把这个 ID 发给 Manager
。
2、Manager
充当一个 session 管理器的角色,主要存储一些配置信息,比如 session 的存活时间,cookie 的名字等等。而所有的 session 存在 Manager
内部的一个 Provider
中。所以 Manager
会把 sid
(sessionID)传递给 Provider
,让它去找这个 ID 对应的具体是哪个 session。
3、Provider
就是一个容器,最常见的应该就是一个散列表,将每个 sid
和对应的 session 一一映射起来。收到 Manager
传递的 sid
之后,它就找到 <