ASP編程入門進階(十三):Ad Content Rotator

來源:互聯網
上載者:User

ASP的強大不僅僅局限於接受和顯示的互動,更多的是運用ActiveX 組件進行更強大的Web應用。

那究竟ActiveX組件為何物?它又是如何運作的呢?其實ActiveX Server Components(ActiveX 伺服器組件)是一個存在於 WEB 伺服器上的檔案,該檔案包含執行某項或一組任務的代碼,組件可以執行公用任務,這樣就不必自己去建立執行這些任務的代碼。很形象的一句話:運用組件直接採用別人經典的功能強大的程式。只不過這程式已被封裝了的。

那具體ActiveX組件是如何產生、如何得來的呢?一般由下面三個路徑獲得:
1,安裝完IIS伺服器以後,內建的一些內建群組件,如Database Access資料庫連接組件。
2,從第三方開發人員處獲得可選的組件,或者免費或者收費的,如一些上傳組件(當然現在有無組件上傳)。
3,如果你是一位Web程式開發人員,可以使用Visual Basic 、Java 、Visual C++ 、COBOL等程式設計語言來編寫你所需要的ActiveX Server Component。這也就是所謂的ASP進行COM(Component Object Model)、COM+開發了。

當然無論是第三方還是自行開發,在使用之前都必須要進行系統的註冊。不過這些都是後話。我們現在需要的,是儘快先把ASP內建的一些組件搞懂吧。

不過在使用內建群組件之前,先用一個程式檢測一下自己機器中的組件支援情況。
引用一段網上流行的“阿江ASP探針”,將下列代碼儲存為asp檔案進行調試查看。

1,objcheck.asp

<%Option Explicit %><br /><%<br />Dim filename<br />filename=Request.ServerVariables("SCRIPT_NAME")</p><p>Dim ObjTotest(14,4)<br />ObjTotest(0,0) = "MSWC.AdRotator"<br />ObjTotest(0,1) = "廣告輪顯組件"<br />ObjTotest(1,0) = "MSWC.ContentRotator"<br />ObjTotest(1,1) = "內容輪顯組件"<br />ObjTotest(2,0) = "MSWC.BrowserType"<br />ObjTotest(2,1) = "瀏覽器類型顯示組件"<br />ObjTotest(3,0) = "MSWC.NextLink"<br />ObjTotest(4,0) = "MSWC.Tools"<br />ObjTotest(5,0) = "MSWC.Status"<br />ObjTotest(6,0) = "MSWC.Counters"<br />ObjTotest(7,0) = "MSWC.IISLog"<br />ObjTotest(8,0) = "MSWC.PermissionChecker"<br />ObjTotest(9,0) = "Microsoft.XMLDom"<br />ObjTotest(10,0) = "IISSample.ContentRotator"<br />ObjTotest(11,0) = "IISSample.PageCounter"<br />ObjTotest(12,0) = "Scripting.FileSystemObject"<br />ObjTotest(13,0) = "adodb.connection"</p><p>public IsObj,VerObj,TestObj</p><p>dim i<br />for i=0 to 13<br /> on error resume next<br /> IsObj=false<br /> VerObj=""<br /> TestObj=""<br /> set TestObj=server.CreateObject(ObjTotest(i,0))<br /> If IsObject(TestObj) then<br /> IsObj = True<br /> VerObj = TestObj.version<br /> if VerObj="" or isnull(VerObj) then VerObj=TestObj.about<br /> end if<br /> ObjTotest(i,2)=IsObj<br /> ObjTotest(i,3)=VerObj<br />next</p><p>sub ObjTest(strObj)<br /> on error resume next<br /> IsObj=false<br /> VerObj=""<br /> TestObj=""<br /> set TestObj=server.CreateObject (strObj)<br /> If IsObject(TestObj) then<br /> IsObj = True<br /> VerObj = TestObj.version<br /> if VerObj="" or isnull(VerObj) then VerObj=TestObj.about<br /> end if<br />End sub<br />%><br /><title>Object Check</title><br /><table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#cccccc" width=80%><br /> <tr align=center><td width=40%>組 件 名 稱</td><td width=40%>相 關 信 息</td></tr><br /> <%For i=0 to 13%><br /> <tr><br /> <td> <%=ObjTotest(i,0) & " <font color=#888888>" & ObjTotest(i,1)%></font></td><br /> <td><br /> <%<br /> If Not ObjTotest(i,2) Then<br /> Response.Write "<font color=red>不支援</font>"<br /> Else<br /> Response.Write "支援," & left(ObjTotest(i,3),22)<br /> End If%></td><br /> </tr><br /> <%next%><br /></table></p><p><FORM action=<%=filename%> method=post><br /><input type=text name="classname" size=40><br /><INPUT type=submit value=" 確 定 "><br /></FORM></p><p><%<br />Dim strClass<br />strClass = Trim(Request.Form("classname"))<br />If strClass <> "" then<br />Response.Write "<br>您指定的組件的檢查結果:"<br /> Dim Verobj1<br /> ObjTest(strClass)<br /> If Not IsObj then<br /> Response.Write "<br><font color=red>很遺憾,該伺服器不支援 " & strclass & " 組件!</font>"<br /> Else<br /> if VerObj="" or isnull(VerObj) then<br /> Verobj1="無法取得該組件版本"<br /> Else<br /> Verobj1="該組件版本是:" & VerObj<br /> End If<br /> Response.Write "<br><font class=fonts>恭喜!該伺服器支援 " & strclass & " 組件。" & verobj1 & "</font>"<br /> End If<br />End if<br />%><br />
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

如果你可以運行該ASP檔案,也就是說你擁有IIS的WEB服務了。既然有IIS,不出意外,我們今天要學的組件AdRotator相信應該也是支援的。
P.S.一般微軟內建的大多是MSWC開頭,我也一般戲稱為Microsoft WC

一、AdRotator組件
該組件通常又稱廣告輪顯組件,其功能相當於在網站上建立了一個,符合廣告領域標準功能的廣告系統。它具有:每次訪問ASP頁面時,在頁面上顯示不同的廣告內容;跟蹤特定廣告顯示次數的能力以及跟蹤用戶端在廣告上單擊次數的能力。

AD Rotator 組件的工作原理是通過讀取 AD Rotator 計劃檔案來完成的,該檔案包括與要顯示圖象檔案的地點有關的資訊,以及每個圖象的不同屬性。下面就是一個標準的 AD Rotator 計劃檔案。

1,類型為txt文本 ,命名為myadrot.txt

redirect gourl.asp
width 88
height 31
border 1
*
http://www.cnbruce.com/images/logo.gif
http://www.cnbruce.com/
CN-Bruce
10

http://www.it365cn.com/images/logo.gif
http://www.it365cn.com
It365cn
10

http://www.blueidea.com/images/logo.gif
http://www.blueidea.com
Blue!dea
10

代碼的前四行包含了廣告的全域設定:

1,Redirect 指出廣告將成為其熱串連的URL。但其並非直接跳轉的URL,它包含了兩個參數的查詢字串:特定廣告首頁的URL和圖象檔案的URL。這些值從而可在gourl.asp檔案中進行提取,並且與此同時gourl.asp還可以進行其他的處理工作,比如跟蹤單擊廣告的次數、跳轉到接受的的廣告首頁等。
2,width、height、border不用說一看就知道是串連圖片的寬、高以及邊框線大小。

“*”號表示了分隔字元,以及“*”號下面的每四行為一個單位進行描述每個廣告的細節。其中分別代表:

1,每個廣告的描述包含圖象檔案的URL
2,廣告對象的首頁URL(如果廣告客戶沒有首頁,則該行為一個連字號“-”,指出該廣告沒有連結)
3,圖象的替代文字
4,及指定該頁與其他頁交替顯示頻率的數值。

該檔案是使用者自建立的檔案。它通常用來解析由AdRotator對象發送的查詢字串的指令碼,並將使用者重新導向到與使用者所點擊的廣告所相關的URL。那具體怎麼應用該定向檔案呢?

2、adrotator.asp
該檔案最主要的是串連myadrot.txt檔案,並且執行myadrot.txt檔案中的資訊內容。很簡單,兩行代碼。

<%set myad=Server.CreateObject("MSWC.adrotator")%>
<%=myad.getadvertisement("myadrot.txt")%>

<%set myad=Server.CreateObject("MSWC.adrotator")%>”學過Server對象,相信還記得該對象強大的一個方法,那就是CreateObject。他可用於建立已經註冊到伺服器上的ActiveX組件執行個體。那這就表示引用組件MSWC.adrotator了。

<%=myad.getadvertisement("myadrot.txt")%>”Ad Rotator組件支援的唯一方法也就是GetAdvertisement了,它只有一個參數:AdRotator計劃檔案的名稱。注意指向檔案的路徑是當前虛擬目錄的相對路徑,實體路徑是不允許的。也就是說當前的adrotator.asp和myadrot.txt是在同一目錄下了。

然後進行執行該ASP檔案,多次重新整理,會發現每次的廣告確實是在輪顯著的。這時再注意點擊圖片的超級串連地址。比如:

gourl.asp?url=http://www.cnbruce.com/&image=http://www.cnbruce.com/images/logo.gif

很明顯我們還需要建立gourl.asp,並且將url參數的值進行提取,再接著跳轉到該url地址上。

3、gourl.asp
該頁主要功能:提取url參數值,跳轉到廣告首頁。

<%whaturl=request.querystring("url")%>
<%response.redirect whaturl%>

功能很簡單就完成。當然,剛才也說了,這個頁還可以做其它一些事件:跟蹤用戶端在廣告上單擊次數,比如將接受過來的相同的url地址進行記數的累加,就能顯示出該網站廣告的點擊次數,然後和相應廣告商拿取相應的費用什麼的……呵呵,在早期都要求需要實際點擊率的,現在好象不管,只要廣告掛那兒就行-_-!

不過,總的說來,這個組件的功能就是這樣。你有多個廣告商,並且是按比例單獨顯示,還需要計算實際點擊率的時候,用Ad Rotator組件是最好不過。那也就是說視情況而定了。

最後再說下,該組件的實現需要三個檔案:重新導向檔案、引用檔案、處理轉向檔案。

二、Content Rotator組件

正如Ad Rotator為一廣告輪顯,Content Rotator組件則為內容輪顯。
該組件就像一個簡化了的Ad Rotator組件,所以其工作原理亦為:通過讀取計劃檔案來完成的網頁內容的顯示。該計劃檔案也就是:內容調度檔案(Content Schedule File)。

1,類型為txt文本 ,命名為context.txt

%% 3 //後面是注釋
<font color=red>ASP編程入門進階</font>

%% 4 //下面顯示表格
<table><tr><td>www.cnbruce.com</td></tr></table>

%% 5
<A HREF="http://www.cnbruce.com">CN-Bruce</A>

該檔案的結構比Ad Rotator的調度檔案簡單,僅需提供要使用的各個文本字串的列表,由前面加兩個百分比符號(%%)的語句行說明。

為了設定每個條目的比率(決定它出現在返回頁面中的頻率),在雙百分比符號的後面添加了一個數字。如果其後跟雙斜杠(//)就表示為添加的注釋。

接著就是通過ASP頁面將這些資訊按規定完整顯示。

2、showcontext.asp

<%
Set MyContent = Server.CreateObject("MSWC.ContentRotator")
Content = MyContent.ChooseContent("context.txt")
Response.Write Content
%>

"Set MyContent = Server.CreateObject("MSWC.ContentRotator")",先建立和Content Rotator組件的聯絡。

"Content = MyContent.ChooseContent("context.txt")",表示採用Content Rotator組件的有個方法:ChooseContent,並且賦值給變數Content,到最後輸出顯示結果。

3、showall.asp
以上頁面內容個顯示是通過Content Rotator組件的ChooseContent方法實現的。此外,該組件還有一方法:GetAllContent。樣本如下:

<%
Set MyContent = Server.CreateObject("MSWC.ContentRotator")
Content = MyContent.GetAllContent("context.txt")
Response.Write Content
%>

運行結果會發現context.txt所有內容被解釋執行,並且分類之間會自動添加了<hr>水平線。

當然這個方法可以用在隨機圖片之類的特效頁面上。

相關文章

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.