日期:2014-03-13  浏览次数:20840 次

6.2.10 Tools组件
Tools组件提供了一些有用的方法,可在页面中检查文件是否存在、处理一个HTML窗体、以及产生一个随机整数,还有用于Macintosh计算机的一些方法,还可以检查是否存在某个服务器插件以及检查用户是否是网站的拥有者。
1. Tools组件的成页
Tools组件提供了五个方法,其中两个依赖于操作系统,如表6-8所示:
表6-8 Tools组件的方法及说明
方 法
说 明

FileExists(relative_url)
如果relative_url指定的文件存在,返回值为True,否则为False。必须给出虚拟相对路径及文件名,并且文件必须存在于发布的Web网站目录中。

Random()
产生一个位于-32768~32767之间的随机整数。使用ABS函数(VBScript)或Math.abs(JScript)得到在0~32768之间的正整数。使用Mod运算符(VBScript)或%运算符(JScript)得到指定范围内的一个数值。例如:
intRand = (objTools.Random Mod 76) + 25
得到一个在25~100之间的整数。

ProcessForm(output_url,
template_url,[insertion_point])
通过template_url指定的文件处理一个HTML窗体,并且插入来自窗体中已提交给当前页面的数值。结果写进output_url指定的文件,如果指定了可选项insertion_point(字符串)参数的话,组件可在已存在的输出文件中找到这个字符串,并在该位置插入新的内容。如果insertion_point参数没有指定,任何已存在的output_url文件则被新的输出取代

Owner
仅适用于Macintosh机,如果当前用户帐户是Web网站的拥有者,返回值为True,否则返回值为False

PluginExists(plugin_name)
仅适用于Macintosh机,如果指定的服务器plugin_name安装在机器上,返回值为True,否则为False

2. 使用FileExists方法
在允许用户访问之前,可以使用FileExists方法检查某些文件是否存在于服务器中(注意这个方法和FileSystemObject.FileExists以同样的方式工作)。
下面的例子中,用户提供了网页的相对URL,如果用户想通过在名为txtURL的文本框中键入URL打开网页,在重新定向之前可以检查其是否存在。
<% // in Jscript:
var objTools = Server.CreateObject('MSWC.Tools');
var strURL = Request.Form('txtURL'); // collect the page URL they entered
if (objTools.FileExists(strURL)) // see if it exists
Server.Transfer(strURL) // if it does, transfer to it
Else // or if not display a message
Response.Write('Sorry, the page you requested does not exist');
%>
这里提供了一个示例页面(使用VBScript)来演示组件的三种方法(非Macintosh),可以从ASP Installable Components主菜单中运行,如图6-16所示:

图6-16 运行Tools组件的方法的页面
网页的第一部分允许输入一个文件的相对URL,并告诉用户该文件是否存在。示例提供的缺省值是查看网站的根目录中是否有global.asa文件。点击按钮时,说明该文件是否可找到的信息将放在页面的顶部,如图6-17所示:

图6-17 运行FileExists方法的结果
把页面的所有控件放在<FORM>中,提交回本页面,这已经成为一种规范。在页面的开始,查看点击了哪个按钮。如果是FileExists的按钮,就调用组件的FileExists方法并显示合适的信息。
'look for a command sent from the FORM section buttons
If Len(Request.Form("cmdExists")) Then
strFile = Request.Form("txtFile")
If objTools.FileExists(strFile) Then
Response.Write "The file '<B>" & strFile & "</B>' does exist.<P>"
Else
Response.Write "The file '" & strFile & "' <B>does not</B> exist.<P>"
End If
End If
3.使用Tools.Random方法
在ASP页面中,有时需要一个随机数来完成某些任务,例如,把用户重新定位到一个随机网页、选择颜色或显示每日提示。可以使用VBScript中的Rnd函数,但要把所得数值转变成指定范围内的整数。Tools组件的Random方法更易于使用,因为能够直接提供整数值。
Random方法的结果是一个在-32768~32767范围中的整数值,为了获得一个指定范围的整数,可以使用脚本语言中的Abs函数并对下一个最大的整数取模。例如为了用VBScript语言创建0~20的正整数,可以使用下列语句:
intRandom = Abs(objTools.Random) Mod 21
为了得到在50~100之间的数值,可以用:
intRandom = (Abs(objTools.Random) Mod 51) + 50
示例网页使用这项技术生成随机数时,首先需要检查由用户输入的数值,以保证这些数值既是有效正整数又有正确的相对关系。
If Len(Request.Form("cmdRandom")) Then
intMin = -1 'preset to illegal values and then
intMax = -1 'only set if a valid number is entered
strMin = Request.Form("txtMinimum")
strMax = Request.Form("txtMaximum")
If IsNumeric(strMin) Then intMin = CStr(strMin)
If IsNumeric(strMax) Then intMax = CStr(strMax)
If (intMin >= 0) And (intMax > intMin) Then
intRandom = (Abs(objTools.Random) Mod (intMax - intMin + 1)) + intMin
Response.Write "Your random value is: <B>" & intRandom & "</B><P>"
Else
Response.Write "<B>The numbers you entered are not valid.</B><P>"
End If
End If
当页面重新调入时,结果显示在网页的顶部,如图6-18所示:

图6-18 运行Random方法的结果
4.使用Tools.ProcessForm方法
Tools组件中最复杂的方法是ProcessForm,用来读