写出 Session 的运行机制

session 机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

当程序需要为某个客户端的请求创建一个 session 的时候,服务器首先检查这个客户端的请求里是否已包含了一个 session 标识-称为 sessionid,如果已包含一个 sessionid 则说明以前已经为此客户端创建过 session,服务器就按照 sessionid 把这个 session 检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含 sessionid,则为此客户端创建一个 session 并且生成一个与此 session 相关联的 sessionid,sessionid 的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 sessionid 将被在本次响应中返回给客户端保存。

保存这个 sessionid 的方式可以采用 cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发给服务器。一般这个 cookie 的名字都是类似于SEEESIONID。r

由于 cookie 可以被人为的禁止,必须有其他机制以便在 cookie 被禁止时仍然能够把 sessionid 传递回服务器。经常被使用的一种技术叫做 URL 重写,就是把 sessionid 直接附加在 URL 路径的后面,附加方式也有两种,一种是作为 URL 路 径 的 附 加 信 息 , 表 现 形 式 为
http://…../xxx;SEEESIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

另 一 种 是 作 为 查 询 字 符 串 附 加 在 URL 后 面 , 表 现 形 式 为
http:// … ../xxx?SEEESIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个 SEEESIONID。

点击此处
隐藏目录