☆李游
(宜賓市第一中學(xué)校,四川宜賓 644000)
ActiveX在ASP編程中的應(yīng)用及實現(xiàn)
☆李游
(宜賓市第一中學(xué)校,四川宜賓 644000)
ActiveX控件(作為COM對象)的最初設(shè)計目標(biāo)是成為一種可編程的軟件組件,這樣它可以裝配到Windows應(yīng)用程序中來快速形成容易設(shè)計的用戶界面。這些組件可以編譯成本地指令(native instruction)并可以自由調(diào)用目標(biāo)操作系統(tǒng)中的Win32 API。當(dāng)基于B/S網(wǎng)絡(luò)編程開始變得重要起來之后,微軟提供了<OBJECT>元素管理IE中網(wǎng)頁的這些控件。ActiveX控件可以借助IE快速下載到用戶機器上并執(zhí)行它們的本地代碼。不幸的是,IE沒有控制這些代碼執(zhí)行的方法,因此ActiveX控件可以在當(dāng)前登錄用戶的權(quán)限范圍內(nèi)毫無約束地調(diào)用Win32 API。所以,在IE在對使用有ActiveX控件的網(wǎng)頁有嚴(yán)格要求,并在安全上限制運行ActiveX控件。
學(xué)習(xí)過ASP的人一定會感受到ASP的強大功能,只用 Request、Response、Server、 Session 和 Application 5 內(nèi)置對象就能完成我們多數(shù)的WEB程序設(shè)計,而加上偵測用戶瀏覽器能力及用戶環(huán)境的Browser Capabilities組件、提供建立動態(tài)廣告板的Ad Rotator組件、協(xié)助管理、更新及建立網(wǎng)頁連接功能的Content Linking組件、具有建立或存取服務(wù)器端文字文件能力的File Access組件及具有建立網(wǎng)頁計數(shù)能力的Page Counter組件等基本組件已經(jīng)能滿足我們?nèi)粘EB設(shè)計的要求。但事實上ASP的功能還不止這樣,ASP功能之所以強大,主要是它的擴充性。只要是利用OLE或是ActiveX所開發(fā)出來的組件,ASP皆可以使用。話雖如此,如果要編寫一個ASP組件,雖然不是很困難,但由于國內(nèi)這方面的資料較少,對于大多數(shù)的人而言也是一個相當(dāng)大的考驗?;谶@個考慮,我們不如從互聯(lián)網(wǎng)中去找一些來用。
一些我們經(jīng)常使用到的:能在網(wǎng)頁中實現(xiàn)E-mail發(fā)送的w3 JMail組件;圖形控件Image Library,運用它你可以使用ASP程序可以動態(tài)的圖形;文件上傳組件LyfUpload等都是別人已經(jīng)編寫好的現(xiàn)成組件。在網(wǎng)上認(rèn)真找一下能找到許多的組件,而且這些組件都包含有使用說明,并有一個或多個使用例程,一般很容易上手,在這里我們就不再介紹了。
VBScript和JavaScript是我們進行WEB編程時經(jīng)常使用的兩種客戶端語言,里面本來有一個FileSystemObject能通過瀏覽器在服務(wù)器和客戶機上進行新建、刪除文件等操作,但出于安全方面的考慮,F(xiàn)ileSystemObjec里面涉及的對象、函數(shù)、方法等被視為ActiveX控件一般下是不能直接使用的。如訪問的網(wǎng)頁上如包含有這類操作的話會出現(xiàn)根據(jù)客戶瀏覽器安全設(shè)置的情況出現(xiàn)不同提示。
上面的WEB程序是在客戶機上C盤根目錄上建立一個testfile.txt當(dāng)我們運行這個程序時,會出現(xiàn)以下警告對話框(如圖1)。
圖1
但有些時候我們的解需要在客戶機上進行一些這方面的操作又該怎么解決呢?其實要解決這個問題也不難,只要在安全方面進行設(shè)置一下就行了!方法是:
(1) 打開瀏覽器->工具菜單->Internet選項進入Internet選項面板。
(2)點擊->安全->可信站點->站點->取消需要該區(qū)域中所有站點的服務(wù)器證書(https)選項,以便能支持我們普通的http協(xié)議->在將該Web站點添加到區(qū)域中輸入自己考試系統(tǒng)的網(wǎng)站(http://test.ybsyz.net)->最后點添加后返回到Internet選項面板完成可信站點的添加。
(3)點擊自定義級別進入設(shè)置->將ActiveX控件和插件下面的所有選項設(shè)置為啟用后點確定。
設(shè)置完成后,無論使用什么ActiveX都不會出現(xiàn)提示了,不過要注意,進行這個操作后對于 http:/test.ybsyz.net網(wǎng)站的安全防范為零,如果 http:/test.ybsyz.net愿意,可以刪除你電腦上的任意文件。
基于客戶端ActiveX控件的應(yīng)用是有很多的,比如:我們經(jīng)常在瀏覽器中看到的SWF文件原來是不能在IE觀看的,而要看這種文件就必須安裝Macromedia公司開發(fā)的Flash播放控件;而現(xiàn)在的許多語音聊天室也是使用ActiveX控件來實現(xiàn)語音的傳送,這類要安裝到客戶自己電腦上的ActiveX控件又應(yīng)該怎么寫呢?
曾經(jīng)我在開發(fā)一個考試系統(tǒng)時遇到一個問題:怎樣將網(wǎng)上指定文件下載到客戶機上。找了許多資料都沒有發(fā)現(xiàn)現(xiàn)成的控件和函數(shù)供我們使用,經(jīng)過大量的查詢資料,最后通過VB6企業(yè)版來完成的,在新建工程時注意要選擇ActiveX控件,在窗體中只使用到timer和Microsoft Internet Transfer Control 6.0兩個部件 (如圖2)。
現(xiàn)在將源程序呈上:
圖2
在程序編寫完成后,點擊運行,會運行一個網(wǎng)頁文件,注意查看這個網(wǎng)頁文件的源程序,里面有以下內(nèi)容:
這個網(wǎng)頁程序里面的classid是我們過一會兒做網(wǎng)頁時要使用到,將其保存起來。
最后在文件菜單中將其生成為OCX工程,取名為mydownfile.ocx,即完成了控件的編寫。
為了讓客戶端能使用到這個控件,我們要將它復(fù)制到我們的WEB目錄下,建立一個示例samp.htm文件來試一下!
最 后 在 任 意 一 臺 客 戶 瀏 覽 器 打 開 http://test.ybsyz.net/samp.htm就可以將文件下載了?,F(xiàn)在只要通過ASP控制samp.htm這個網(wǎng)頁的內(nèi)容就可以隨便下載文件到指定位置了。不過因為我們自己開發(fā)的ActiveX控件沒有經(jīng)過微軟的安全認(rèn)證,所以如果沒有把 http://test.ybsyz.net設(shè)置為可信站點,并設(shè)置好相關(guān)安全屬性,程序在運行里還是會出現(xiàn)提示,當(dāng)然要解決這個問題就是直接將訪問的這個站點設(shè)置為可信站點。
自己編寫用于服務(wù)器端的特定ActiveX控件一般是出于以下三方面的需要:一是需要的功能目前還不能通過ASP等程序來實現(xiàn),這時我們就要使用到ActiveX控件來輔助完成;二是我們要求程序的執(zhí)行效率很高,雖然ASP能完成這個任務(wù),但它畢竟是解釋型語言,執(zhí)行效率很低,這時我們就要使用到ActiveX控件來輔助完成;三是ASP文件是以文本形式進行保存的,別人很容易獲得源程序,而當(dāng)我們開發(fā)的程序包含有很大的商業(yè)秘密就希望對程序進行加密,而加密最好的方法就是將程序關(guān)鍵部分作為ActiveX控件進行封裝。
編寫服務(wù)端ActiveX控件和編寫客戶端的特定ActiveX控件的方法差不多,而介紹怎樣編寫服務(wù)器端ActiveX控件的文章和資料也較多,在這里由于篇幅原因就不再介紹了。需要的朋友可以在網(wǎng)上查找這方面的資料。
本文全面介紹了ActiveX在ASP編程中的應(yīng)用及實現(xiàn),并通過一個完整的開發(fā)實例介紹了怎樣編寫用于ASP的ActiveX控件。
[1]林金霖.ASP實務(wù)經(jīng)典.北京:中國鐵道出版社.
[2]William Martiner 著.Visual Baasic Programmer’s Guide to Web Development.北京:電子工業(yè)出版社.
[3]山風(fēng)工作室.實作ActiveX組件 for ASP.北京:中國鐵道出版社.
[4]Matt J.Crouc(美).怎樣用 ASP 和 COM 進行 Web 編程.北京:人民郵電出版社.
于翼楠]