ASP中Server.Execute、Execute、Include的用法
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
[p]1.在網(wǎng)上看了include和server.execute的介紹,說(shuō)server.execute是為了彌補(bǔ)include使用不靈活,占用系統(tǒng)資源多等問(wèn)題而出現(xiàn)的.但是為什么還是這多人用include而不是用server.execute替代include來(lái)用呢?[br][br]2.server.execute替代所有的include可以嘛?有什么好處和壞處? [/p]
[p] [/p] 首先說(shuō)明一下,server.execute()和execute是不同的,前者是asp內(nèi)置對(duì)象,后者是vb語(yǔ)句。 [p]1.執(zhí)行過(guò)程[br]dim strsubname[br]strsubname="print"[br]execute strsubname[br]sub print()[br] response.write now[br]end sub[/p] [p]2.執(zhí)行帶參數(shù)的過(guò)程[br]dim strsubname[br]strsubname="print("""&now&""")"[br]execute strsubname[br]sub print(str)[br] response.write str[br]end sub[/p] [p]3.動(dòng)態(tài)包含文件[br]server.execute("xxx.asp")[/p] [p][br]server.execute和include相異之處:[/p] [p]execute method 是個(gè)呼叫一個(gè).asp 程序并執(zhí)行它,比較類似一般程式語(yǔ)言的 procedure call;而 #include 則僅將所包含的程序插入原程序當(dāng)中。 [/p] [p] [/p] [p]server.execute表示將頁(yè)面運(yùn)行過(guò)后的html代碼插入當(dāng)前位置:[/p] [p]include表示將頁(yè)面的源代碼加入當(dāng)前位置再做為一個(gè)整體運(yùn)行 [/p] [p]比方說(shuō)你定義一個(gè)變量dim a [br]用server.execute后這個(gè)定義是無(wú)效的 [br]include的話,這個(gè)定義有效[/p] [p] [/p] [p]server對(duì)象的execute方法是asp3.0新增的方法,只有web服務(wù)器采用iis5.0或更高版本時(shí)才有效。[br]其用法為:[/p] [p]server.execute("url")[/p] [p]功能:停止執(zhí)行當(dāng)前頁(yè)面,將執(zhí)行控制權(quán)轉(zhuǎn)到url所指定的新頁(yè)面中,用戶的當(dāng)前環(huán)境(會(huì)話狀態(tài)和任何當(dāng)前事務(wù)狀態(tài))將傳遞 到新頁(yè)面,待新頁(yè)面執(zhí)行完后,控制權(quán)將返回到原始頁(yè)面,并繼續(xù)執(zhí)行原始頁(yè)面中execute方法之后的語(yǔ)句。[/p] [p] 該方法的功能有點(diǎn)類似于過(guò)程調(diào)用,只不過(guò)此處調(diào)用的不是過(guò)程,而是一個(gè)完整的asp頁(yè)面。[/p] [p]例如:若要根據(jù)客戶端語(yǔ)系的不同,訪問(wèn)不同的頁(yè)面,則實(shí)現(xiàn)代碼為:[/p] [p]<%[br]language=request.servervariables("http_accept_language")[br]if language="zh-cn" then[br] server.execute("chinese/index.asp")[br]else[br] server.execute("english/index.asp")[br]end if[br]%>[/p] [p]另外,在asp中,還可以通過(guò)#include指令,將一個(gè)asp文件包含到網(wǎng)頁(yè)中。[/p] [p]區(qū)別:[br]execute的話全局變量不共享,各自獨(dú)立。[/p] [p]include應(yīng)該是快一些的。 [br]execute method 是個(gè)呼叫一個(gè).asp 程序并執(zhí)行它; [br]#include 則僅將所包含的程序插入原程序當(dāng)中,開(kāi)始并不執(zhí)行的,執(zhí)行的時(shí)候也不一定是全部。[/p] [p][br]server.execute 的一個(gè)很好的特點(diǎn)是運(yùn)行條件包含的能力。通常情況下包含不能是有條件的,因?yàn)?include 指示是在腳本代碼執(zhí)行處理?xiàng)l件之前預(yù)先處理的。但是用server.execute 可以寫出這樣的代碼,查看一個(gè)session變量,決定調(diào)用哪一部分代碼,而不是總是裝載著兩部分代碼。 [br]if session("dothisorthat") = "this" then [br]server.execute("this.asp") [br]else [br]server.execute("that.asp") [br]end if [/p] [p][br]調(diào)用 execute 語(yǔ)句的上下文確定了要運(yùn)行的代碼可以使用的對(duì)象和變量。作用域內(nèi)的對(duì)象和變量是 execute 語(yǔ)句中運(yùn)行的代碼可以使用的。 [/p] [p]與其他過(guò)程類似,新的過(guò)程的作用域是全局的,它繼承了全局作用域的全部東西。與其他過(guò)程不同的是,它的上下文不是全局作用域,因此它只能在發(fā)生 execute 語(yǔ)句的過(guò)程內(nèi)的上下文中執(zhí)行。不過(guò),如果相同的 execute 語(yǔ)句是在過(guò)程之外(例如在全局作用域)的作用域中被調(diào)用,那么它將不僅繼承全局作用域中的所有東西,而且它還可以在任何地方被調(diào)用,因?yàn)樗纳舷挛氖侨值摹/p] 該文章在 2010/4/29 8:49:44 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |