編程|進階 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,用來讀