999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

網(wǎng)站控件技術(shù)的剖析

2011-12-31 00:00:00陳銳
科教導(dǎo)刊 2011年24期

摘要控件能實現(xiàn)各種各樣的功能,文章圍繞解決網(wǎng)站控件技術(shù)主要存在的兩個問題:(1)如何讓控件與服務(wù)器端腳本進行交互;(2)如何發(fā)布控件,讓控件能在客戶端的瀏覽器上正常使用?通過教授學(xué)生開發(fā)“ftp文件上傳” 控件實例探討網(wǎng)站控件技術(shù)。

關(guān)鍵詞 控件 服務(wù)器端腳本 客戶端 ACCESS數(shù)據(jù) 打包

中圖分類號:TP311 文獻標(biāo)志碼:A

Analysis of Website Control Technology

CHEN Rui

(Guangzhou Huangpu Vocational and Technical School, Guangzhou, Guangdong 510725)

AbstractControl can achieve a variety of functions, the article is around solving the two major problems of web control technology: (1) How to make the control to interact with server-side scripting; (2) How to release control, and allow control narmally used in the client's browser? This paper discusses site control technology through the example of teaching students to develop \"ftp file upload\" control.

Key wordscontrol; server-side script; client; ACCESS data; packaging

在教授學(xué)生開發(fā)“ftp文件上傳” 控件實例中主要運用了VB、ASP、ACCESS等編程開發(fā)工具及IIs5.0搭建服務(wù)器平臺。由于VB自帶的程序打包工具,能夠輕松地打包控件、發(fā)布控件,所以我們在“ftp上傳工具” 控件實例開發(fā)中,選用了中職學(xué)生最為熟悉的VB作為開發(fā)工具;ASP與VB的語法極為相似,也是中職計算機專業(yè)最為常設(shè)的專業(yè)課程之一,所以我們選用中職學(xué)生較為熟悉的ASP作為服務(wù)器端腳本;由于ACCESS數(shù)據(jù)簡單、且方便測試,所以我們選用ACCESS數(shù)據(jù)庫文件;對中職生而言,Windows自帶的IIS信息服務(wù)器可以說是最為簡單和常用的服務(wù)器平臺搭建工具之一,因此這個實例也是選用IIs5.0(或以上版本)來搭建web和ftp服務(wù)器平臺。

“ftp文件上傳” 控件實例主要功能有:從web服務(wù)器的數(shù)據(jù)庫里取得指定ftp服務(wù)器的用戶名和密碼,然后把文件上傳到ftp服務(wù)器,最后把成功上傳文件的文件名保存回web服務(wù)器的數(shù)據(jù)庫。

圖1

圖2

下面從“ftp文件上傳”控件實例開發(fā)的六個步驟中詳細(xì)闡述解決“(1)如何讓控件與服務(wù)器端腳本進行交互”及“(2)如何發(fā)布控件,讓控件能在客戶端的瀏覽器上正常使用?”兩個問題的過程及控件技術(shù)剖析。

(1)用ACCESS建立一個db.mdb文件,文件包含兩個表:

表1為user :存儲ftp服務(wù)器的用戶和密碼

(表結(jié)構(gòu)如圖1)(內(nèi)容如圖2)

表2為files:(存儲成功上傳的文件名)

表2為files :用于保存已經(jīng)上傳的文件的文件名(表結(jié)構(gòu)如下圖3)

圖3

(2)用VB創(chuàng)建activex控件。

打開VB,點擊【文件】菜單下面的【新建】,選擇activex控件,建立activex控件工程。保存工程到【G:\\用VB開發(fā)文件上傳控件,用于網(wǎng)頁】

打開部件面板,添加兩個部件:

① Microsoft Common Dialog Control6.0(對話框控件,用來選擇要上傳的文件)

② Microsoft Internet Transfer Control6.0(用于上傳文件到ftp服務(wù)器)

●加一個文本框(Text1)到設(shè)計面板,屬性Text設(shè)置為空,屬性enable為1

●加一個標(biāo)簽(label1)到設(shè)計面板, 屬性caption設(shè)置為“你選擇的文件”

●加兩個按鈕command1、command2到到設(shè)計面板,caption屬性分別設(shè)為“打開文件”、“上傳”

●加一個CommonDialog1控件到設(shè)計面板(Microsoft Common Dialog Control6.0)

●加一個inet1控件到設(shè)計面板(Microsoft Internet Transfer Control6.0)

雙擊設(shè)計面板,打開代碼(code)窗口:(以下程序后面【 】內(nèi)的文字為程序代碼注釋)

Private user, pwd As String'【保存從asp文件中傳遞過來的ftp的用戶名和密碼】

'【以下定義兩個共有屬性username、password,用來做為從asp文件獲得ftp用戶名和密碼的接口,用Property Get、Property Let方法來定義屬性】

Public Property Get username() As String

username = user '【得到屬性】

End Property

Public Property Let username(ByVal userstr As String)

user = userstr '【設(shè)置屬性】

PropertyChanged \"username\"'【user和username是相關(guān)聯(lián)系,保存一樣的數(shù)據(jù),一個改變了,另一個更著改變】

End Property

Public Property Get password() As String

password = pwd '【得到屬性】

End Property

Public Property Let password(ByVal pwdstr As String)

pwd = pwdstr '【設(shè)置屬性】

PropertyChanged \"password\" ' 【pwd和password是相關(guān)聯(lián)系,保存一樣的數(shù)據(jù),一個改變了,另一個更著改變】

End Property

'【以下代碼很重要,是數(shù)據(jù)成功傳遞的關(guān)鍵】

'【從存貯器中加載屬性值】

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

user = PropBag.ReadProperty(\"username\", \"\")

pwd = PropBag.ReadProperty(\"password\", \"\")

End Sub

'【將屬性值寫到存儲器】

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty(\"username\", user, \"\")

Call PropBag.WriteProperty(\"password\", pwd, \"\")

End Sub

'【以下是對text1的編程,text1用來顯示選中的要上傳文件的完整路徑】

Private Sub Text1_Change() '【當(dāng)文本框內(nèi)容改變時,觸發(fā)該事件】

If Text1.Text <> \"\" Then

Command1.Enabled = True '【當(dāng)文本框內(nèi)容改變時,有內(nèi)容,上傳按鈕可用】

Else

Command1.Enabled = False '【當(dāng)文本框內(nèi)容改變時,無內(nèi)容,上傳按鈕不可用】

End If

End Sub

'【command2為【打開文件】按鈕,用來選擇要上傳的文件】

Private Sub Command2_Click()

CommonDialog1.FileName = \"\"

CommonDialog1.ShowOpen

If CommonDialog1.FileName <> \"\" Then

Text1.Text = CommonDialog1.FileName'【把選中的文件賦給文本框】

End If

End Sub

'【command1為【上傳】按鈕,將選中的文件上傳到ftp服務(wù)器】

Private Sub Command1_Click()

IfText1.Text <> \"\"Then

IfDir(Text1.Text) <> \"\"Then'【如果文件存在】

Command1.Enabled = False'【上傳按鈕,要等到當(dāng)前文件傳送完才可用】

fst = Split(Text1.Text, \"\\\")'【分隔路徑,獲得文件名】

Inet1.password = pwd '【設(shè)置ftp服務(wù)器密碼】

Inet1.username = user '【設(shè)置ftp用戶名】

Inet1.RemoteHost = \"192.168.1.1\"'【設(shè)置ftp服務(wù)器地址】

Inet1.Protocol = icFTP'【設(shè)置上傳文件用的協(xié)議】

Inet1.RemotePort = 21 '【設(shè)置ftp服務(wù)器的接收文件用的端口】

On Error GoTo errh: '【以下程序如果執(zhí)行出錯就跳轉(zhuǎn)去提示出錯信息】

Inet1.Execute , \"put \" Text1.Text \" upfiledata/\" fst(UBound(fst)) '【inet1控件上傳文件到ftp服務(wù)器的 [upfiledata] 目錄下】

isbusy = True

Do While isbusy'【讓程序等待文件上傳結(jié)束】

isbusy = Inet1.StillExecuting

DoEvents

Loop

Text1.Text = \"\"

Command1.Enabled = True'【文件傳送完,恢復(fù)上傳按鈕按變成可用】

'【重新提交網(wǎng)頁,傳遞已傳送的文件名給asp文件,以保存文件名到數(shù)據(jù)庫】

Shell \"explorer.exe http://192.168.1.1/ upfile /u1.asp?fn=\" fst(UBound(fst))\"

Exit Sub

errh: '【提示出錯信息】

MsgBox Err.Description, , \"信息提示\"

Command1.Enabled = True'【出錯提示后,重新恢復(fù)上傳按鈕按變成可用】

End If

End If

End Sub

控件設(shè)計完成,點擊【文件】菜單下面的【生成工程1ocx】,在彈出的【生成工程】對話框中輸入a.ocx,生成控件。

(3)打包控件。

第一步:打開VB自帶的【package deployment 向?qū)А砍绦颉?/p>

第二步:選擇工程保存的位置,點擊【打包】。

第三步:選擇【Internet包1】點擊【下一步】按鈕。

第四步:在包類型對話框中選擇【Internet軟件包】,點擊【下一步】按鈕。

第五步:選擇包保存的位置,默認(rèn)即可,點擊【下一步】按鈕。

第六步:【文件】列表框中的文件全部勾選,點擊【下一步】按鈕。

第七步:在【文件】列表框中分別選中每個文件,都在【文件源】框中設(shè)置為第一項:【包含在此壓縮文件中】,點擊【下一步】按鈕。

第八步:在安全設(shè)置中【設(shè)置腳本安全性】為【是】,【設(shè)置初次化安全性】為【是】,這個設(shè)置很關(guān)鍵,一定要設(shè)置為【是】,如果設(shè)置為【否】,控件將無法在客戶端正常顯示,點擊【下一步】按鈕。

第九步:點擊【完成】按鈕,控件打包完成,生成的包文件名為“ a.cab ”。

(4)編寫【u1.asp】文件,用來傳遞數(shù)據(jù)給控件,同時接收控件傳回的數(shù)據(jù)。

用記事本新建【u1.asp】文件,寫代碼如下:

<%@ language=VBscript %>

<%

dim conn

dim connectstr

set conn=server.createobject(\"adodb.connection\")

connectstr=\"provider=microsoft.jet.oledb.4.0;data source=\" server.mappath(\"db.mdb\")

conn.Open connectstr'【打開對數(shù)據(jù)庫db.mdb的連接】

Set rs =server.createobject(\"adodb.recordset\")

rs.Open \"user\",conn,3,3 '【打開user表獲得ftp的用戶名和密碼】

if not rs.eof then

session(\"us\")=rs(“username”) '【把數(shù)據(jù)保存到session變量中】

session(\"pd\")=rs(“password”)

end if

rs.close

%>

打開工程保存的文件夾【G:\\用VB開發(fā)文件上傳控件,用于網(wǎng)頁】,里面有個【包】文件夾,保存了剛才打包的控件,【a.cab文件】和【a.htm】文件。用記事本打開文件a.htm,找到如下這段代碼

CLASSID =

\"CLSID:8645E59E-97FF-401D-8E1C-89B878154973\"

CODEBASE=\"a.CAB#version=1,0,0,0\"> '【每一個控件都會有CLASSID,網(wǎng)頁中是通過CLASSID來引用控件的】

將其復(fù)制粘貼到【u1.asp】文件中的最后面,把控件添加到【u1.asp】文件中,得到如下的【u1.asp】文件

<%@ language=VBscript %>

<%

dim conn

dim connectstr

set conn=server.createobject(\"adodb.connection\")

connectstr=\"provider=microsoft.jet.oledb.4.0;data source=\" server.mappath(\"db.mdb\")

conn.Open connectstr'【打開對數(shù)據(jù)庫db.mdb的連接】

Set rs =server.createobject(\"adodb.recordset\")

rs.Open \"user\",conn,3,3 '【打開user表獲得ftp的用戶名和密碼】

if not rs.eof then

session(\"us\")=rs(“username”) '【把數(shù)據(jù)保存到session變量中】

session(\"pd\")=rs(“password”)

end if

rs.close

%>

CLASSID =

\"CLSID:8645E59E-97FF-401D-8E1C-89B878154973\"

CODEBASE=\"a.CAB#version=1,0,0,0\"><%'【一定要設(shè)置width,height,這樣控件才能顯示%>

<%'繼續(xù)寫文件,通過控件的公開接口屬性password、username把保存在session變量里的ftp用戶名和密碼傳遞給控件,實現(xiàn)由asp文件向控件傳遞數(shù)據(jù),代碼如下:】

%>

\">

\">

<%'【繼續(xù)寫文件,控件傳送文件成功后,會把成功上傳的文件名傳遞回給asp文件,asp文件收到傳遞過來的文件名后,要將文件名寫回數(shù)據(jù)庫,從而實現(xiàn)控件向asp文件傳遞數(shù)據(jù),代碼如下:】%>

<%

if (trim(request(“fn”))<>””) then

rs.Open \"files\",conn,3,3 '【打開files表】

rs.addnew'【增加新記錄】

rs(“filename”)= trim(request(“fn”)) '【接收到的文件名加入數(shù)據(jù)表files中】

rs.update'【更新,完成添加】

rs.close

end if

conn.close

'【繼續(xù)寫下面的代碼,在網(wǎng)頁中用text文本框顯示已經(jīng)成功上傳的文件】

%> (下轉(zhuǎn)第170頁)(上接第144頁)

已經(jīng)上傳的文件:

\" readonly=\"true\">

至此u1.asp文件編寫完成。

(5)為了測試客戶端訪問u1.asp文件時控件是否正常運作,需要在服務(wù)器端 (這里服務(wù)器的ip地址設(shè)置為:192.168.1.1) 配置web服務(wù)和ftp服務(wù)。

在IIs中新建站點或網(wǎng)站虛擬目錄,這里為了方便測試,建立虛擬目錄upfile,網(wǎng)址為http://192.168.1.1/upfile,把打包控件生成的【a.cab】文件和編寫的【u1.asp】文件放到虛擬目錄對應(yīng)的物理文件夾中。同時新建一個ftp站點,地址為ftp://192.168.1.1,并在ftp站點下建立一個目錄【upfiledate】,用來保存控件上傳過來的文件。

(6)客戶端瀏覽器設(shè)置。考慮到WEB的安全性,為了在服務(wù)器與客戶端建立良好的信任關(guān)系,必須為每個在WEB上使用ActiveX控制設(shè)置一個“代碼簽名”(CodeSigning)。VC5.0提供了生成供測試用的“代碼簽名”的工具。如果要正式發(fā)布,則必須向有關(guān)機構(gòu)申請。

客戶端IE設(shè)置完成,在網(wǎng)址欄輸入http://192.168.1.1/upfile/u1.asp,進行測試。

當(dāng)然控件技術(shù)也可能會帶來不少病毒、木馬等與安全性相關(guān)的問題。現(xiàn)在,幾乎所有電腦都會設(shè)置和安裝程序來防范和攔截病毒,這也使得控件在網(wǎng)頁上的運行經(jīng)常會出現(xiàn)某些問題,但技術(shù)是永無止境的,讓我們大家共同努力,去不斷完善和改進網(wǎng)頁控件的安全性。

參考文獻

[1]網(wǎng)絡(luò)高級編成.人民郵電出版社.

[2]VB倥件大全.電子工業(yè)出版社.

[3]客戶端-服務(wù)器編程與應(yīng)用.電子工業(yè)出版社.

主站蜘蛛池模板: 欧美国产日产一区二区| 国产成人资源| 日本不卡在线播放| 国产一区二区福利| 欧美在线一级片| 欧美一级黄色影院| 看国产毛片| 无码专区国产精品一区| 欧美午夜在线播放| 国产一区二区丝袜高跟鞋| 九九视频免费在线观看| 国产精品精品视频| 国产国产人在线成免费视频狼人色| 91久久偷偷做嫩草影院| 毛片手机在线看| 国产一区二区三区精品欧美日韩| 性网站在线观看| 色播五月婷婷| 欧美日韩在线成人| av免费在线观看美女叉开腿| 91精品啪在线观看国产60岁| 久久中文字幕2021精品| 日本不卡在线视频| 波多野一区| 午夜精品区| 亚洲综合色吧| 国产精品久久国产精麻豆99网站| 日韩国产综合精选| 色有码无码视频| 18禁黄无遮挡免费动漫网站| 亚欧美国产综合| 久久国语对白| 99er精品视频| 亚洲第一中文字幕| 91在线播放免费不卡无毒| 永久免费无码日韩视频| 91精品情国产情侣高潮对白蜜| 亚洲人成高清| 国产AV无码专区亚洲A∨毛片| 日韩欧美视频第一区在线观看| 欧美a级在线| 日韩在线2020专区| 无码久看视频| 免费大黄网站在线观看| 亚洲国模精品一区| 国产高清精品在线91| 亚洲国产在一区二区三区| 在线观看国产一区二区三区99| 91亚瑟视频| 国产91高跟丝袜| 亚洲成人精品| 国产精鲁鲁网在线视频| 亚洲国产精品国自产拍A| 一级毛片在线播放| 色婷婷亚洲十月十月色天| 国产激情在线视频| 亚洲v日韩v欧美在线观看| 一本大道香蕉高清久久| 国产成人久久综合一区| 美女裸体18禁网站| 狠狠操夜夜爽| 国产在线98福利播放视频免费| 永久免费av网站可以直接看的 | 欧美伊人色综合久久天天| 欧美国产中文| 无码专区第一页| 色婷婷成人| 五月婷婷丁香色| 欧美国产在线看| 亚洲国产精品无码久久一线| 美女毛片在线| 五月天福利视频| 五月天婷婷网亚洲综合在线| 91小视频版在线观看www| 高清久久精品亚洲日韩Av| 国产尤物视频在线| 国产区福利小视频在线观看尤物| 亚洲成在线观看 | 1024国产在线| 日本免费福利视频| 国产无吗一区二区三区在线欢| 99r在线精品视频在线播放|