ASP计数器设计详解

原创 2004年08月07日 10:31:00

Active Server Pager(动态服务器主页,简称ASP),通过读写服务器的文件,结合script语言(VBscript或Jscript)和html码可以方便地实现页面计数器功能。现流行的ASP教材和网络上的ASP教程都谈到过ASP计数器的设计问题,但是都过于简单,比如没有提到怎样实现计数器脚本和主页面的分离以及图象计数器的实现等。下面就作者为单位制作NT web站点的经验,举实例循序渐进谈谈关于ASP计数器的设计,希望能给ASP的初学者和对ASP WEB编程有兴趣的网友一些启发。

  (一)简单的计数器
  ASP内含五个内置的"Active Server Components"(ActiveX服务器组件),即Database Access component(数据库访问组件)、File Access component(文件访问组件)、Ad Rotator component(广告轮播器组件)、Brower Capabilities component(浏览器信息组件)、Content Linking component(内容链接组件)。我们下面要设计的计数器,就是通过其中的File Access component(文件访问组件)来读写服务器文件来实现。算法思路是:在服务器端用一个文本(ASCII)文件存放计数数值,每当页面被访问时就从文件中读出数值,显示给用户,并且使数值加1,把增加后的数值写回到文件。
  写入数据到一个服务器计数文件的ASP语句和说明如下:
CounFile=Server.MapPath("用来存放计数器值的文件名")
    'Server服务器访问方法MapPath(path)是将存放计数器值的文件所在的路径转换成物理路径
  SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
    '使用方法CreateObject定义对象FileSystemObject
  SET OutStream=Server.CreateTextFile(FileObject,True,False)
    '使用对象FileSystemObject提供方法CreateTextFile产生文本文件,其中参数"True"表示覆盖原来的文件,"False"表示文件为ASCII类型
  OutStream.WriteLine "要写入的数据"
    'OutStream.WriteLine为往文件写入一行数据
  从一个服务器文件读取数据的ASP语法如下:
CounFile=Server.MapPath("用来存放计数器值的文件名")
  SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
  SET InStream=Server.OpenTextFile(FileObject,1,false,false)
  '使用对象FileSystemObject提供方法OpenTextFile产生文本文件,
  '其中参数"True"表示覆盖原来的文件,"False"表示文件为ASCII类型
  "要读取的数据"=InStream.ReadLine
  '其中InStream.ReadLine为从文件中读取的一行数据
  下面是一个用ASP实现页面计数器功能的计数器例子(simplecounter.asp),我在代码中详细注释了语句。你可以把以下代码粘贴到你需要计数的页面代码中。当然,你的服务器必须支持ASP,且你已经在主页所在的目录下创建了一个内容为0的文本文件simplecounter.txt。
  简单的ASP计数器simplecounter.asp代码及注释:
<%
  CountFile=Server.MapPath("simplecounter.txt")
  '文件aspconter.txt是用来储存数字的文本文件,初始内容一般是0
  Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
  Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE)
  counter=Out.ReadLine
  '读取计数器文件中的值
  Out.Close
  '关闭文件
  SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
  Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE)
  Application.lock
  '方法Application.lock禁止别的用户更改计数器的值
  counter= counter + 1
  '计数器的值增加1
  Out.WriteLine(counter)
  '把新的计数器值写入文件
  Application.unlock
  '使用方法Application.unlock后,允许别的用户更改计数器的值
  Response.Write("您是第")
  Response.Write("<font color=red>")
  Response.Write(counter)
  '把计数器的值传送到浏览器,以红(red)色显示给用户
  Response.Write("</font>")
  Response.Write("位访问者")
  Out.Close
  '关闭文件
%>

  (二)与页面分离的计数器
  实际应用中,主页面与计数器程序是分离的,既只要在需要计数的页面中加入一句引用代码就可以实现页面计数。我们在网上经常申请使用的免费计数器就是这样,不过它们一般是CGI做的。这里,我们只要稍微修改一下前面我们用ASP做的简单计数器,然后在页面加入一句JavaScript语句引用它,就实现了与页面分离的计数器功能。这样,无论是作为主页面的计数器还是为某个特定页面的计数,都很方便了。显然,你需要简单更改一下存放计数器值的文件名和计数器asp源代码文件名就可以实现多个计数器。
  与页面分离的计数器txtcounter.asp代码:
<%
  CountFile=Server.MapPath("txtcounter.txt")
  Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
  Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE)
  counter=Out.ReadLine
  Out.Close
  SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
  Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE)
  Application.lock
  counter= counter + 1
  Out.WriteLine(counter)
  Application.unlock
  Response.Write"document.write("&counter&")"
  '为了在页面正确显示计数器的值,调用VBScript函数Document.write
  Out.Close
  %>
  在要计数的页面加入如下的代码:
  <p>
  您是第
  <font color=red>
  <script language="JavaScript" src="http://202.101.209.75/asptemp/counter/txtcounter.asp";>
  //引用时注意ASP计数器所在的服务器及目录路径。
  </script>
  </font>
  位来客
  </p>
 (三)与页面分离的图象计数器
  人们的追求是永无止境的,也许你需要一个更有个性的图形数字计数器,而不是简单的文本数字计数器。没问题,现在我们就来看看用ASP是怎样来实现图形计数器功能的。要实现图形计数器,关键点在于如何实现把计数器文件中的数据值转变为对应的图象表示。因为十进制数有0,1,2,3,4,5,6,7,8,9共十个不同的数数字,我们需要有十个对应的图象,且图象的文件名字要与显示的数字对应起来,比如0对应的数字图象的文件名字就是0.gif,1对应的就是1.gif,...(图象自己可以用Photoshop等工具制作,或者从网络上下载)。这里我们要用到VBScript函数Len(string | varname)、Mid(string,start[,length])。由Len(counter)可得到计数器值的位数,由Mid(counter,i,1)可以得到计数器值的第i位上的数字,我们可利用这个值来调用相应的数字图象。用For循环语句,我们不难得出计数器值各个位上的数字并转化成对应的数字图象,这样,我们就能实现文本数值到图象数字的转变。下面就是一个用ASP编写的图象计数器实例,因为大部分代码前面都分析过,所以代码中只注释了部分语句。
  与页面分离的图象计数器imgcounter.asp代码:
<% @language="VBScript"%>
  <%
  dim images(20)
  '定义一数组,用来存放显示每一位数字图象的语句
  CountFile=Server.MapPath("imgcounter.txt")
  Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
  Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE)
  counter=Out.ReadLine
  Out.Close
  SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
  Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE)
  Application.lock
  counter= counter + 1
  Out.WriteLine(counter)
  Application.unlock
  countlen=len(counter)
  '得到计数器值的位数
  for i=1 to countlen
  images(i)="<img src="&"http://202.101.209.75/asptemp/counter/images/";&"/" & mid(counter,i,1) & ".gif></img>"
  '由循环语句得到各个位上数值对应图象的显示代码(html),并把它存在数组中
  '具体使用时请注意图象的实际服务器及目录路径
  response.write"document.write('"&images(i)&"');"
  '调用函数Document.write输出显示数字图象的html代码
  next
  Out.Close
  %>
  在要计数的页面加入如下的代码:
  <p>
  您是第
  <script language="JavaScript" src="http://202.101.209.75/asptemp/counter/imgcounter.asp";>
  //引用时注意ASP计数器所在的服务器及目录路径。
  </script>
  位来客
  </p>

  附注:以上asp计数器均在Windows NT Server 4.0(中文) / IIS3.0 下测试通过。以下任何一种环境都可执行ASP:
  一、Windows NT Server 4.0 / IIS3.0以上
  二、Windows NT WorkStation 4.0 / Microsoft Peer Web Service3.0以上
  三、Windows 95/98 / Microsoft Personal Web Server 1.0a以上

Verilog HDL计数器设计(作业1)

Verilog HDL计数器设计(作业1)目录:Verilog HDL计数器设计作业1 设计内容 信号定义 RTL设计图 Quartus RTL电路图 计数器波形仿真图 计数器代码 设计内容 信号定义...
  • gyh3313
  • gyh3313
  • 2016年11月20日 22:24
  • 2219

利用触发器设计计数器

概述前面的课程中,介绍了基本触发器的功能特性,对触发器的内部电路进行了分析;然后还对时序电路分析给出了基本思路,即抓住三个核心方程:输出方程、激励方程、次态方程。学习组合电路和基本触发器的目的是为了设...
  • iosJohnson
  • iosJohnson
  • 2016年11月15日 13:25
  • 1443

十进制计数器的设计

十进制计数器的设计 总结:虽然在功能上完全实现了课题的要求,即实现了十进制计数器的设计的全部要求,但是相应的不足之处还应该考虑到。虽然是细节问题,但往往可以决定成败,试着理解程序。...
  • a1260157543
  • a1260157543
  • 2015年10月20日 18:50
  • 1876

十进制计数器的设计

十进制计数器的设计 文件名必须与VHDL文件中的设计实体名保持一致。 总结:这次课程设计虽然在功能上完全实现了课题的要求,即实现了数据比较器的全部要求,但是相应的不足之处还应该考虑到。虽然是细节问题,...
  • a1260157543
  • a1260157543
  • 2015年10月19日 22:04
  • 1072

[转]微架构设计:微博计数器的设计

作者:@cydu 来源: http://qing.weibo.com/1639780001/61bd0ea133002460.html http://qing.weibo.com/163978...
  • yangyu112654374
  • yangyu112654374
  • 2015年07月16日 09:16
  • 778

虚拟项目——计数器的verilog实现

在各种条件允许的情况下控制一个寄存器进行向上或向下的计数。当达到门限值的时候进入报警系统,产生一个信号输出持续八个单位并清零寄存器。...
  • qq_27712865
  • qq_27712865
  • 2015年10月27日 17:57
  • 1646

MAX+plus II的使用方法:以一个模24的计数器的设计为例

夏季学期马上来了,先恶补一下电路设计软件的使用。下面以一个模24的计数器为例子。 MAX+plus II提供了多种设计方法,有图形编辑、文本编辑、符号编辑等。图形设计是我们现阶段学习最常用的。 具...
  • SHU15121856
  • SHU15121856
  • 2017年06月18日 13:12
  • 1254

定时器/计数器设计实验

要求:了解定时器的各种工作方式, 掌握定时器/计数器的使用和编程方法  实验题目:采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数。按下开关10次,计算按键的平均时间,并通过数码管显示...
  • zhihang1103
  • zhihang1103
  • 2013年12月12日 12:38
  • 710

FPGA作业1:利用74161设计20进制计数器

1.首先,建立工程,新建BDF文件,在BDF文件中画出电路图,如图所示: 2.由于输入输出数目较少,PIN管脚设置采用手动输入的方法,设置后如图所示: 然后点击start compil...
  • weixin_40376722
  • weixin_40376722
  • 2017年10月18日 22:11
  • 554

单片机设计的计数器(秒表)

采用51单片机设计一个计时器前期准备 一、所执行的功能     1、可以计时; 2、可以存储时间; 3、可以查看存储的时间; 二、器材 1、51单片机(STC89C52RC)及单片机最小系...
  • LLX123654
  • LLX123654
  • 2015年02月03日 21:49
  • 523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP计数器设计详解
举报原因:
原因补充:

(最多只允许输入30个字)