ASP伺服器組件的編程

來源:互聯網
上載者:User
編程|伺服器 重慶出版社電腦中心 陳剛
1.什麼是ASP伺服器組件

ASP(Active Server Page)是當今開發互動式Web頁面、Web資料庫應用最強大的技術。在其中可以混用HTML、DHTML、
ActiveX、VBScript或JavaScript。當這些技術都無法奏效時(例如進行高密度的數學運算、封裝特定的資料庫處理邏輯
等),可以使用伺服器組件(Server SideComponent)進一步擴充ASP的能力。
Server SideComponent實際上是運行在伺服器上的一個DLL,它可以完成常規DLL所能勝任的任何任務。不同之處是:它由
ASP頁面調用、並以Web頁面為互動對象,讀入使用者的輸入(Web頁面上各輸入欄位的值),處理後返回結果到Web頁面。這些
互動當然都要通過Web伺服器作為中介。可以用VB、VFP、VC++、C++Builder、Delphi等任意支援COM技術的語言編寫。由於
它可以利用伺服器的任何資源,其功能僅受限於你的想象力。
目前支援ASP的Web伺服器有IIS(Internet Information Server,WinNT Server4.0內建)和PWS(Personel Web Server,
用於Win95環境)。並要求安裝VisualInterDev中的Server Components:FrontPage Server Extensions、 Active
ServerPages和Client Components:Visual InterDevClient。可以把這些都安裝在同一台機器上,這樣可以在單機上方便
地編程、調試。
下面用VB5.0開發一個Server Side Component(一個ActiveXDLL),以實現Web頁面上的隨機圖形顯示,相信它會為你的站
點增色不少。

2. Web頁面上的隨機圖形顯示

一個漂亮的圖形可以使Web頁面更具吸引力,使人流連忘返。但一旦我們的Web頁面設 計完成,這個圖形也就確定下來。換
言之,除非我們重新修改HTML代碼,則每次開啟這個頁面,看到的都是同樣一個圖形。那麼能否讓使用者在每次進入我們的
網站時,都能看到不同的畫面呢?例如:每次這個Web頁面被訪問時,從一個包含若干圖形檔案的檔案夾中隨機選取一個,
在該頁面上顯示,使訪問該頁面的使用者每次都會得到不同的視覺享受。
這個要求用HTML、DHTML或VBScript語言無法做到,這裡我們用一個ASP伺服器組件實現之。

3.用VB5.0建立ActiveX DLL

首先在VB5.0中建立一個Project ,類型為ActiveX DLL :設定屬性如下:
Project Name:RandShowFile,
ClassModule Name:Randimage
其中類Randimage的代碼如下:
Option Explicit
Private mvarFilePath As String 'local copy
Public Property Let FilePath(ByVal vData As String)
'設定檔案路徑
If Right(vData, 1) = "/" Or Right(vData, 1) = "\" Then
mvarFilePath = vData
Else
If InStr(vData, "/") <> 0 Then
mvarFilePath = vData & "/"
Else
mvarFilePath = vData & "\"
End If
End If
End Property

Public Property Get FilePath() As String
'取得檔案路徑
FilePath = mvarFilePath
End Property

Private Sub Class_Initialize()
mvarFilePath = ""
End Sub

Public Function Show(Optional ByVal Extension As String) As String
'從指定檔案路徑中隨機選取並返回一個檔案名稱
Dim MyPath As String
Dim MyName As String
Dim List() As String
Dim FileCount As Integer
Dim n As Integer
On Error GoTo badnews
If Len(mvarFilePath) <= 1 Then
Show = "NoFilePathSpecified "
Erase List
Exit Function
Else
If IsMissing(Extension) Then
Extension = "*.*" '如果副檔名沒有指定,則預設為*.*
End If
MyPath = mvarFilePath & Trim(Extension) ' Set the path.
MyName = Dir(MyPath, vbNormal) ' Retrieve the first entry.
End If
FileCount = 0
ReDim List(10)
Do While MyName <> ""
List(FileCount) = MyName
FileCount = FileCount + 1
If FileCount >= UBound(List) Then
n = UBound(List) + 10
ReDim Preserve List(n)
End If
MyName = Dir()
Loop
If FileCount >= 1 Then
Randomize ' 初始化rand()函數,否則每次將產生相同的數字
n = Int(FileCount * Rnd()) ' 產生在1 和list1.listcount 之間的隨機數.
Show = List(n)
Erase List
Exit Function
Else
badnews:
Show = "NoFileFound"
Erase List
End If
End Function
在編譯之前,注意要在此Project中加入一個Module並在其中加入代碼
Sub Main()
End Sub
然後在菜單Project | RandShowFile Projectise?引出的對話方塊中,設Startup
Object為Sub Main。最後在菜單File中,選Make Randimage.dll。到此,我們的SSC
就開發完成,並且它已自動註冊在機器上。

4.在ASP頁面中使用伺服器組件

下面將建立一個ASP頁面以測試我們的Server Side Component。
啟動Visual InterDev,開始一個新的工程:New Projects,然後選取Web Project Wizard,在Project Name中輸入
TestRandimage,點擊OK後,Visual InterDev產生一些輔助檔案,為新的工程做好準備,然後自動開啟該工程。為了方便
測試,拷貝幾個圖形檔案到Images檔案夾中,檔案類型可以是瀏覽器支援的任意圖形檔案,如BMP、TIF、GIF等 。
在該工程中建立ASP頁面,點擊菜單File | New ,在New 對話方塊中選Files | Active Server Page ,並指定其名字:
Randimage.asp。Visual InterDev將會為我們產生一個空的架構,在其中用手工加入代碼。完成後的代碼如下

<%@ LANGUAGE="VBSCRIPT" %>
<html><head>
</head>
<body>
<h5>測試randimage 組件,隨機顯示一個圖形檔案<h5>圖形檔案路徑:
<%=server.mappath("images")%><br>
<%set
ox=server.createobject("randshowfile.randimage")'執行個體化組件ox.filepath=serve
r.mappath("images")
%>
<img src="<%=ox.filepath&ox.show%>">
<%set ox=nothing '使用後釋放組件%>
</body>
</html>
由於Web頁面使用的路徑(URL)都是虛擬路徑(Virtual Directory),必須使用server.mappath()將其轉換到實體路徑
(Physical Directory)。例如,此處的圖形檔案夾images的虛擬路徑是://Servername/TestRand image/Images(其中
Servername是你的Web伺服器的名字),其對應的實體路徑是C:\Inetpub\wwwroot\TestRandimage\Images 。如果不把
Images映射到實體路徑則組件找不到該檔案夾,無法正常工作。 程式碼完成後測試之,注意到在每次打



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。