5常用对象与组件 在本章亓始讨论理论性的知识,不过这些理论性的知识又非得说明 不可,在接下来的实作章节我们都会再把相关的理论提出来解释, 如果我们翘马上应用本教材范例的话。先跳过本章也没问题。遢到 问题再回过头来找答案就行了。但是最好还是讨论一下,有个初步 的影响。 5-1 Application记录对象 ∧ Application对象是用來管理蓬个应用程序,可提供给各尸端用 户共事信丸,在实务上会被用来追踪目前使用中的人数及针对特定 用户显示特定数据。 ▲利用 Application对录来记录变量内容,则网页结束执行时其 变量内容仍可保留,也就是说 Application对意是一个“静态” 变量,如下所示:(App01.asp) pplication对象为“共用信息”,在不同浏览器执行或按重 新整理时,其值是累加的,例如我们重新执行App01.asp网页,我 卯可以清楚地发现:Var变量内的值仍为上一次执行后保留下来 的执行结果,而会产生下图的结果
5常用对象与组件 在本章开始讨论理论性的知识,不过这些理论性的知识又非得说明 不可,在接下来的实作章节我们都会再把相关的理论提出来解释, 如果我们想马上应用本教材范例的话,先跳过本章也没问题,遇到 问题再回过头来找答案就行了。但是最好还是讨论一下,有个初步 的影响。 5-1 Application 记录对象 ▲Application 对象是用来管理整个应用程序,可提供给客户端用 户共享信息,在实务上会被用来追踪目前使用中的人数及针对特定 用户显示特定数据。 ▲利用Application 对象来记录变量内容,则网页结束执行时其 变量内容仍可保留,也就是说Application 对象是一个“静态” 变量,如下所示:(App01.asp): ▲Application 对象为“共用信息”,在不同浏览器执行或按重 新整理时,其值是累加的,例如我们重新执行App01.asp网页,我 们可以清楚地发现:var变量内的值仍然为上一次执行后保留下来 的执行结果,而会产生下图的结果:
▲ Application对象的生命周期:起始于PWS/IIS开始运行且有人 开始连接时。终止PWS/IIS或一定时间内(默认为20分钟)没人连 接时。与就是说, Application对象并不是永远存在的!除非我 们将 Application对象中的数据写录到文件中将其保存起来,在 后续的单元中,我们将会特别介绍文件数据的写录与读取。 ▲虽然 Application对象可以在网页结束后,将其对象内的数据 保留下来,但是,当有两位甚至两位以上的浏览都同时进行网页链 接时,则它们所获得的数据库值将是相同的,进而使我们统计的数 据产生错误;为了避免两位甚至两位以上的浏览者同时进行网页链 接造成ASP程序执行错误,可以利用 Application对象的操作方法 Application.Lock对象上锁与 Application.Un1ock取消对象 上锁,如下所示:(lock.asp)
▲Application 对象的生命周期:起始于PWS/IIS开始运行且有人 开始连接时。终止PWS/IIS或一定时间内(默认为20分钟)没人连 接时。与就是说,Application 对象并不是永远存在的!除非我 们将Application 对象中的数据写录到文件中将其保存起来,在 后续的单元中,我们将会特别介绍文件数据的写录与读取。 ▲虽然Application 对象可以在网页结束后,将其对象内的数据 保留下来,但是,当有两位甚至两位以上的浏览都同时进行网页链 接时,则它们所获得的数据库值将是相同的,进而使我们统计的数 据产生错误;为了避免两位甚至两位以上的浏览者同时进行网页链 接造成ASP程序执行错误,可以利用Application 对象的操作方法: Application. Lock 对象上锁与Application . Unlock取消对象 上锁,如下所示:(lock. asp)
这样可避免两位浏览者同时浏览网页时, count值加总少加。即程 序执行至“ Application.lock”程序语句后,就把 Application 对象锁上锁,如此一来, Application对象便不能被其他程序连接 都所调用使用,须等到调用“ Application.lock”的程序连接者 再次调用了“ Application. unlock”取消 Application对象上锁 后,其它程序连接者才可调用1t1n.圈 ▲ Session对象为记录用户的相关信息,提供用户再次对此网页服 务器要求时作确认,例如用户账号与密码的确认,有 Session对象 的建立,来保留身份认证的结果,则用户不用于每一页网页登录时 都需输入密码作确认。 Session对象与 Application对象相同,都有是用来记录“变量” 值的,但是 Application是一对多的; Session对象则是一对一的, 对于所有的连接浏览者而言,他们对于 Application对象的使用是 “共用”的,但是每个浏览连接者却个别拥有一个“私用”的 Session对象,若将上节app01asp例子中的内容 Application改以 Session替代,如下所示:(sess01.asp)
这样可避免两位浏览者同时浏览网页时,count值加总少加。即程 序执行至“Application. lock”程序语句后,就把Application 对象锁上锁,如此一来,Application 对象便不能被其他程序连接 都所调用使用,须等到调用“Application .lock”的程序连接者 再次调用了“Application .unlock”取消Application 对象上锁 后,其它程序连接者才可调用Application 。 5-2 Session 记录对象 ▲Session对象为记录用户的相关信息,提供用户再次对此网页服 务器要求时作确认,例如用户账号与密码的确认,有Session对象 的建立,来保留身份认证的结果,则用户不用于每一页网页登录时 都需输入密码作确认。 ▲Session对象与Application 对象相同,都有是用来记录“变量” 值的,但是Application 是一对多的;Session对象则是一对一的, 对于所有的连接浏览者而言,他们对于Application 对象的使用是 “共用”的,但是每个浏览连接者却个别拥有一个“私用”的 Session对象,若将上节app01.asp例子中的内容Application改以 Session替代,如下所示:(sess01.asp)
执行结果将会如App01.asp样: 虽然在表面上看来,结果是相同的,但是 Session对象现在记录的 变量数据只与目前浏览者有关,与其他的浏览连接者一点关系也没 有,也就是说目前所读取的 Session对象内容是读取目前浏览连接 者“私用”的 Session对象。 ▲ Session对象与 Application对象的不同点: Application对象为 共用之信息,而 Session却是个别独立的,比较下两图,不同浏览 器执行sess01.asp,其值是不累加的,由此可证明 Session对象记 录的变量数据只与目前浏览连接者有关,与其他的浏览连接者一点 关系都没有 ▲ Session对象的生命周期起始于PWS/IIS浏览器第一次与服务器连 接时。终止于PW/IIS浏览器结束执行时或浏览器一段时间没有向 PWS/IS请求任何网页时
执行结果将会如App01.asp一样: 虽然在表面上看来,结果是相同的,但是Session对象现在记录的 变量数据只与目前浏览者有关,与其他的浏览连接者一点关系也没 有,也就是说目前所读取的Session对象内容是读取目前浏览连接 者“私用”的Session对象。 ▲Session对象与Application对象的不同点:Application对象为 共用之信息,而Session却是个别独立的,比较下两图,不同浏览 器执行sess01.asp,其值是不累加的,由此可证明Session对象记 录的变量数据只与目前浏览连接者有关,与其他的浏览连接者一点 关系都没有。 ▲Session对象的生命周期起始于PWS/IIS浏览器第一次与服务器连 接时。终止于PWS/IIS浏览器结束执行时或浏览器一段时间没有向 PWS/IIS请求任何网页时
▲当我们利用 Application来作为进站人数的计数器,是利用当有新的浏览连接 者进入时就调用 Application对象,将 Application对象所储存的变量数据值加 一来达到计数的目的。但是,上网者只要按下浏览器上的“重新刷新”按钮后, 你会发现计数器将会再次的自动加一,这似乎不是我们所想要的。单纯的 Application计数器程序代码与执行结果,如下所列: 那我们该如何防制连接者按下“重新刷新”按钮使计数器自动加一所产生的错 误呢,我们可以利用具有“私用”特性的 Session对象来判断浏览连接者是否是 新的连接者,我们可以利用下列判断式先检验一下,如果是新的连接者,则 Session对旬象是没有任何数据的 如果上面的判断式是成立的(浏览连接者为新连接的, Session对象内没有任何 的数据),则我们就将 Application对象的记录数据加一,同时将浏览连接者的 Session(“Conn”)数据值设为“True”,如此一来,当浏览连接者再次按下 “重新刷新”按钮后,因为 If Is empty( Session(“Conn”))Then判断式不成 立( Session对象内已有连接记录的数据,则 Application对象的记录数据就不会 再自动加一。使用 Application对象与 Session对象撰写的计数器程序代码与执行 结果,如下所列
▲当我们利用Application来作为进站人数的计数器,是利用当有新的浏览连接 者进入时就调用Application对象,将Application对象所储存的变量数据值加 一来达到计数的目的。但是,上网者只要按下浏览器上的“重新刷新”按钮后, 你会发现计数器将会再次的自动加一,这似乎不是我们所想要的。单纯的 Application计数器程序代码与执行结果,如下所列: ▲那我们该如何防制连接者按下“重新刷新”按钮使计数器自动加一所产生的错 误呢,我们可以利用具有“私用”特性的Session 对象来判断浏览连接者是否是 新的连接者,我们可以利用下列判断式先检验一下,如果是新的连接者,则 Session对旬象是没有任何数据的。 如果上面的判断式是成立的(浏览连接者为新连接的,Session 对象内没有任何 的数据),则我们就将Application对象的记录数据加一,同时将浏览连接者的 Session(“Conn”)数据值设为“True”,如此一来,当浏览连接者再次按下 “重新刷新”按钮后,因为If Is Empty(Session(“Conn”))Then判断式不成 立(Session对象内已有连接记录的数据,则Application对象的记录数据就不会 再自动加一。使用Application对象与Session对象撰写的计数器程序代码与执行 结果,如下所列: