- Login
帳號:
密碼:
ASP MENU
線上教學
   ASP 教學
VB.NET 教學
JSP 教學
JAVA 教學
完整 ASP 教學
程式下載
   ASP 程式下載
提供 ASP 程式
程式量身訂做
   收費標準
填寫需求表
討論交流專區
   程式討論區
電腦資訊交流
工作機會
   社會人就職情報
汎亞人力銀行
大台中人力銀行
大高雄人力銀行
相關連結
   ASP 虛擬空間
ASP 相關網站
聯絡我們
   意見信箱
加入會員程式討論區線上購物回首頁
ASP 教學
ASP服務器組件的編程
ASP服務器組件的編程
重慶出版社電腦中心 陳剛
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映射到物理路徑則組件找不到該文件夾,無法正常工作。 代碼完成後測試之,注意到在每次打開或刷新該頁面時,會有一個不同的圖形顯示在上面。

5·結束語

使用SSC可以大大豐富Web應用的功能、提高編程效率;完成HTML或VBScript等不易完成的任務;封裝特定的商業邏輯等。Server Side Component(以及ActiveX)等組件的編程也發展成為一項有利可圖的事業。在Internet上可以找到很多有用的組件(免費的或不免費的),有興趣者可到www.15seconds.com、www.activeserverpages.com、www.serverobjects.com等站點上查看。如果你有一
個新穎有用的組件,也可以發表在這些站點上,說不定你可以因此得到一筆可觀的收入呢。




頂端
本網頁最佳瀏覽模式為:瀏覽器 IE4.0 以上    解析度: 800 x 600
Copyright © 2000-2019 COOLASP All Rights Reserved