首页 > 程序开发 > Web开发 > asp >

ASP 3.0高级编程(二十五)

2006-09-30

6.2.4 Counters组件        Counters组件能用于创建、存储、递增和检索每个计数器的值。不要把它和本章后面将要介绍的Page Counter组件混淆,Counters组件能用于支持任何种类数据的统计。  &n

6.2.4 Counters组件
Counters组件能用于创建、存储、递增和检索每个计数器的值。不要把它和本章后面将要介绍的Page Counter组件混淆,Counters组件能用于支持任何种类数据的统计。
一个计数器含有一个整数值,能通过Counters组件的方法进行运算。使用Set方法设置计数器的指定值,用Get方法检索计数器中的值,使用Increment方法使计数器的值加1,使用Remove方法删除一个计数器。所有的计数器的值存储在一个名为Counters.txt的文本文件中,可在Counters.dll组件所在的目录中找到该文件。
1. Counters组件的成员
Counters组件提供了用于维护每个计数器组件中数值的四个方法,如表6-4所示:
表6-4 Counters组件方法及说明
方 法
说 明

Get(counter_name)
返回指定计数器的当前值,如果此计数器先前没有创建,道德创建并设置成0,其返回值为0

Increment(counter_name)
增加指定计数器的当前值,如果此计数器先前没有创建,首先创建并设置为1

Remove(counter_name)
删除指定的计数器

Ser(counter_name,value)
把指定计数器的值设置成参数value提供的整数值,如果此计数器先前没有创建,先创建并设定为指定值

2. 使用Counters组件
由于Counters.txt文件仅有一个所有组件实例都能访问的拷贝。因此,应该只创建单个的Counters组件实例,并且使之对Web网站的所有页面都是可用的,实现这一点的常用方法是在缺省Web站点根目录下的global.asa文件中创建一个应用程序范围的实例。
采用下面程序:
<!-- declare instance of the ASP Counters component with application-level scope
-->
<OBJECT ID="objCounters" RUNAT="Server" SCOPE="Application"
PROGID="MSWC.Counters">
</OBJECT>
可以使用Counters组件对需要完成的任务创建一个新的计数器。在下面的程序中,给出了有三项选择的调查问题,并对每一种选择的回答次数进行了统计,当使用者提交包含三项选择的窗体后,将调入这个页面。假设选项通过点击SUBMIT按钮的cmdYes、cmdNo和cmdMaybe来选择,其对应值分别是“是”、“否”和“可能”。
<% in VBScript”
If Request.Form("cmdYes") = "Yes" Then objCounter.Increment("Response_Yes")
If Request.Form("cmdNo") = "No" Then objCounter.Increment("Response_No")
If Request.Form("cmdMaybe") = "Maybe" Then
objCounter.Increment("Response_Maybe")
%>
如果这是第一次收到一个指定的响应,程序将创建一个新的计数器并自动初始化为1。
计数器在使用范围上没有限制,因为Counters对象创建在文件global.asa中,这意味着在虚拟应用程序或Web网站中创建的任何一个页面中都是可用的,所以这个“调查计数器”可用在应用程序的任何页面上,记住单个的Counters对象能提供所需的许多独立计数器,不需要创建很多Counters对象实例。
在前面的Ad Rotator组件页面示例中,研究了如何使用Counters组件存储每个广告主的点击次数,也可以在页面中使用Counters组件的Get方法显示当前值。
Wrox Press: <B><% = objCounters.Get("wrox") %></B><BR>
Stonebroom: <B><% = objCounters.Get("stonebroom") %></B><BR>
Xtras: <B><% = objCounters.Get("xtras") %></B><BR>
ComponentSource: <B><% = objCounters.Get("compsrc") %></B><BR>
Four CDs: <B><% = objCounters.Get("fourcds") %></B><BR>
Lunar: <B><% = objCounters.Get("lunar") %></B><BR>
每次加载页面时,都自动更新计数器的当前值。然而页面也包含有一些控件能调用Counters组件的其他两个方法,即删除一个计数器(相当于将其设置为0)和将计数器设置成一个指定数值,如图6-6所示:

图6-6 Counters组件的使用演示
这些控件在一个<FORM>上,点击任何一个小的空白按钮时,此窗体便提交给同一个页面,方法与本章中的所有页面所用的几乎一样。下面的程序是为Remove方法创建控件的HTML代码。
<FORM ACTION="<% = Request.ServerVariables("SCRIPT_NAME") %>" METHOD="POST">

<INPUT TYPE="SUBMIT" NAME="cmdRemove" VALUE="&nbsp;&nbsp;&nbsp;">
&nbsp; Counter.Remove ("
<SELECT NAME="lstRemove" SIZE="1">
<OPTION VALUE="wrox">Wrox Press</OPTION>
<OPTION VALUE="stonebroom">Stonebroom</OPTION>
<OPTION VALUE="xtras">Xtras</OPTION>
<OPTION VALUE="compsrc">ComponentSource</OPTION>
<OPTION VALUE="fourcds">Four CDs</OPTION>
<OPTION VALUE="lunar">Lunar</OPTION>
</SELECT> ")<P>

</FORM>
当载入页面时,通过检查Request.Form集合查看点击的按钮,如果找到了某个按钮,将运行代码的相应部分。在点击Remove按钮的情况下,相应的代码是:
If Len(Request.Form("cmdRemove")) Then
strCounterName = Request.Form("lstRemove") get the counter name
objCounters.Remove strCounterName
Response.Write "Removed counter <B>" & strCounterName & "</B>.<P>"
End If
对于Set方法,情况类似,但不仅仅需要从文本框中读取新值,而且在调用Set方法之前,检查文本框中的值是否是有效值。
If Len(Request.Form("cmdSet")) Then
strCounterName = Request.Form("lstSet") get the counter name
strNewValue = Request.Form("txtSet") get the new value
If IsNumeric(strNewValue) Then if it can be converted to a number
intNewValue = CInt(strNewValue) … then convert it
objCounters.Set strCounterName, intNewValue
Response.Write "Set counter <B>" & strCounterName & _
"</B> to <B>" & strNewValue & "</B>.<P>"
Else
Response.Write "<B>" & strNewValue & "</B> is not a valid number.<P>"
End If
End If
使用页面中的按钮调用Counters对象的方法时,重新载入时会在页面顶端看到一段信息和计数器中的新值,如图6-7所示:

图6-7 调用Counters对象的方法重新载入页面

6.2.5 Browser Capabilities组件
创建各种Web网页时面临的问题之一是,不仅仅使用ASP技术创建动态网页,而且能够使用HTML元素和其他客户端技术,像Java Applets、ActiveX控件以及最近出现的HTML元素。需要意识到的是,一些访问者若使用了恰好不支持它们的浏览器,那么对于精心编制的网页,访问者看到的可能是文本、图像的杂乱组合,甚至更糟糕的还有相应工作的脚本程序代码。
这里不讨论应当如何设计支持各种不同浏览器的网页(如果想了解这方面更多的内容,可以查阅Alex Homer编写的,Wrox出版的《Professional ASP Techniques for Webmasters》一书,书号是ISN 1-861001-79-7)。然而,确实要引用某个页面时,ASP和IIS提供铁Browser Capabilities服务器组件可以用来检测浏览器所支持的相关特征。
用户请求来自
相关文章
最新文章
热点推荐