ASP設(shè)計(jì)常見問(wèn)題及解答精要-1
發(fā)布時(shí)間:2008-09-17 閱讀數(shù): 次 來(lái)源:網(wǎng)樂原科技
作為微軟推出的網(wǎng)頁(yè)與數(shù)據(jù)庫(kù)解決方案,ASP由于有微軟得天獨(dú)厚的操作系統(tǒng)等技術(shù)后盾支持,因此得到了迅速的發(fā)展,并且正受到越來(lái)越多的歡迎,在目前在電子商務(wù)網(wǎng)站的建設(shè)中有很多都使用ASP來(lái)編寫程序。
近來(lái)有很多的讀者向我們咨詢學(xué)習(xí)ASP的方法和在學(xué)習(xí)中遇到的一些問(wèn)題,其中有一些是初學(xué)者經(jīng)常遇到和面臨的問(wèn)題。為了讓讀者在學(xué)習(xí)ASP的過(guò)程中加深對(duì)ASP的了解,并能夠有效地解決遇到的問(wèn)題,我們特別收集了比較有代表性的一些問(wèn)題,在此列舉出來(lái)并一一給予解答,希望能在這有限的篇幅里為你學(xué)習(xí)ASP助一臂之力。
1、問(wèn)題:ASP是一種編程語(yǔ)言嗎?
答:ASP不是編程語(yǔ)言,而是一種開發(fā)環(huán)境。ASP提供了一個(gè)在服務(wù)器端執(zhí)行指令的環(huán)境,它利用了特殊的符號(hào)()來(lái)區(qū)分HTML與必須經(jīng)過(guò)服務(wù)器翻譯才能送往客戶端的命令。它可以執(zhí)行的指令包括HTML語(yǔ)言,Microsoft VBScript和Microsoft Jscript等,因此可以制作出功能強(qiáng)大的Web應(yīng)用程序。
2、問(wèn)題:在Web服務(wù)器上容納多個(gè)Web站點(diǎn),能使用PWS嗎?
答:在PWS上只能容納一個(gè)Web站點(diǎn)。為了在相同的計(jì)算機(jī)上容納多個(gè)Web站點(diǎn),需要使用Windows NT Server或Windows 2000 Server/Professional和IIS。
3、問(wèn)題:如何使用6個(gè)內(nèi)置ASP對(duì)象?
答:ASP提供了多個(gè)內(nèi)嵌對(duì)象,無(wú)須建立就可以在指令中直接訪問(wèn)和使用它們,這六個(gè)對(duì)象主要有:請(qǐng)求(Request)對(duì)象、響應(yīng)(Response)對(duì)象、工作階段(Session)對(duì)象、應(yīng)用程序(Application)對(duì)象、服務(wù)器(Server)對(duì)象、Cookies對(duì)象,這六個(gè)對(duì)象中的服務(wù)器(Server)對(duì)象可加載其他組件,這可以擴(kuò)展ASP的功能。
使用Server.CreateObject所建立的對(duì)象,它的生命周期在它建立時(shí)開始,在它所在的網(wǎng)頁(yè)程序結(jié)束時(shí)結(jié)束。如果想要讓該對(duì)象跨網(wǎng)頁(yè)使用,則可以用Session對(duì)象來(lái)記錄Server.CreateObject所建立的對(duì)象。
4、問(wèn)題:為什么在使用Response.Redirect的時(shí)候出現(xiàn)以下錯(cuò)誤:“標(biāo)題錯(cuò)誤,已將HTTP標(biāo)題寫入用戶端瀏覽器,對(duì)任何HTTP的標(biāo)題所作的修改必須在寫入頁(yè)內(nèi)容之前”?
答:Response.Redirect可以將網(wǎng)頁(yè)轉(zhuǎn)移至另外的網(wǎng)頁(yè)上,使用的語(yǔ)法結(jié)構(gòu)是這樣的:Response.Redirect網(wǎng)址,其中網(wǎng)址可以是相對(duì)地址或絕對(duì)地址,但在IIS4.0使用與在IIS5.0使用有所不同。
在IIS4.0轉(zhuǎn)移網(wǎng)頁(yè)須在任何數(shù)據(jù)都未輸出至客戶端瀏覽器之前進(jìn)行,否則會(huì)發(fā)生錯(cuò)誤。這里所謂的數(shù)據(jù)包括HTML的卷標(biāo),例如:< HTML>,< BODY>等,而在IIS5.0中已有所改進(jìn),在IIS5.0的默認(rèn)情況下緩沖區(qū)是開啟的,這樣的錯(cuò)誤不再產(chǎn)生。
在Response對(duì)象中有一Buffer屬性,該屬性可以設(shè)置網(wǎng)站在處理ASP之后是否馬上將數(shù)據(jù)傳送到客戶端,但設(shè)置該屬性也必須在傳送任何數(shù)據(jù)給客戶端之前。
為保險(xiǎn)起見,無(wú)論采用何種ASP運(yùn)行平臺(tái),在頁(yè)面的開始寫上< % Response.Buffer=True %>,將緩沖區(qū)設(shè)置為開啟,這樣的錯(cuò)誤就不會(huì)發(fā)生了。
5、問(wèn)題:緩沖輸出對(duì)于網(wǎng)頁(yè)傳輸有沒有影響?
答:在比較大的Web頁(yè)中,第一部分在瀏覽器中出現(xiàn)可能會(huì)有一些延遲,但是加載整個(gè)Web頁(yè)的速度比不用緩沖要快。
6、問(wèn)題:在沒有表單提交時(shí)查詢字符串的值是否可以使用Request.QueryString集合?
答:Request對(duì)象用于讀取瀏覽器的數(shù)據(jù),它除了可以讀取表單字段的內(nèi)容,還可以用來(lái)讀取附帶在網(wǎng)址后面的參數(shù),無(wú)論請(qǐng)求字符串怎樣添加到鏈接地址中對(duì)Request來(lái)說(shuō)都沒有什么不同。使用get方法提交一個(gè)表單,還是跟隨一個(gè)附加查詢串的鏈接查詢字符串中所有的值,都可以使用Request.QueryString集合。
7、問(wèn)題:我在ASP腳本中寫了很多的注釋,這會(huì)不會(huì)影響服務(wù)器處理ASP文件的速度?
答:在編寫程序的過(guò)程中,作注釋是良好的習(xí)慣。經(jīng)國(guó)外技術(shù)人員測(cè)試,帶有過(guò)多注釋的ASP文件整體性能僅僅會(huì)下降0.1%,也就是說(shuō)在實(shí)際應(yīng)用中基本上不會(huì)感覺到服務(wù)器的性能下降的。
8、問(wèn)題:需不需要在每個(gè)ASP文件的開頭使用< % @LANGUAGE=VBScript % >?
答:在每個(gè)ASP文件的開頭使用< % @LANGUAGE=VBScript %>代碼是用來(lái)通知服務(wù)器現(xiàn)在使用VBScript來(lái)編寫程序,但因?yàn)锳SP的預(yù)設(shè)程序語(yǔ)言是VBScript,因此忽略這樣代碼也可以正常運(yùn)行,但如果程序的腳本語(yǔ)言是JavaScrip,就需要在程序第一行指明所用的腳本語(yǔ)言。