HTTP是“无状态”协议:客户程序每次读取 Web 页面,都打开到 Web 服务器的单独的连接,并且,服务器也不自动维护客户的上下文信息。即使那些支持持续性 HTTP 连接的服务器,尽管多个客户请求连续发生且间隔很短时它们会保持 socket 打开,但是,它们也没有提供维护上下文信息的内建支持。上下文的缺失引起许多困难。例如,在线商店的客户向他们的购物车中加入商品时,服务器如何知道购物车中己有何种物品呢?类似地,在客户决定结账时,服务器如何能确定之前创建的购物车中哪个属于此客户呢?这些问题虽然看起来十分简单,但是由于 HTTP 的不足,解答它们却异常复杂困难。对于这个问题,存在 3 种典型的解决方案:
1.Cookie(结合session使用)
可以使用 cookie 存储购物会话的 ID;在后续连接中,取出当前的会话 ID,并使用这个 ID 从服务器上的查找表(lookup table)中提取出会话的相关信息。 以这种方式使用 cookie 是一种绝佳的解决方案,也是在处理会话时最常使用的方式。但是,sevlet 中最好有一种高级的 API 来处理所有这些任务,以及下面这些冗长乏味的任务:从众多的其他cookie中(毕竟可能会存在许多cookie)提取出存储会话标识符的 cookie;确定空闲会话什么时候过期,并回收它们;将散列表与每个请求关联起来;生成惟一的会话标识符。
2.URL 重写
采用这种方式时,客户程序在每个URL的尾部添加一些额外数据。这些数据标识当前的会话,服务器将这个标识符与它存储的用户相关数据关联起来。 URL重写是比较不错的会话跟踪解决方案,即使浏览器不支持 cookie 或在用户禁用 cookie 的情况下,这种方案也能够工作。URL 重写具有 cookie 所具有的同样缺点,也就是说,服务器端程序要做许多简单但是冗长乏味的处理任务。即使有高层的 API 可以处理大部分的细节,仍须十分小心每个引用你的站点的 URL ,以及那些返回给用户的 URL。即使通过间接手段,比如服务器重定向中的 Location 字段,都要添加额外的信息。这种限制意味着,在你的站点上不能有任何静态 HTML 页面(至少静态页面中不能有任何链接到站点动态页面的链接)。因此,每个页面都必须使用 servlet 或 JSP 动态生成。即使所有的页面都动态生成,如果用户离开了会话并通过书签或链接再次回来,会话的信息也会丢失,因为存储下来的链接含有错误的标识信息。
3.隐藏的表单域
HTML 表单中可以含有如下的条目:<input type="hidden" name="session" value="a1234">

这个条目的意思是:在提交表单时,要将指定的名称和值自动包括在 GET 或 POST 数据中。这个隐藏域可以用来存储有关会话的信息,但它的主要缺点是:仅当每个页面都是由表单提交而动态生成时,才能使用这种方法。单击常规的超文本链接并不产生表单提交,因此隐藏的表单域不能支持通常的会话跟踪,只能用于一系列特定的操作中,比如在线商店的结账过程.

4.Session机制

这个机制要慎用,特别是对于访问量很大的站点,因为这种机制是吧Session信息保存在服务器端。如果访问量特别大的话,对于服务器的承受力的要求有多高是可想而知的。

用在WEB开发中实现会话跟踪实现相关推荐

  1. 在web项目中实现会话跟踪(http协议是无状态)

    HTTP是"无状态"协议:客户程序每次读取 Web 页面,都打开到 Web 服务器的单独的连接,并且,服务器也不自动维护客户的上下文信息.即使那些支持持续性 HTTP 连接的服务器 ...

  2. WEB开发中的会话控制

    Session技术是网站技术中不可或缺的一个重点.主要用户跟踪用户的登录信息,实现跨页面传值.为了讲解会话控制,首先也是给同学们展示效果.如果网站地址被公开,如果没有使用session技术的页面一定会 ...

  3. 在 Web 应用中增加用户跟踪功能

    http://www.ibm.com/developerworks/cn/web/wa-lo-usertrack/index.html 进行用户跟踪的重要性 随着 Web 应用的复杂化,用户在网站上的 ...

  4. java sessionstate_在Java Web开发中自定义Session

    Session在存储安全性要求较高的会话信息方面是必不可少的,对于分布式Web应用自定义Session支持独立的状态服务器或集群是必须的.本文就来教大家如何在Java Web开发中自定义Session ...

  5. 第123天:移动web开发中的常见问题

    一.函数库 underscoreJS _.template: <ol class="carousel-indicators"><!--渲染的HTML字符串--&g ...

  6. 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  7. 谈谈WEB开发中的苦大难字符集问题

    记得刚做javaweb开发的时候被这个编码问题搞得晕头转向,经常稀里糊涂的编码正常了一会编码又乱了.那个时候迫于项目进度大多都是知其然不知其所以然.后来有时间就把整个体系搞了个遍,终于摸通了来龙去脉. ...

  8. Web开发中的相对路径和绝对路径

    在学习HTML的时候一定会遇到引入文件和链接跳转页面,比如:JS文件.CSS文件.Image图片.我们就会考虑是相对路径和绝对路径的问题.下面PHP程序员雷雪松就详细讲解下Web开发中的相对路径和绝对 ...

  9. web开发中目录路径问题的解决

    web开发中目录路径问题的解决 参考文章: (1)web开发中目录路径问题的解决 (2)https://www.cnblogs.com/freeweb/p/4751403.html 备忘一下.

最新文章

  1. 如何运用深度强化学习,让机器人运动更灵活智能?
  2. 操作系统角度谈测试管理和自动化测试
  3. linux使用命令设置IP,DNS,网关
  4. mac下搭建lua环境
  5. 关于 SAP Spartacus OAuth 2.0 Resource Owner Password Flow 实现的一些讨论
  6. 【kali】kali设置burpsuite抓包dvwa
  7. 数字填图问题matlab上机实验报告,数学建模实验报告数字填图问题
  8. C++ 语言基础 —— STL —— 算法 —— 二分查找算法
  9. hive case when语法_SQL中CASE表达式的妙用
  10. 1799元!OPPO A9悄然上架:4月30日正式开售
  11. idea 修改html 不重启,解决idea spring boot 修改html等不重启即时生效的问题
  12. vplex实施手册_VPLEX 运维及异构存储双活使用实例技术 | 在线答疑
  13. [置顶] “非主流”Web容器之TomJetty之让服务动起来
  14. windows 2003 server无法远程桌面连接
  15. Genius ACM(倍增+归并排序)
  16. 统信UOS安装flash浏览器插件
  17. c++八大排序算法详解
  18. 微信小程序大赛介绍文档
  19. 10年涨7倍!纵观南京房价变迁史,看哭多少买房人!
  20. springboot毕设项目养老院信息管理系统kak2w(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. js string转number_【虚拟机系列】JS虚拟机——实现setTimeout
  2. 2020中国高校薪资排行出炉!好过双一流的高校原来这么多!| 留言送书
  3. 机器学习工程师岗位面试经历之游戏行业
  4. QTcrateor 编译 ROS
  5. 京东向上海提供超1600万件米面粮油等民生商品
  6. 抖音音乐品牌升级 推出“炙热星河”音乐人服务平台
  7. 华为Mate 50系列明年初发布:麒麟990/骁龙8 Gen1加持
  8. 丁磊:网易在元宇宙技术和规划上已经做好准备
  9. 腾讯回应租号打游戏:已向超20家账号交易平台发函
  10. 小米汽车总部正式落户北京,注册地为北京经济技术开发区