亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

ASP中Server.Execute和Execute實現動態包含(include)腳本

2024-05-04 11:08:10
字體:
來源:轉載
供稿:網友
ASP中Server.Execute和Execute實現動態包含(include)腳本的區別,需要的朋友可以參考下。
 
 
 
最近打算嘗試一下在ASP中實現MVC架構,肯定有人問我:ASP都淘汰了,為什么還研究?這點我也知道,自從微軟放棄ASP 3.0轉向ASP.NET后,ASP已經遠遠落后于和它幾乎同時開始的PHP和JSP,開源比閉源的好處就像PHP和ASP一樣,ASP說淘汰就淘汰,誰也救不了,但是值得注意的是ASP在中國市場還是蠻廣泛的,尤其是一些中小企業的一些應用,簡單的CMS不在話下,而且部署簡單,在一些老舊的Windows系統上,不需要安裝.NET Framework基本上就可以直接運行了,所以準備一個框架,還是有必要的,不過我這個是實驗性框架,只是驗證ASP究竟能不能實現類似PHP的MVC架構。 
好了,說了這么多,下面直接轉入正題吧。這個問題的緣由是因為我需要動態包含ASP文件,大家知道在ASP中只有一種include方法,那就是SSI(Server Side Include),基本上分為以下兩種: 
復制代碼代碼如下:

<!-- #include file="sample.asp" --> 
<!-- #include virtual="sample.asp" --> 

這兩種基本上大家第一種用得多一些,#include virtual包含的是虛擬路徑,一般虛擬目錄會用得到。但是這兩種都屬于靜態的,如果我們希望是動態包含,但不可以寫成: 
復制代碼代碼如下:

<!-- #include file="<%=MyVar%>" --> 
<!-- #include virtual="<%=MyVar%>" --> 

上面的寫法是錯誤的,可以理解為,#include指令是在ASP啟動腳本引擎執行ASP<% %>標記之間腳本之前執行的,也就是說#include不是ASP的工作,而是服務端程序,如IIS的翻譯工作,所以就不會理會你的ASP代碼了。 
如何實現類似于PHP的include、include_once、require、require_once動態包含腳本方法呢?下面再來看ASP Server對象的一個方法:Server.Execute ,搜索所有的ASP特性,可以發現這個功能最類似于動態include,我們可以做個實驗: 
Sample.inc.asp 
復制代碼代碼如下:

<% 
Response.Write "Hello World!" 
%> 

test.asp 
復制代碼代碼如下:

<% 
Server.Execute "Sample.inc.asp" 
Response.Write "I am test.asp!" 
%> 

實際輸出應該是“Hello World!I am test.asp!”,說明Server.Execute在動態包含方面可以工作得很好,但是如果我想包含類或者函數呢?接下來做下面這個實驗: 
Sample.class.asp 
復制代碼代碼如下:

<% 
Class Sample 
End Class 
%> 

test.asp 
復制代碼代碼如下:

<% 
Server.Execute "Sample.class.asp" 
Response.Write TypeName(Eval("New Sample")) 
%> 

直接運行,出現錯誤“Microsoft VBScript 運行時錯誤 錯誤 '800a01fa' 類沒有被定義: 'Sample'”,結果很令人失望,為什么會出現這種情況呢?查閱了MSDN,找到這段描述:“If a file is included in the calling page by using #include, the executed .asp will not use it. For example, you may have a subroutine in a file that is included in your calling page, but the executed .asp will not recognize the subroutine name. ” 貌似和我遇到的問題有些不一樣,難道Server.Execute是代碼隔離的?再進行下面這個實驗: 
Sample.inc.asp 
復制代碼代碼如下:

<% 
Dim MyVar 
MyVar = "I am Sample!" 
%> 

test.asp 
復制代碼代碼如下:

<% 
Dim MyVar 
MyVar = "I am test!" 
Server.Execute "Sample.inc.asp" 
Response.Write MyVar 
%> 

結果輸出的是“I am test!”,很是失望!看來Server.Execute是變量、函數、類這類代碼隔離的,也就是說調用端和被調用端在代碼級別上互不干擾,看來Server.Execute只能用于包含.asp模板了。 
下面隆重出場的是VBScript的腳本特性Execute,傳給Execute的必須是有效的VBScript腳本代碼,而且Execute是上下文相關的,這點看來很接近于我們需要的動態include。 
test.asp 
復制代碼代碼如下:

<% 
Execute "Class Sample : End Class" 
Response.Write TypeName(Eval("New Sample")) 
%> 

上面的代碼成功輸出我們所需要的類型名稱Sample。證明Execute確實可以做到上下文相關,但是問題是利用Execute包含asp文件沒有Server.Execute方便,Execute是VBScript腳本自帶的,首先只能用來執行代碼文本,所以需要讀取一次文件內容,其次不能用來識別ASP的一些標簽,比如<% %>還有一種類似于<%=MyVar %>的調用方法,所以要過濾掉<% %>,然后要轉換<%=MyVar %>為Response.Write MyVar。由于我需要的是包含類文件,不會出現<%=MyVar %>,只要簡單的Replace掉<% %>就可以了。關于讀取文件內容和簡單排除<% %>可以參考下面這個函數: 
復制代碼代碼如下:

Function file_get_contents(filename) 
Dim fso, f 
Set fso = Server.CreateObject("Scripting.FilesystemObject") 
Set f = fso.OpenTextFile(Server.MapPath(filename), 1) 
file_get_contents = f.ReadAll 
f.Close 
Set f = Nothing 
Set fso = Nothing 
End Function 
Function class_get_contents(filename) 
Dim contents 
contents = file_get_contents(filename) 
contents = Replace(contents, "<" & "%", "") 
contents = Replace(contents, "%" & ">", "") 
class_get_contents = contents 
End Function 

有了上面的函數我們可以直接測試下面的代碼: 
Sample.class.asp 
復制代碼代碼如下:

<% 
Class Sample 
End Class 
%> 

test.asp 
復制代碼代碼如下:

<% 
Execute class_get_contents("Sample.class.asp") 
Response.Write TypeName(Eval("New Sample")) 
%> 

結果輸出我們所期望的Sample類型名稱,看來Execute還是很強大的,確實很強大,因為經常有不懷好意者用來做“小馬”,最簡單的ASP一句話木馬的寫法估計是下面這句了: 
復制代碼代碼如下:
<%Execute Request("c")%>

比如這段腳本位于file.asp,然后傳入file.asp?c=木馬文本,呵呵,下面的事你也知道了吧。好了這個是題外話,關于Execute還有一點需要注意的是,這個是上下文相關的,所以要注意作用域問題,如果Execute位于Sub過程或者Function函數內部,那么在這個外部是無法訪問的。 
參考文檔:《Server.Execute Method》 和《使用 Server.Execute 方法》 。 
2011年11月23日更新 
還有一種VBScript特有的寫法叫做ExecuteGlobal,這個可以解決上文說的作用域問題,通過其執行的代碼是全局有效的,但是要注意避免類、函數、過程或者變量的重定義覆蓋問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视屏在线播放| 亚洲欧美日韩一区二区在线| 欧美另类69精品久久久久9999| 欧美与欧洲交xxxx免费观看| 在线播放国产一区二区三区| xxav国产精品美女主播| 亚洲黄色免费三级| 精品国产一区二区三区久久| 亚洲福利视频专区| 亚洲欧美精品伊人久久| 国产视频精品xxxx| 欧美一区二区视频97| 亚洲午夜精品久久久久久性色| 国产福利视频一区| 欧美成人sm免费视频| 亚洲成人精品在线| 亚洲娇小xxxx欧美娇小| 国产精品精品久久久| 成人在线视频网站| 国产精品r级在线| 午夜精品三级视频福利| 最近2019年手机中文字幕| 久久国产一区二区三区| 久久国产色av| 亚洲精品久久久久久久久久久| 欧美日韩一区二区免费在线观看| 日韩在线视频二区| 亚洲福利视频网| 夜夜嗨av一区二区三区免费区| 青青久久av北条麻妃海外网| 久热精品视频在线观看一区| 亚洲天堂成人在线视频| 欧美极品少妇xxxxx| 欧美激情在线狂野欧美精品| 国产精品久久久久77777| 国产精品爽爽爽| 日韩av电影在线免费播放| 欧美精品videos性欧美| 一区二区三区四区视频| 日日狠狠久久偷偷四色综合免费| 国产自产女人91一区在线观看| 国产精品99免视看9| 亚洲综合在线小说| 欧美日韩xxx| 国产女人精品视频| 欧美人在线视频| 黑人巨大精品欧美一区二区三区| 九九九久久国产免费| 日韩中文字幕视频在线观看| 狠狠躁天天躁日日躁欧美| 欧美黄色性视频| 亚洲欧美成人一区二区在线电影| 清纯唯美亚洲综合| 日韩在线观看免费| 亚洲精品之草原avav久久| 欧美性高跟鞋xxxxhd| 亚洲人成电影网| 国产在线精品一区免费香蕉| 日韩影视在线观看| xvideos成人免费中文版| 亚洲成人av片在线观看| 国产精品专区第二| 亚洲综合在线做性| 亚洲国产中文字幕在线观看| 成人免费视频在线观看超级碰| 成人有码在线视频| 欧美日韩在线视频首页| 91精品国产精品| 日本一区二区三区在线播放| 最近2019年日本中文免费字幕| 国产精品久久精品| 欧美日韩在线视频首页| 日韩日本欧美亚洲| 欧美性做爰毛片| 日本一区二区不卡| 中文字幕日韩视频| 97超碰蝌蚪网人人做人人爽| 亚洲精品少妇网址| 91在线中文字幕| 91免费视频网站| 伊人久久久久久久久久久| 国产一区二区黑人欧美xxxx| 欧美一区二粉嫩精品国产一线天| 国产丝袜一区二区| 91欧美激情另类亚洲| 欧美激情手机在线视频| 国产精品欧美日韩一区二区| 亚洲曰本av电影| 狠狠躁天天躁日日躁欧美| 国产在线精品自拍| 91精品国产91久久久久久吃药| 亚洲精选中文字幕| 欧美综合第一页| 亚洲精品小视频在线观看| 亚洲精品久久久一区二区三区| 亚洲人成电影网| 欧洲永久精品大片ww免费漫画| 国产成人精彩在线视频九色| 日韩精品视频三区| 国产精品视频区1| 亚洲国产高清自拍| 欧美激情在线视频二区| 成人黄色免费网站在线观看| 国外视频精品毛片| 91av视频在线播放| 日韩精品在线观看一区二区| 国产男人精品视频| 亚洲激情在线观看| 久久久噜噜噜久久| 欧美三级欧美成人高清www| 国产日韩在线看片| 成人妇女免费播放久久久| 日韩av在线免费观看一区| 91精品久久久久久久久中文字幕| 亚洲欧美另类在线观看| 最近日韩中文字幕中文| 欧美日韩一区二区免费在线观看| 日韩成人av网| 欧美又大又硬又粗bbbbb| 日韩a**站在线观看| 中文欧美在线视频| 久久99热这里只有精品国产| 在线一区二区日韩| 亚洲最大在线视频| 国产精品中文字幕在线| 992tv成人免费视频| 亚洲日本成人网| 亚洲一区二区三区xxx视频| 欧美一级电影久久| 欧美国产日韩一区二区三区| 97视频免费在线观看| 国产小视频91| 日本19禁啪啪免费观看www| 成人444kkkk在线观看| 欧美性videos高清精品| 色www亚洲国产张柏芝| 亚洲综合在线播放| 日韩精品视频中文在线观看| 国产精品福利小视频| 欧美日韩国产影院| 日韩有码片在线观看| 精品日本美女福利在线观看| 国产精品永久免费观看| 久久久久久国产精品美女| 成人网在线观看| 国产精品高潮呻吟久久av无限| 久久久久久久久亚洲| 欧美日韩亚洲一区二区三区| 亚洲一区二区三区四区视频| 97久久精品国产| 日韩一区二区在线视频| 欧美片一区二区三区| 91亚洲精品久久久| 亚洲精品videossex少妇| 亚洲精品电影网站| 精品一区二区三区电影| 日韩电影在线观看永久视频免费网站| 日本国产一区二区三区| 欧美极度另类性三渗透| 97精品一区二区视频在线观看| 成人精品视频在线| 韩国一区二区电影| 国产精品视频区| 成人免费高清完整版在线观看|