【文章內(nèi)容簡(jiǎn)介】
良多的工具,豐富 Web 創(chuàng)作體驗(yàn)。 利用 Dreamweaver 中的可視化編輯功能, 用戶 可以快速地創(chuàng)建頁(yè)面而無(wú)需編寫任何代碼。不過,如果 用戶 更喜歡用手工直接編碼, Dreamweaver 還包括許多與編碼相關(guān)的工具和功能。并且,借助 Dreamweaver,還可以使用服務(wù)器語(yǔ)言(例如 ASP、 ColdFusion 標(biāo)記語(yǔ)言 (CFML)、 JSP 和 PHP)生 成支持動(dòng)態(tài)數(shù)據(jù)庫(kù)的 19 Web 應(yīng)用程序。 圖 20 第四章 具體模塊的設(shè)計(jì)實(shí)現(xiàn) 在線投票系統(tǒng)的各個(gè)代碼模塊 在上面的章節(jié)中曾經(jīng)介紹過,這個(gè)投票系統(tǒng)一共分成 4 個(gè)模塊,在接下來(lái)的章節(jié)中將具體講解每個(gè)模塊。 投票存儲(chǔ)模塊( amp。) 在 中介紹到本投票系統(tǒng)采用以 XML 文檔作為數(shù)據(jù)存儲(chǔ)。 本人 為本次課題設(shè)計(jì)了這樣的 XML 文檔來(lái)存儲(chǔ)數(shù)據(jù): ?xml version= encoding=UTF8? ! edited with XMLSpy v2021 rel. 3 U ( by ShengKan (Sheng Corp) Votes xmlns:xsi= xsi:noNamespaceSchemaLocation=F:\kan_sheng\ Vote Time=20210125 Title=對(duì)本投票系統(tǒng)的意見 Option Title=很好 Number=10/ Option Title=一般 Number=4/ Option Title=較差 Number=8/ Option Title=很差 Number=12/ Option Title=極差 Number=44/ /Vote Vote Time=20210118 Title=您更傾向于 C,JAVA? Option Title=C Number=10/ Option Title=JAVA Number=12/ /Vote /Votes 21 當(dāng)這個(gè)文檔被加載后在內(nèi)存中形成了這樣一個(gè) DOM 樹 (圖 ) : 圖 在 DOM 中,文檔的邏輯結(jié)構(gòu)類似一棵樹。文檔、文檔中的根、元素、元素Document Votes Vote Vote Option Option Option Option Title 很好 Number 10 Title 一般 number 4 Title 較差 Number 8 Title 很差 number 12 Option Title Numbererer 極差 44 Title Time 對(duì)本投票系統(tǒng)的意見 20210125 22 內(nèi)容、屬性、屬性值等都是以對(duì)象模型的形式來(lái)表示的。文檔對(duì)象模型利用對(duì)象來(lái)把文檔模 型化,這些模型不僅描述了文檔的結(jié)構(gòu),還定義了模型中對(duì)象的行為。換句話說,圖中的結(jié)點(diǎn)不是數(shù)據(jù)結(jié)構(gòu),而是對(duì)象,對(duì)象中包含方法和屬性。 DOM 中對(duì) DOM 樹中的結(jié)點(diǎn)定義了以下幾類對(duì)象。 Document 對(duì)象:即文檔對(duì)象,作為樹的最高結(jié)點(diǎn), Document 對(duì)象是對(duì)整個(gè)文檔進(jìn)行操作的入口。 Element 和 Attribute 對(duì)象:這些結(jié)點(diǎn)對(duì)象都是文檔某一部分的映射,結(jié)點(diǎn)的定級(jí)層次恰好反映了文檔的結(jié)構(gòu),在我們所開發(fā)的 XML文檔中 Option是 Element對(duì)象,而 Title 和 Number 則是 Attribute 對(duì)象。 Te xt 對(duì)象:作為 Element 和 Attribute 對(duì)象的子結(jié)點(diǎn), Text 對(duì)象表達(dá)了元素或?qū)傩缘奈谋緝?nèi)容。 Text 結(jié)點(diǎn)不再包含任何子結(jié)點(diǎn)。在我們所開發(fā)的 XML 文檔中 Attribute 對(duì)象 Title 的 Text 對(duì)象是“很好”而 Number 的 Text 對(duì)象則是“ 0”。 當(dāng) XML 文檔被加載后,通過使用上述的幾個(gè)對(duì)象及其方法就可以利用 ASP來(lái)訪問 XML 文檔了。 投票顯示模塊( ) 在明確了投票系統(tǒng)的存儲(chǔ)結(jié)構(gòu)后,就可以著手設(shè)計(jì)系統(tǒng)的具體界面了。首先要讓被調(diào)查者知道所要調(diào)查的主題,以及之后獲 取調(diào)查的信息也就是調(diào)查結(jié)果。我們采用調(diào)查頁(yè)面以 HTML 形式發(fā)送。并用表單技術(shù)收集訪問者的態(tài)度。調(diào)查問題被顯示在一個(gè) HTML 表格之中,第一列包含問題文本,第二列包含答案選項(xiàng)。 為了不使也面過于枯燥,我們對(duì)頁(yè)面做了一些修飾。包括滾動(dòng)字幕等效果(圖 )。以下是其源代碼: %@LANGUAGE=VBSCRIPT CODEPAGE=936% !DOCTYPE html PUBLIC //W3C//DTD XHTML Transitional//EN html xmlns= !include file= //投票頁(yè)面標(biāo)題 asp 文件 head 23 meta equiv=ContentType content=text/html。 charset=gb2312 / titleShow_Vote/title /head body background=Picture/ form action= method=post table width=500 border=0 align=center cellpadding=1 cellspacing=1 % strSourceFile=f:\kan_sheng\ Set objXML=() (strSourceFile) Set rootNode= Set objRootsite=(Vote) Question=(0).(1).text % tr td height=21 colspan=3 align=center%=Question%/td /tr % For i=0 To((0).) % tr td align=center input name=VoteOption type=radio value=%=i% / /td 24 tdinput name=option type=text id=option value=%=(0).(i).(0).text% class=showonly style=width:100/td % next % tr td colspan=3 align=centerinput type=submit name=Submit value=投票 / a href=strong查看結(jié)果 /strong/a /tr /table /form brbrbrbrbrbr !include file= //版權(quán)申明 asp 文件 /body /html 標(biāo)記“ form”的屬性“ action”值為“ ”。屬性“ method”的值為“ post”。與定義按鈕的代碼 input type=submit name=Submit value=投票 /是對(duì)應(yīng)的。表示按下“ Submit”按鈕這個(gè)表單將以“ post”方式交給“ ”文件處理執(zhí)行。 然后在程序使用了如下代碼: trSourceFile=f:\kan_sheng\ Set objXML=() 25 (strSourceFile) Set rootNode= Set objRootsite=(Vote) 其目的是加載外部的 文件,用來(lái)創(chuàng)建 DOM 對(duì)象,并對(duì)所要訪問的 XML 文檔中的結(jié)點(diǎn)進(jìn)行定位。在程序中先用絕對(duì)路徑定位了 XML 文件,但是也可以利用 ASP 中的對(duì)象 Server 的方法 MapPath 把 XML 源文件 地址的絕對(duì)路徑轉(zhuǎn)換為相對(duì)路徑。然后 把路徑所指的文件賦給變量“ sourcefile” .而后使用 Server 對(duì)象的creatobject 方法聲明了一個(gè) DOM 對(duì)象 objXML,然后通過 load 方法加載 XML文檔 ,在內(nèi)存中生成樹形存儲(chǔ)結(jié)構(gòu)。 接著,程序?qū)涞淖庸?jié)點(diǎn)作循環(huán)。從語(yǔ)句: input name=VoteOption type=radio value=%=i% / 可看到“單選按鈕組 Radio”有 3 個(gè)屬性: name、 type、 value。在這里我們要用到的是 name 和 value。利用循環(huán) 變量 i 對(duì)每個(gè)按鈕的 value 賦值。 通過語(yǔ)句 input name=option type=text id=option value=%=(0).(i).(0).text% class=showonly style=width:100 同樣利用循環(huán)將內(nèi)存中 DOM 樹的每根 Option 樹枝的 attribute 的第一項(xiàng)即選項(xiàng),用文本框的形式顯示出來(lái)。 最后這頁(yè)還使用了一個(gè)超級(jí)鏈接: a href=strong查看結(jié)果 /strong/a。點(diǎn)擊這個(gè)超級(jí)鏈接,將跳轉(zhuǎn)到投票結(jié)果顯示頁(yè)面 (圖 ) 。 26 圖 投票處理模塊( ) 上一節(jié)中的表單以“ Post”的方式,提交到投票處理模塊中加以處理。現(xiàn)在來(lái)介紹一下這個(gè)處理模塊。源代碼如下: %@LANGUAGE=VBSCRIPT CODEPAGE=936% !DOCTYPE html PUBLIC //W3C//DTD XHTML Transitional//EN html xmlns= head meta equiv=ContentType content=text/html。 charset=gb2312 / titleVotesProcess/title /head 27 body % strSourceFile=() Set objXML=() =False (strSourceFile) Set rootNode= Set objRootsite=(Vote) OptionResult=Request(VoteOption) IF Int(OptionResult)= Then % script language=VBScript alert請(qǐng)選擇 = /script %ElseIf OptionResult Then Cycle=(0). For i=0 To Cycle If Int(OptionResult)=i Then Var=(0).(i).(1).text (0).(i).(1).text=Var+1 End If Next End If strSourceFile () 28 % /body /html 同上一節(jié)一樣,程序先加載了外部的 XML 文件,然后作判斷程序如下: OptionResult=Request(VoteOption) IF Int(OptionResult)= Then % script language=VBScript alert請(qǐng)選擇 = /script %ElseIf OptionResult Then Cycle=(0). For i=0 To Cycle If Int(OptionResult)=i Then Var=(0).(i).(1).text (0).(i).(1).text=Var+1 End If 由于在前一個(gè)頁(yè)面中用戶選擇的單選按鈕的值 value 已被賦值,且值正好是循環(huán)變量的值。現(xiàn)在只需 通過 Request 對(duì)按鈕組取值,將 value 同內(nèi)存中的 DOM樹的樹枝序號(hào)作比較,如果兩個(gè)值相等,那就在相應(yīng)的 DOM 樹枝的 number 屬性即得票率上加 1。這樣就完成了一次投票。 然而,修改過的 DOM 樹只存在于內(nèi)存中,因此修改過的 DOM 樹要使用: strSourceFile 29 語(yǔ)句,將修改的結(jié)果存到硬盤中的 XML 文件中。 結(jié)果顯示模塊( ) 模塊代碼如下: %@LANGUAGE=VBSCRIPT CODEPAGE=936% !DOCTYPE ht