1、HTTP协议本身是“连接-请求-应答-关闭连接”模式的,是一种无状态协议(HTTP只是一个传输协议);
2、Cookie规范是为了给HTTP增加状态跟踪用的(如果要精确把握,建议仔细阅读一下相关的RFC),但不是唯一的手段;
3、所谓Session,指的是客户端和服务端之间的一段交互过程的状态信息(数据);这个状态如何界定,生命期有多长,这是应用本身的事情;
4、由于B/S计算模型中计算是在服务器端完成的,客户端只有简单的显示逻辑,所以,Session数据对客户端应该是透明的不可理解的并且应该受控于服务端;Session数据要么保存到服务端(HttpSession),要么在客户端和服务端之间传递(Cookie或url rewritting或Hidden input);
5、由于HTTP本身的无状态性,服务端无法知道客户端相继发来的请求是来自一个客户的,所以,当使用服务端HttpSession存储会话数据的时候客户端的每个请求都应该包含一个session的标识(sid, jsessionid 等等)来告诉服务端;
6、会话数据保存在服务端(如HttpSession)的好处是减少了HTTP请求的长度,提高了网络传输效率;客户端session信息存储则相反;
7、客户端Session存储只有一个办法:cookie(url rewritting和hidden input因为无法做到持久化,不算,只能作为交换session id的方式,即a method of session tracking),而服务端做法大致也是一个道理:容器有个session管理器(如tomcat的 org.apache.catalina.session包里面的类),提供session的生命周期和持久化管理并提供访问session数据的 api;
8、使用服务端还是客户端session存储要看应用的实际情况的。一般来说不要求用户注册登录的公共服务系统(如google)采用 cookie做客户端session存储(如google的用户偏好设置),而有用户管理的系统则使用服务端存储。原因很显然:无需用户登录的系统唯一能够标识用户的就是用户的电脑,换一台机器就不知道谁是谁了,服务端session存储根本不管用;而有用户管理的系统则可以通过用户id来管理用户个人数据,从而提供任意复杂的个性化服务;
9、客户端和服务端的session存储在性能、安全性、跨站能力、编程方便性等方面都有一定的区别,而且优劣并非绝对(譬如TheServerSide号称不使用HttpSession,所以性能好,这很显然:一个具有上亿的访问用户的系统,要在服务端数据库中检索出用户的偏好信息显然是低效的,Session管理器不管用什么数据结构和算法都要耗费大量内存和CPU时间;而用cookie,则根本不用检索和维护session数据,服务器可以做成无状态的,当然高效);
另外,经常在论坛看到或听到同事说ie关掉了,session就没了,而且还争论的唾沫横飞,偶就感到很好玩,只能不置可否地笑笑。这里只提示一下:以Ctrl+N或Shift+点击链接方式打开的IE窗口是运行在同一个进程空间的,cookie数据在进程空间中是共享的,而双击桌面上的ie图标打开的是一个新的进程,会话级的cookie(未明确指定生存期的cookie)在新的IE窗口里面是无法访问到的。
分享到:
相关推荐
4. **Cookie和Session**:在Web应用中,服务器通常使用Cookie来跟踪会话状态,而Session存储在服务器端,用于保持用户登录状态。通过管理Cookie和Session,服务器可以实现会话级别的验证。 5. **公钥基础设施(PKI)*...
5. **状态管理**:ASP.NET提供了多种状态管理机制,包括视图状态(ViewState)、控制状态(ControlState)、隐藏字段、Session和Cookie等。这些技术用于在页面间或服务器端保留用户数据。 6. **页面生命周期**:...
这涉及到session管理,可能还需要结合Cookie来实现用户状态的持久化。 2. **数据持久化**:论坛的帖子、评论等内容需要存储在数据库中,因此涉及SQL查询、事务管理以及数据库设计,如表结构、索引优化等。 3. **...
这通常涉及表单处理、GET和POST请求的解析、Cookie和Session的管理。对于初学者,理解这些概念是构建动态网站的基础。 在数据库集成方面,PHP与MySQL的结合是常见的选择。书中的章节可能包括如何连接MySQL数据库,...
- **Cookie**:说明Cookie的操作方法,如设置、读取等。 - **验证码**:介绍如何生成和验证图形验证码。 - **文件上传**:演示文件上传的实现过程和注意事项。 - **图像处理**:说明如何利用ThinkPHP5.0提供的图像...
同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...
同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...
同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...
同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...