• 天津税务:推进“一制三化”审批制度改革_ebookpk 2018-11-26
  • Обычаи и нравы района Лунгун_爱的怒放 2018-11-26
  • 主持人资料库——黄健翔_冰箱冷笑话 2018-11-26
  • 苹果为新款iPhone提供备选丢失/盗窃保险计划_北美华文新闻 世界 2018-11-26
  • 银联卡小额免密限额提至1000元 默认开通合理吗?_情沦杏花村 2018-11-26
  • Empresas estrangeiras veem Cintur?o e Rota como oportunidade de desenvolvimento_中央反义词 2018-11-26
  • [视频]中文友好掀开新篇章——文莱各界高度评价习近平主席访问_完美世界高手5200 2018-11-26
  • 魅力西宁:暖风吹过记忆里的河湟老街_鸣护艾丽莎 2018-11-26
  • 法国28万人示威反对油价上涨 逾200人受伤_纵惯线 2018-11-26
  • 宫品仁油画、陈雁秋摄影作品展在太原开展_981 2018-11-26
  • 华为Mate9要来了 邀请函确定11月3日德国发布_团聚的反义词 2018-11-26
  • 败走茨城 权健失利不失信心_七雄争霸手机版 2018-11-26
  • 多为年轻选手创造条件(体坛观澜)_bydf0 2018-11-26
  • 西安市场主体井喷增长 今年新登记市场主体突破23万户_qqsecure 2018-11-25
  • 比特币这座楼要塌?价格跌破4300美元,今年已跌掉65%_奥巴马踢门 2018-11-25

    ASP编程中Session对象失效的客户端解决方法

    2019-04-22 03:10:24 IT时代网 分享

    贾治邦简历 www.powere.cn   Session对象有一个十分重要的属性:Timeout,它用于设置在会话资源被释放前,会话对象所能保持非活动状态的时间(默认值为20分钟)。当Timeout属性设置的时间值耗尽后,会话资源将被释放。通过Timeout属性破坏Session对象,避免了Session对象在服务器中无限制地产生,?;ち朔衿髯试?。但是,在实际网络开发中,常常遇到由于Session对象失效,用户状态信息丢失而导致应用流程无法正常完成的问题。

      虽然利用Timeout属性释放资源的策略是出于?;し衿鞯哪康?,但是Session对象不可预知的失效性,却成为开发应用程序的一个弊病。因而在实际应用程序的开发中,必须解决Session对象失效的问题。

      传统的解决方法

      现有的解决方法都是采用服务器端方法解决Session对象失效问题。典型的处理方法分为两大类:失效前的处理和失效后的处理。

      失效前的处理是指在Session对象尚未失效之前,对变量进行转存等处理,做到防患于未然。典型的解决方法是在应用程序中设定一个定时器,在Session对象失效前5分钟触发定时器,然后重新设置Session对象的各个变量和对象。由于必须在服务器端实时维护该定时器,并且必须保证该段程序在整个会话过程中处于激活状态,所以采用这种方法增加了服务器的额外负载。

      失效后的处理是指在Session对象失效后,立即提示用户进行处理。典型的解决方法是在Session对象失效后,在服务器端保存断点,并提示用户重新登录,继续完成工作。这种方法实现简单,但是往往因为断点的不可完全自动恢复性,以及重新登录过程的复杂性,而受到最终用户的抱怨和指责。

      针对以上两类解决方案的缺陷,笔者在编程实践中结合Cookie对象的特性,采用Session对象与Cookie对象在客户端联合存取会话级变量的方法,既避免了对服务器资源的额外需求,又解决了断点不可自动恢复的问题,而且还免去了重新登录的麻烦。

      新的解决方法

      Cookie对象是用来存储有关当前用户数据的小信息包,它可以在浏览器和Web服务器之间传递。在Web应用中,Cookie提供了一种用于跟踪、记录每个用户位置的机制。Cookie最常见的用处之一,就是保存一个Web应用中最后一次被访问的网络页面的时间以及日期或被访问的网址。

      通常,Cookie对象在客户端Windows系统目录下Cookies子目录中以文件形式存储。存储在Cookie对象中的信息数据能够被保存较长时间,所以,可以将会话级变量备份在Cookie对象中,在Session对象失效后,通过检索并利用Cookie对象中的信息来自动恢复断点。

      Cookie对象具有如下几个属性:

      ●Expires:设定Cookie对象到期的日期;

      ●Domain:将Cookie对象的传送确定为仅由Domain属性确定的成员;

      ●Path:确定Cookie对象传送路径;

      ●Secure:明确Cookie对象是否安全;

      ●HasKeys:返回Cookie对象是否包含多值。

      如果没有显式定义Cookie对象的Expires属性,Cookie对象将在用户会话期结束时到期。

      ASP中通过Request集合和Response集合读写对象。向Cookie对象写变量的语法如下:

      Response.Cookies(cookie)[(Key)|.attribute] = value

      其中,cookie是Cookie文件名,Key标明一个字典元素,attribute是Cookie 的一个具体性质,value是分给cookie的值。例如,为创建一个叫MyHobby的Cookie,并分配其值为:BasketBall,使用下述语法:

      <%Response.Cookies(“MyHobby")=“BasketBall" %>

      在客户机器上读取Cookie对象的方法如下:

      Request.Cookies(cookie)[(Key)|.attribute]

      其中,cookie是被请求Cookie的名字,Key是子关键字值下标,attribute是用于标明Cookie属性。例如:为抽取一个叫做MyHobby的Cookie中的信息并将它的值写到页面,使用下述语法:

      <% Request.Cookies(“MyHobby") %>

      需要注意的是:不能在HTTP页首信息已被送到请求浏览器之后,再向一个Cookie对象写入信息?;痪浠八?,不能在任何HTML标识符被发送到浏览器之后才向浏览器发送Cookie信息。

      具体实现

      下面通过一个基于ASP技术的聊天室的实现,来介绍如何处理Session对象变量失效的问题。

      ●在用户登录前初始会话级变量:UserName(用于存储登录用户名)。

      <% Session(“UserName")=“" %>

      //初始化Cookie对象

      <% Response.Cookies(“UserName")=“" %>

    声明:本站部分资源来源于网络,版权归原作者或者来源机构所有,如作者或来源机构不同意本站转载采用,请通知我们,我们将第一时间删除内容。本站刊载文章出于传递更多信息之目的,所刊文章观点仅代表作者本人观点,并不意味着本站赞同作者观点或证实其描述,其原创性及对文章内容的真实性、完整性、及时性本站亦不作任何保证或承诺,请读者仅作参考。
    编辑:
    恒兴烧坊酒 | 张家界代孕 | 青岛怀孕 | 吉林来孕 | 高鹰代孕 | 高鹰代孕 | 奇侠小说网 | 金洁妈妈网 | 大话健康网 | 乐清新闻资讯网 | 想找大学生代生孩子 | 给别人生小孩 | 我想替人生小孩 | 福州代孕网 |