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

網站控件技術的剖析

2011-12-31 00:00:00陳銳
科教導刊 2011年24期

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

關鍵詞 控件 服務器端腳本 客戶端 ACCESS數據 打包

中圖分類號:TP311 文獻標志碼: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

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

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

圖1

圖2

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

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

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

(表結構如圖1)(內容如圖2)

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

表2為files :用于保存已經上傳的文件的文件名(表結構如下圖3)

圖3

(2)用VB創建activex控件。

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

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

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

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

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

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

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

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

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

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

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 '【設置屬性】

PropertyChanged \"username\"'【user和username是相關聯系,保存一樣的數據,一個改變了,另一個更著改變】

End Property

Public Property Get password() As String

password = pwd '【得到屬性】

End Property

Public Property Let password(ByVal pwdstr As String)

pwd = pwdstr '【設置屬性】

PropertyChanged \"password\" ' 【pwd和password是相關聯系,保存一樣的數據,一個改變了,另一個更著改變】

End Property

'【以下代碼很重要,是數據成功傳遞的關鍵】

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

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() '【當文本框內容改變時,觸發該事件】

If Text1.Text <> \"\" Then

Command1.Enabled = True '【當文本框內容改變時,有內容,上傳按鈕可用】

Else

Command1.Enabled = False '【當文本框內容改變時,無內容,上傳按鈕不可用】

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服務器】

Private Sub Command1_Click()

IfText1.Text <> \"\"Then

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

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

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

Inet1.password = pwd '【設置ftp服務器密碼】

Inet1.username = user '【設置ftp用戶名】

Inet1.RemoteHost = \"192.168.1.1\"'【設置ftp服務器地址】

Inet1.Protocol = icFTP'【設置上傳文件用的協議】

Inet1.RemotePort = 21 '【設置ftp服務器的接收文件用的端口】

On Error GoTo errh: '【以下程序如果執行出錯就跳轉去提示出錯信息】

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

isbusy = True

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

isbusy = Inet1.StillExecuting

DoEvents

Loop

Text1.Text = \"\"

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

'【重新提交網頁,傳遞已傳送的文件名給asp文件,以保存文件名到數據庫】

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

Exit Sub

errh: '【提示出錯信息】

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

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

End If

End If

End Sub

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

(3)打包控件。

第一步:打開VB自帶的【package deployment 向導】程序。

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

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

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

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

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

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

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

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

(4)編寫【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'【打開對數據庫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”) '【把數據保存到session變量中】

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

end if

rs.close

%>

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

CLASSID =

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

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

將其復制粘貼到【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'【打開對數據庫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”) '【把數據保存到session變量中】

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

end if

rs.close

%>

CLASSID =

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

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

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

%>

\">

\">

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

<%

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

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

rs.addnew'【增加新記錄】

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

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

rs.close

end if

conn.close

'【繼續寫下面的代碼,在網頁中用text文本框顯示已經成功上傳的文件】

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

已經上傳的文件:

\" readonly=\"true\">

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

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

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

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

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

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

參考文獻

[1]網絡高級編成.人民郵電出版社.

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

[3]客戶端-服務器編程與應用.電子工業出版社.

主站蜘蛛池模板: 性欧美久久| 丁香五月激情图片| 无码啪啪精品天堂浪潮av| 中文字幕日韩欧美| 日韩在线观看网站| 国产一区三区二区中文在线| 久久黄色小视频| 国产屁屁影院| 国产美女自慰在线观看| 久久久精品久久久久三级| 999国产精品永久免费视频精品久久| 2022精品国偷自产免费观看| 亚洲精品无码不卡在线播放| 国产女人在线视频| 999国产精品| 亚洲成a人在线播放www| 国产一区二区丝袜高跟鞋| 欧美一级一级做性视频| 伊人久久精品无码麻豆精品| www.91中文字幕| AⅤ色综合久久天堂AV色综合 | 欧美日韩免费在线视频| 亚洲国产成人自拍| 国产亚洲欧美日本一二三本道| 国产第一页亚洲| 欧美一区二区精品久久久| 婷婷色在线视频| 在线欧美日韩| 亚洲 欧美 日韩综合一区| 91欧洲国产日韩在线人成| 爆乳熟妇一区二区三区| 素人激情视频福利| 欧美在线免费| 国产十八禁在线观看免费| a级毛片网| 成人字幕网视频在线观看| 在线精品亚洲国产| 国产性猛交XXXX免费看| 激情午夜婷婷| 女人天堂av免费| 欧美日韩一区二区三| 成人久久精品一区二区三区| 欧美日韩在线国产| 亚洲国产欧美中日韩成人综合视频| 久久综合色天堂av| 色综合久久久久8天国| 亚洲欧美精品一中文字幕| 亚洲午夜久久久精品电影院| 国产区免费精品视频| 精品视频一区二区观看| 四虎亚洲精品| 国产日本视频91| 亚洲最黄视频| 香蕉网久久| 国产毛片久久国产| 成人伊人色一区二区三区| 亚洲国产综合精品中文第一| 欧美午夜在线观看| 色国产视频| 国产亚洲精品97AA片在线播放| 国内精品久久久久久久久久影视| 理论片一区| 日韩 欧美 国产 精品 综合| 欧美伦理一区| 欧美一级专区免费大片| 国产成人无码综合亚洲日韩不卡| 国产精品蜜臀| 999国内精品视频免费| 久久免费视频6| 91精品视频网站| 欧美精品亚洲日韩a| 国产性猛交XXXX免费看| 国产成人精品一区二区免费看京| 精品人妻AV区| 国产特一级毛片| 国产精品无码一二三视频| 国产欧美一区二区三区视频在线观看| 欧美日韩免费| lhav亚洲精品| AV老司机AV天堂| 99精品在线看| 91年精品国产福利线观看久久|