瑞鲁手机APP下载网_专注推荐好用的手机APP和游戏APP

3.0高级编程(四十五) 3.0高级编程(二十一)

ASP 3.0高级编程(二十五)

查看人次:0摘自:瑞鲁下载网

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服务器组件可以用来检测浏览器所支持的相关特征。 用户请求来自服务器的页面时,浏览器传送的HTTP报头包含了正在使用的浏览器的细节。在HTTP-speak(它被称为用户代理字符串)中,定义了浏览器的名称、版本、操作系统及其兼容性。Browser Capabilities组件在自己的配置文件中查找这个字符串,并采用许多与浏览器特征等同的特性。因此,在网页运行的任何时候,Browser Capabilities组件能够提供支持或不支持某个特性的细节。 在ASP 3.0版本中,Browser Capabilities组件增加了一个新特性。在ASP页面中包含METADATA指令,指示组件从浏览器中取出一个cookie,并把其包含的任意值添加到当前的组件实例中作为新属性。这提供了一种方法,从浏览器收集更多的用户特定的信息,而不仅仅是通常从browscap.ini文件中得到的浏览器指定的信息。了解了现有的浏览器检测特性如何工作后,再回头介绍新的METADATA技术。 . 1. browscap.ini文件 Browser Capabilities组件使用一个基于服务器的browscap.ini文本文件,该文本文件必须和browscap.dll组件文件处于同一目录中。browscap.ini文件包含大多数关于以前和当前浏览器的信息,并且当浏览器的用户代理字符串与文件中的指定字符串都不匹配时,将使用browscap.ini文件中的缺省部分。所以添加关于浏览器的新信息或者更新现有的信息,只需编辑browscap.ini文件。 首先看一下browscap.ini文件的格式,该文件中的所有条目都是可选的。担包括缺省部分是非常重要的。如果使用的浏览器与browscap.ini文件中的任何一个都不匹配,并且没有指定缺省浏览器设置,那么所有的特性将设置成“UNKNOWN”。 下面是browscap.ini文件的格式: ; we can add comments anywhere, prefaced by a semicolon like this ; entry for a specific browser [HTTPUserAgentHeader] parent = browserDefinition property1 = value1 property2 = value 2 … [Default Browser capability Settings] defaultProperty1 = defaultValue1 defaultProperty2 = defaultValue2 … [HTTPUserAgentHeader]行定义了特定浏览器的起始段,并且Parent行指明了包含浏览器更多信息的另外一个定义。下面的各行定义了我们想通过Browser Capabilities组件可获得的属性以及对于该浏览器的相应值。如果浏览器没有列在所属段中,或者尽管列出了但没有列出所有的属性,将采用Default部分所列出的属性和相应的值。 特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系. 例如,这个文件包含以[IE5.0]开头的段,这个段包含有Internet Explorer 5.0的相应值,这里没有parent行,显示的(除了那些在Default部分定义的)仅是我们显示定义的属性。 [IE 5.0] browser=IE Version=5.0 majorver=5 minorver=0 frames=TRUE tables=TRUE cookies=TRUE backgroundsounds=TRUE vbscript=TRUE javascript=TRUE javaapplets=TRUE ActiveXcontrols=TRUE Win16=False beta=False AK=false SK=false AOL=false Update=False 此段描述不和任何一个浏览器相匹配,因为,HTTPUserAgentHeader行仅仅是[IE 5.0]。然而,如果把[IE 5.0]作为父代,可以对浏览器添加针对IE5的定义: [Mozilla/4.0 (compatible; MSIE 5.*; Windows 95*)] parent=IE 5.0 version=4.0 minorver=0 platform=Win95 这样我们把[IE 5.0]指定为浏览器的父代,则显式提供的属性将代替或增加给父代定义的相应的值,但这里也假定任何其他的属性值没有显式地列在其所属段中。 为了识别非常相似的浏览器版本,在HTTPUserAgentHeader行可以使用星号通配符,如: [Mozilla/4.0 (compatible; MSIE 5.*; Windows 95*)] 版权申明:本站文章均来自网络,本站所有转载文章言论不代表本站观点 将和下面的语句相匹配: [Mozilla/4.0 (compatible; MSIE 5.0; Windows95)] [Mozilla/4.0 (compatible; MSIE 5.5; Windows 95 AOL)] … 然而,只有在浏览器发送的用户代理字符串和不含“*”的HTTPUserAgentHeader不完全匹配的情况下,才采用通配符匹配。也只有当这种测试失败了,字符串才会企图和含通配符的HTTPUserAgentHeader相匹配,并且使用文件中所找到的确实匹配的第一个值。 最后,加上缺省浏览器段: [Default Browser Capability Settings]

 

版权申明:本站文章均来自网络,如有侵权,请联系028-86262244-215 ,我们收到后立即删除,谢谢! 特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。

 

版权申明:本站文章均来自网络,如有侵权,请联系028-86262244-215 ,我们收到后立即删除,谢谢! 特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。

相关文摘:ASP教程 windows
标题名称:《3.0高级编程(四十五) 3.0高级编程(二十一)》
本文网址:https://www.sdruilu.cn/news/tpart-30051.html