|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。session|对象|处理|客户端 成绩的提出
ASP(Active Server Pages)手艺的Session对象用于存储用户在对话时代的公有信息。以后用户的Session对象中界说的变量和对象能在页面之间同享,然而不克不及为使用中其他用户所会见,因而在用ASP开辟收集使用法式时,可以使用Session对象保留和跟踪用户的形态信息。
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")=“" %>
●在用户登录时,设置会话级变量并备份到客户端Cookie对象中。
<%userName=Trim(Request.For(“UserName"))%>
<% Session(“UserName")=userName %>
//将会话级变量备份到客户端Cookie对象中
<% Response.Cookies(“UserName")=userName %>
●在用户讲话的时分,读取会话级变量,假如该变量已生效,则经由过程读取Cookie对象,恢复该会话级变量的属性值。
<% userName=Session(“UserName") %>
//假如变量已生效,则检索客户端Cookie对象
<% if userName=“" then %>
<% userName=Request.Cookies(“UserName") %>
<% if userName=“" then %>
//假如用户未经由登录就进入聊天室,则该Cookie对象属性值为空。此时,提醒用户失足,并转向用户登录页面
<% Response.Redirect “Error.html" %>
<% else %>
//从Cookie对象中恢复该会话级变量
<% Session(“UserName")=userName %>
<% end if %>
<% end if %>
●当用户加入聊天室时,排除会话级对象和Cookie对象。
<% Session(“UserName")=“" %>
//将Cookie对象属性值排除,防止用户不经由登录就直接进入聊天室
<% Response.Cookies(“UserName")=“" %>
以上代码在Windows NT 4.0+IIS 4.0+IE 5.0情况中运转经由过程。
</p> 缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。 |
|