金桥科普  
设为首页 关于我们 邮箱登录
科普聚焦时代科技科普生活科学技术自然科学航空航天科技博览历史考古电脑IT
您现在的位置: 首页 >> 科普频道 >> 技巧实践 >> 文章详情
学习用ASP编写计数器(上)

aT Studio Sherlock 赛迪网 2002-02-02



    作为网络上最重要的信息载体的Web服务从互连网诞生尹始就开始了她漫长的发展路程。从最早的HTML 1.0版到之后的HTML 4.0以及DHTML,客户端所使用的语言从来没有停止过发展。但是Web语言如何的进步,也只是在外观上做到"动态",根本的数据以及资料都是静态的,就好比是新瓶装旧酒。如果要想更换资料的话就要运用一些工具对页面本身进行修改,这样做效率势必要低下的多,因为除了修改还要考虑到非本地的上下传所花去的时间;而且,因为是人工操作,一些粗心导致的整个页面的错误也是不可避免的。如果是多人操作,这个困难度更是可想而知。

    有问题就要解决,于是能够动态生成页面的语言和平台出现了。从CGI开始,人们就终于能够领会到论坛、聊天室这些网络程序(Scripts)所带来的便利了。但是写过CGI的人都知道由CGI所生成的页面都要一句句的通过语句输出,效率低,而且相当的麻烦。接着,插入式语言就诞生了。ASP、PHP和JSP就是这一类型的代表,他们的特点是通过一些标志可以把一段段的代码插入到页面里,既大大的提高了产生页面的效率,也使编写工作轻松很多。其中ASP是最早出现的,她可以使用VBScript、JavaScript和Perl作为编写语言,而这三者中VBScript又是最常用的。由于ASP去除了变量类型声明(这点有优有劣,降低了难度同时也降低了效率),VBScript继承了相当部分Basic语言的成分,在极短的时间内ASP就流行起来,大小网站都能看到她的身影,似乎不用ASP就不能做网站一般。虽然ASP+已经推出,PHP和ASP也依靠他们过人的某些方面的优点大有取代ASP之势,但是ASP依靠的Win32(不是win 3.2而是Windows32位)平台到底是当今最流行的操作平台,ASP使用的范围还是相当广的。而且这些网络语言有相当大的共通性,熟练了入门级的ASP后可以很容易地向其他语言进发。

    不过当你大量使用别人的ASP代码时,是否想过要自己尝试一展身手呢?本篇是针对那些有Basic语言使用经验的入门级程序员的,可以帮助你们快速的掌握一把新的利器。其实ASP的核心--六大对象通过查阅MSDN可以很快的掌握,笔者只用了一天时间就融会贯通了。但是由于与普通的应用程序不同,真正使用的时候会遇到不少的麻烦,积累这些经验这才是真正的财富。笔者就是想在进行语言教学的同时加入自己的心得,使读者能在更短时间学到更多东西。不过笔者毕竟水平有限,读者千万不要被禁锢住思维,要学会不断地学习、尝试、积累,还有别忘了把你们的经验与我交流啊。

ASP及其平台运行机理介绍

    也许大家会认为介绍这个是浪费时间,其实不然,了解了原理才能更好的解决实际问题。笔者碰到的很多问题都是在了解了运行机理后得以解决的。

    ASP全称是Active Server Pages,这个算废话,知不知道无所谓^_^。重要的是她一般运行在Windows NT+IIS的平台上,如果要使用ASP 2.0也就是现在用的最多的那么最好的搭配平台是Windows 2000+IIS 5.0。个人用户推荐安装Windows 2000 Professional版和自带的IIS 5.0进行调试和运行。ASP是基于解释的,什么意思呢,就是一个ASP程序被运行时每个语句话都会被IIS内带的解释器读取并且进行解释即计算,而不是一般的应用程序那样编译好后再运行。这样的好处是灵活度大,平台移植性好;缺点是代码容易被泄露,速度大大降低。所以现在的PHP,JSP都可以通过一些外挂的模块甚至自身就支持编译后再运行,这样就类似网络应用程序了。但是既然用了ASP就应该有ASP的习惯,与编写应用程序不同要尽量地降低服务器的负担。这么说吧,你运行一次可能差别不大,但是一旦访问量大了,这个差别就要*n,越大数字越是惊人。所以编写ASP一个小小的改进就会带来不小的改善,至于如何改善性能我会在编写程序中介绍。

    还有ASP是如何让客户看到那些动态生成的页面的,这个由我来一步步说明。用户想看一个xxx.asp的内容,就和浏览普通网页一样,那么浏览器就发出一个请求"Get xxx.asp",之后IIS就收到了这个请求并发现调用的页面后缀名是ASP。经过一些简单的验证以后IIS就把手中的接力棒交给一个专门处理ASP的动态联结库,这个联结库自己有一个缓存,她一边解释这个ASP文件一边就按照程序里的要求把输出结果放到这个缓存里。最后全部解释完毕,这个缓存的内容就全部倒还给IIS,由IIS把这些结果当作一个普通网页一样(其实调用网页时也是把网页内容读入缓存再传送给用户)返回给终端,然后么……然后你就看到一个内容丰富的ASP页面了。

    既然ASP是运行在Windows2000 下,如果你使用了NTFS就一定要注意权限问题,否则有的要吃苦了。这个稍后也会在文中着重指出,所以关于IIS的安装和虚拟目录的设置就交给读者自己去摸索了,有问题只管和笔者联系。

目的及规划

    说了那么多,还没说清楚今天到底要做什么呢。计数器大家都用过吧?就是页面上那个会显示访客人数的东西,不过有的是用图象表示,有些是用文字。其实他们运行的原理都是一样的,就是在服务器端上保存下目前的访客数,当有客户访问这个页面即调用这个程序的时候,读出这个数据并输出,同时把访客数加一后保存。

    在这个过程中,马上就会发现有几个问题需要解决。

    1. 如何让客户调用这个程序?是弹出窗口,还是整个首页为了一个计数器做成ASP,还是……

    2. 怎么保存?目前有两种选择:文件或者是数据库。

    3. 如何显示?这个其实和第一个问题是相当有关联的,解决第一个问题后只要考虑如何美化输出效果就可以。

    其实写程序的时候,最重要的是先想好会遇到的问题以及解决的办法。读者们不要急着如何去写ASP,待我一一解释这些后再讲述实现的具体方法、语句和注意事项。

如何让客户调用这个程序

    最先想到的方法就是和普通的ASP程序一样调用整个做成ASP的页面。但如果我们整个页面都是静态的只是想要一个"动态"的计数器这样做明显有几个问题:一是主次颠倒,让ASP解释器去输出一个网页如何也不可能比普通的页面输出快;二是管理难度加大,写程序很重要的一点就是需要模块化,ASP也不例外。所以除非你要使用计数器的页面完全就是一个动态页面否则应该选择其他办法,例如弹出窗口或是在页面内插入一个ASP。前者很好办,只要在页面onLoad的时候运行一个JavaScript语句自动弹出小窗口就可以,方法这里不详述。如此虽可以提高效率,但是却降低了美观性。所以最好的选择就是嵌入一个ASP,如何做到呢?如果是shtml(ServerSide)就可以"include"另外一个页面,要在html里实现就不得不使用JavaScript法宝。如果用过JavaScript的人就会知道我们可以在页面正文的任一位置用document.write();插入一段HTML代码,效果和直接输入HTML效果一样。那么我们可以用这样插入一段asp写成的javascript代码,而这段asp唯一与其他不同的就是在要输出时需要加上document.write("")。这样自然还会碰到引号冲突等问题,但我们可以依靠通过一个子程序代为修改输出来完善。那么这个问题就解决了。

如何保存

    这个问题的选择相比就少得多,只有文件和数据库。前者可以很容易地通过几句代码就实现,复杂度可以低很多,问题是功能不可能过于扩充,否则就要牵涉到数据储存结构和检索问题,需要更高地编程水平了。而数据库乍一看似乎复杂不少,但依靠ASP的强大功能只要熟悉一些SQL语法就不是难事,这个我会在后文中介绍。用数据库可以很方便地实现多用户(多计数器)的功能,结构越是复杂和文件储存相比就可以把功夫更多得放在其他方面,而不是数据存取操作,这个是相当有利的。不过既然如此难以取舍,我就一起介绍吧。只要读者们有耐心多学点东西,自己多思考,就能领悟什么时候用什么方法。
  发表评论 写信给编辑 关闭窗口
同栏目内容
· 让你的电脑启动画面绚起来 2007-09-12
· 小技巧帮大忙 极点五笔 2007-09-05
· 如何提高迅雷的下载速度? 2007-09-03
· Vista小技巧 消除红眼 2007-09-03
· 千千静听实用小功能 2007-08-29
· 四大妙招帮你成功的隐藏文件 2007-08-20
相关内容
近期主推
我国首架自主产权飞机完成
·我国首架自主产权飞机完成
·机器人版"千手观音"惊艳亮相
·西藏发现青藏高原最大冰川群
·中日: "月亮女神"携手"嫦娥"
·行星大碰撞砸死恐龙催生人类
·美研制会飞汽车定价9万美元
近期热门
科学家解开中子星爆发之谜
·科学家解开中子星爆发之谜
·英海域惊现大龙虾为普通龙虾5倍
·新物种金蛙体表有剧毒
·我国嫦娥工程计划测量月球
·精神病药物可治多种癌症
·视觉震撼:来自海底的精灵
近期焦点
美国发现极其罕见的白化银鲛(图)
·美国发现极其罕见的白化银鲛(图)
·美国展出罕见连体双胎双头龟
·波罗的海发现罕见短吻真海豚
·能帮你做大扫除的机器人[组图]
·法老墓3000年前坚果保存完好
·广西发现罕见溶洞钟乳石有30万年
金桥科普是一个公益性栏目,内容由作者提供或摘自互联网,其目的是向广大网民普及科学技术知识。如果您发现本网站转载或摘编了您拥有著作权的作品,请通知我们(电话:023-63659911),我们立即删除。
关于我们 | 网站地图 | 用户注册 | 广告客户 | 招聘信息 | 业务信息
Copyright@2006-2009 JQInfo.com,WONDER. All Rights Reserved
重庆科技咨询中心.重庆网得信息技术有限公司.版权所有
Email:webmaster@jqinfo.com
重庆数据通信局提供网络带宽. 渝ICP备05002327号