實(shí)例學(xué)習(xí)如何在ASP中調(diào)用DLL
動(dòng)態(tài)聯(lián)接庫(kù)(DLL)是加快應(yīng)用程序關(guān)鍵部分的執(zhí)行速度的重要方法,但有一點(diǎn)恐怕大部分人都不知道,那就是在ASP文件也能通過(guò)調(diào)用DLL來(lái)加快服務(wù)器的執(zhí)行速度,下面我簡(jiǎn)單的介紹一下在ASP文件調(diào)用DLL的步驟。
首先,必須得有DLL文件,本例是通過(guò)VB5.0創(chuàng)建ActiveX DLL文件,這個(gè)文件模擬了一個(gè)擲色子的過(guò)程。
在VB5.0的環(huán)境下,新建一個(gè)工程,并雙擊新建工程窗口中ActiveX DLL圖標(biāo),VB將自動(dòng)為項(xiàng)目添加一個(gè)類模塊,并將該項(xiàng)目類型設(shè)置為ActiveX DLL。在屬性窗口將類模塊的名稱屬性改為clsDice。從工程菜單中,選擇工程屬性,將工程名稱改為MyDLL。從文件菜單中,選擇保存clsDice,將類模塊保存為myDice.cls。添加以下代碼:
Option Explicit
Private Max, Point As Integer
Public Property Get Result() As Integer
Result = Point
End Property
Public Property Get Maxpoint() As Integer
Maxpoint = Max
End Property
Public Property Let Maxpoint(num As Integer)
Max = num
End Property
Public Sub Throw()
Randomize
Point = Int(Rnd * Max) + 1
End Sub
Private Sub Class_Initialize()
Max = 6
End Sub
這個(gè)類模塊定義了clsDice對(duì)象的兩個(gè)屬性和一個(gè)方法,這些屬性和方法模擬了擲色子的過(guò)程。其中Maxpoint屬性表示色子的面數(shù),加入Property Let語(yǔ)句將使客戶能修改色子的面數(shù);Result屬性表示最后擲出色子的點(diǎn)數(shù);Throw方法代表擲色子的動(dòng)作;Private Sub Class_Initialize語(yǔ)句將色子的面數(shù)缺省的設(shè)置為6面。
從文件菜單中,選擇生成MYDLL.DLL并將它保存到適當(dāng)?shù)牡胤?。至此,我們就?chuàng)建了一個(gè)自己的DLL文件。
第二步要做的就是要在ASP文件中引用類clsDice。
ASP(活動(dòng)服務(wù)器頁(yè)面Active Server Pages)的所有代碼都是在服務(wù)器上運(yùn)行的,客戶只能查看以HTML形式傳回的結(jié)果。它使用“<%”和“%>”標(biāo)記來(lái)標(biāo)識(shí)腳本代碼,并不傳回客戶端,在代碼外部,使用HTML標(biāo)記來(lái)標(biāo)識(shí)內(nèi)容。在下面Dice.asp的代碼中使用了CreateObject函數(shù)創(chuàng)建了一個(gè)clsDice對(duì)象實(shí)例,該對(duì)象來(lái)自于上面創(chuàng)建的ActiveX.DLL--MYDLL.DLL文件,下面的例子使用了VBScript腳本語(yǔ)言。
<!--METADATA TYPE="typelib" FILE="Path/mydll.dll" -->
'裝載 METADATA 標(biāo)簽中指定的類型庫(kù)。 Path是mydll.dll在機(jī)器上存放的路徑
<html>
<head><title>在ASP文件使用DLL</title></head>
<body>
<%
On Error Resume Next ‘當(dāng)程序出現(xiàn)意外錯(cuò)誤時(shí)能繼續(xù)執(zhí)行
If Request.Form("T1")="" then
Session("point") = 6
Else
Session("point")=Request.Form("T1")
End If
'用Session("point")來(lái)存放色子的面數(shù)
Set dice1=Server.Createobject("MyDLL.clsDice")
'使用set語(yǔ)句創(chuàng)建dice1對(duì)象,其中MyDLL是上面創(chuàng)建dll文件時(shí)的工程名稱(注意:不是文件的名稱),clsDice為類模塊的名稱。至此我們就可以用Maxpoint,Result和Throw屬性(方法)來(lái)對(duì)dice1對(duì)象進(jìn)行操作。
If Request.ServerVariables("Request_Method")="POST" then
dice1.Maxpoint = Session("point") ‘設(shè)定色子的面數(shù)
dice1.Throw '擲色子
%>
<form method="POST" action="dice.asp">
<p>當(dāng)色子的面數(shù)為<input type="text" name="T1" size="5" value=<% = session("point") %>>時(shí)</p>
<p><input type="submit" value="擲色子" name="B1"></p>
</form>
<p>結(jié)果為:<% = dice1.Result %>點(diǎn) </p> ‘返回結(jié)果
<%
Else
dice1.Maxpoint = Session("point")
%>
<form method="POST" action="dice.asp">
<p>當(dāng)色子的面數(shù)為<input type="text" name="T1" size="5" value=<% = session("point") %>>時(shí)</p>
<p><input type="submit" value="擲色子" name="B1"></p>
</form>
<%
End If
%>
</body>
在瀏覽器中瀏覽http://localhoat/dice.asp,結(jié)果如附圖。注意:只有在WINDOWS NT+IIS3.0以上或WINDOWS9X+PWB的環(huán)境下才能正確瀏覽。
以上代碼在WINDOWS NT4.0+SP3+IIS4.0+IE5.0+VB5.0上編譯運(yùn)行通過(guò),但還有不少的缺陷,但我的本意是向大家介紹如何在ASP中調(diào)用DLL,所以我沒(méi)有去完善它。如果哪位高手有更好的方法或者不同的見(jiàn)解,請(qǐng)千萬(wàn)mail我,我的信箱:jimi_chen@yeah.net
相關(guān)文章
ASP生成隨機(jī)字符串(數(shù)字+大小寫(xiě)字母)的代碼
ASP生成隨機(jī)字符串(數(shù)字+大小寫(xiě)字母)的代碼...2007-10-10使用Flash DownLoad編寫(xiě)采集器(之突破防盜連下載音樂(lè)文件)
使用Flash DownLoad編寫(xiě)采集器(之突破防盜連下載音樂(lè)文件)...2007-02-02動(dòng)網(wǎng)論壇驗(yàn)證碼改進(jìn) 加法驗(yàn)證碼(ASPJpeg版)
很多站長(zhǎng)都為論壇里太多的垃圾廣告抓狂,本程序就是為了對(duì)付論壇垃圾廣告群發(fā)器的。 將驗(yàn)證碼改為加法運(yùn)算,比如驗(yàn)證碼顯示“25+64等于?”,那么輸入“91”就能通過(guò)驗(yàn)證。2008-11-11ASP常見(jiàn)錯(cuò)誤詳解及解決方案小結(jié) 推薦
ASP是非常簡(jiǎn)單的,以至于許多的開(kāi)發(fā)者不會(huì)去思考錯(cuò)誤處理。錯(cuò)誤處理能夠讓你的應(yīng)用程序更加合理。我看到過(guò)很多個(gè)用ASP編寫(xiě)的商業(yè)網(wǎng)站,大多數(shù)都忽略了錯(cuò)誤處理。 錯(cuò)誤的類型。2011-01-01談動(dòng)態(tài)多行多列,循環(huán)行和列,輸出M行N列的ASP代碼
2008-03-03ASP動(dòng)態(tài)生成的javascript表單驗(yàn)證代碼
ASP動(dòng)態(tài)生成的javascript表單驗(yàn)證代碼...2006-11-11asp教程中g(shù)et post提交表單有5點(diǎn)區(qū)別
asp教程中g(shù)et post提交表單有5點(diǎn)區(qū)別分別以HTTP請(qǐng)求,表單兩者分別介紹,需要的朋友可以了解下2012-12-12ASP:ActiveX不能創(chuàng)建Scripting.FileSystemObject對(duì)象解決辦法
關(guān)于ActiveX不能創(chuàng)建Scripting.FileSystemObject對(duì)象的類似問(wèn)題,大體上解決辦法都是類似的,主要是思想要清晰:首先考慮組件注冊(cè)問(wèn)題,其次是組件權(quán)限問(wèn)題,如果服務(wù)器配置沒(méi)有問(wèn)題的話,那就仔細(xì)檢查一下你的程序源碼吧2011-11-11