当前位置: 移动技术网 > IT编程>开发语言>.net > ASP 3.0高级编程(二十五)

ASP 3.0高级编程(二十五)

2019年01月22日  | 移动技术网IT编程  | 我要评论
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服务器组件可以用来检测浏览器所支持的相关特征。
       用户请求来自

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网