HTTP协议(http://www.w3.org/Protocols/)是“一次性单向”协议。 
服务端不能主动连接客户端,只能被动等待并答复客户端请求。客户端连接服务端,发出一个HTTP Request,服务端处理请求,并且返回一个HTTP Response给客户端,本次HTTP Request-Response Cycle结束。 
我们看到,HTTP协议本身并不能支持服务端保存客户端的状态信息。于是,Web Server中引入了session的概念,用来保存客户端的状态信息。 
这里用一个形象的比喻来解释session的工作方式。假设Web Server是一个商场的存包处,HTTP Request是一个顾客,第一次来到存包处,管理员把顾客的物品存放在某一个柜子里面(这个柜子就相当于Session),然后把一个号码牌交给这个顾客,作为取包凭证(这个号码牌就是Session ID)。顾客(HTTP Request)下一次来的时候,就要把号码牌(Session ID)交给存包处(Web Server)的管理员。管理员根据号码牌(Session ID)找到相应的柜子(Session),根据顾客(HTTP Request)的请求,Web Server可以取出、更换、添加柜子(Session)中的物品,Web Server也可以让顾客(HTTP Request)的号码牌和号码牌对应的柜子(Session)失效。顾客(HTTP Request)的忘性很大,管理员在顾客回去的时候(HTTP Response)都要重新提醒顾客记住自己的号码牌(Session ID)。这样,顾客(HTTP Request)下次来的时候,就又带着号码牌回来了。 
我们可以看到,Session ID实际上是在客户端和服务端之间通过HTTP Request和HTTP Response传来传去的。

我们看到,号码牌(Session ID)必须包含在HTTP Request里面。关于HTTP Request的具体格式,请参见HTTP协议(http://www.w3.org/Protocols/)。这里只做一个简单的介绍。 
在Java Web Server(即Servlet/JSP Server)中,Session ID用jsessionid表示(请参见Servlet规范

最新文章

  1. 【UWP】解析GB2312、GBK编码网页乱码问题
  2. 给ListBox每项加图标
  3. Java日志规范
  4. Atitti 知识图谱构建方法attilax 总结
  5. 漫谈计算摄像学 (一):直观理解光场(Light Field)
  6. mysql 执行状态分析 show processlist
  7. Howto add permanent static routes in Ubuntu
  8. Redis中的批量删除数据库中的Key
  9. (转载)delphi checklistbox用法
  10. POJ 2560 Freckles Prime问题解决算法
  11. APACHE 服务器开启URL REWRITE模块的方法
  12. SVN使用基础
  13. javascript Map和Set
  14. Java基础语法<五> 大数值BigInteger BigDecimal
  15. css3 笔记 背景
  16. 阿里云服务器配置phpstudy实现域名访问【图文教程】
  17. 增加tomcat的运行速度
  18. Mybatis经常被问到的面试题
  19. JavaSE-基础语法(一)--数据类型及包装类
  20. ACM-ICPC 2018 沈阳赛区网络预赛 J. Ka Chang (分块思想)

热门文章

  1. git入门 创建版本库, 版本管理 分支 标签
  2. CSS基础知识思维导图xmind
  3. 前端入门3-CSS基础
  4. 网站的增 / 删 / 改 / 查 时常用的 sql 语句
  5. TypeScript的概要和简介
  6. 穷举,迭代,while循环
  7. Navicat 连接MySQL数据库 报错2059 - authentication plugin 'caching_sha2_password'的解决办法
  8. SSM框架—环境搭建(MyEclipse+Tomcat+MAVEN+SVN)
  9. 2. svg学习笔记-svg中的坐标系统和viewbox
  10. 【爬坑】远程连接 MySQL 失败