再见西城 发表于 2015-2-3 23:39:23

ASP教程之Session对象生效的客户端处理办法

实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,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还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。

小妖女 发表于 2015-2-4 04:53:43

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

因胸联盟 发表于 2015-2-9 15:42:19

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

愤怒的大鸟 发表于 2015-2-9 23:08:22

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

若天明 发表于 2015-2-28 04:20:17

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

活着的死人 发表于 2015-3-9 20:44:24

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

柔情似水 发表于 2015-3-16 19:36:46

ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。

再见西城 发表于 2015-3-18 18:47:02

没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。

冷月葬花魂 发表于 2015-3-21 15:37:27

哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?

admin 发表于 2015-3-21 18:21:08

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

仓酷云 发表于 2015-3-24 23:34:57

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

海妖 发表于 2015-3-29 01:28:58

那么,ASP.Net有哪些改进呢?

飘飘悠悠 发表于 2015-4-10 06:52:59

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

分手快乐 发表于 2015-4-16 14:09:22

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

不帅 发表于 2015-4-26 04:11:53

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

小魔女 发表于 2015-4-26 17:10:47

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

只想知道 发表于 2015-5-4 05:38:37

下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...

若相依 发表于 2015-6-5 23:34:20

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

金色的骷髅 发表于 2015-6-15 21:20:02

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
页: [1]
查看完整版本: ASP教程之Session对象生效的客户端处理办法