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