1、Session机制
Web 应用程序中经常使用 Session 来记录客户端状态。 Session 是服务器端使用的一种记录客户端状态的机制,使用上比 Cookie 简单一些,相应的也增加了服务器的存储压力
2、保存session的几种方法
A 保存 session id 的方式可以采用 cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。
B.由于 cookie 可以被人为的禁止,必须有其它的机制以便在 cookie 被禁止时仍然能够把session id 传递回服务器,经常采用的一种技术叫做 URL 重写,就是把 session id 附加在 URL路径的后面,附加的方式也有两种,一种是作为 URL 路径的附加信息,另一种是作为查询字符串附加在 URL 后面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能
请求的路径后面都包含这个 session id。
C.另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把 session id 传递回服务器 。
3、Session什么时候被创建?
一个常见的错误是以为 session 在有客户端访问时就被创建,然而事实是直到某 server 端程序(如 Servlet)调用 HttpServletRequest.getSession(true)这样的语句时才会被创建。
4、Session 何时被删除?
A. 程序调用 HttpSession.invalidate();
B.距离上一次收到客户端发送的 session id 时间间隔超过了 session 的最大有效时间;
C.服务器进程被停止;
注意关闭浏览器只会使存储在客户端浏览器内存中的 session cookie 失效,不会使服务器端的 session 对象失效.。
具体来说 cookie 机制采用的是在客户端保持状态的方案,而 session 机制采用的是在服务器端保持状态的方案。同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以 session 机制可能需要借助于 cookie 机制来达到保存标识的目的,但实际上还有其他选择。