范慶廣
摘要:本文先講述了Response對(duì)象特點(diǎn),然后講解了其主要屬性和方法,最后通過實(shí)例說明該對(duì)象在編程中應(yīng)用。
關(guān)鍵詞:ASP;內(nèi)建對(duì)象;屬性;方法;腳本
ASP中有很多對(duì)象,這些對(duì)象能幫助我們來完成很多重要的操作。從簡(jiǎn)單的向客戶端輸出一行文本內(nèi)容到復(fù)雜的數(shù)據(jù)庫(kù)的存取、Cookie、Session的存取以及HTML表單內(nèi)容的獲得等,都離不開對(duì)象的參與。這其中以Response最為常用。下面將對(duì)該對(duì)象進(jìn)行詳細(xì)地講解。
一、Response對(duì)象簡(jiǎn)介
Response對(duì)象是ASP中最為常用的對(duì)象之一。在一段HTML中嵌入了這樣的語句:
<% response.write "您好,這是一個(gè)簡(jiǎn)單ASP程序!" %>
在這條語句中我們就使用了Response對(duì)象。我們使用了該對(duì)象的write方法向客戶端輸出一行文本內(nèi)容“您好,這是一個(gè)簡(jiǎn)單ASP程序!”??蛻舳藶g覽器訪問此頁面便能看到服務(wù)器向其發(fā)送的信息。
講到這里,有的讀者可能會(huì)提出這樣的疑問:對(duì)象是什么?對(duì)象的方法又是什么?其實(shí)要回答這個(gè)問題要涉及到很多復(fù)雜的知識(shí),我們?cè)谶@里可以進(jìn)行一下簡(jiǎn)單的解釋。對(duì)象是面向?qū)ο蟮某绦蛟O(shè)計(jì)中的核心概念,具體說來對(duì)象是具有唯一的對(duì)象名和固定的對(duì)外接口的一組屬性和操作的集合。這樣說來似乎仍然比較抽象,難以理解。但是這并不影響讀者對(duì)ASP的學(xué)習(xí)。讀者可以把ASP中的對(duì)象看作是一種ASP開發(fā)者提供的、可以完成某種功能的特殊的程序。ASP使用者看不到這些程序的代碼,也不需要去關(guān)心這些程序是如何編制的,ASP學(xué)習(xí)者只需要知道這些程序的名字,并且知道如何使用它們就可以了。這些程序就是一個(gè)一個(gè)的對(duì)象,不同的對(duì)象提供了不同的屬性和方法,我們通過操作這些屬性和方法來實(shí)現(xiàn)特定的功能。
我們來舉一個(gè)例子,比如一輛汽車,我們把它作為我們的研究對(duì)象,現(xiàn)在它就是一個(gè)對(duì)象。我們只要提到“汽車”這個(gè)對(duì)象,立刻就會(huì)聯(lián)想出與它有關(guān)的一些信息,比如汽車的顏色、型號(hào)、品牌等等。這些汽車的固有信息,就是對(duì)象的“屬性”。此外汽車還可以完成一些操作,比如打火啟動(dòng)、正常行駛以及剎車、轉(zhuǎn)彎等動(dòng)作,這些動(dòng)作可以看作對(duì)象的“方法”。我們通過對(duì)汽車的屬性和方法的控制來滿足我們的需要,這就是我們對(duì)對(duì)象的使用。
以上只是對(duì)“對(duì)象”作的一個(gè)通俗簡(jiǎn)單的介紹,應(yīng)該說并不準(zhǔn)確和全面。如果讀者想了解更詳細(xì)的信息,可以查閱有關(guān)面向?qū)ο蟮木幊痰挠嘘P(guān)書籍。
二、Response對(duì)象的屬性和方法
現(xiàn)在我們繼續(xù)來看Response對(duì)象。除了write方法之外,Response對(duì)象還有許多其他屬性和方法,用來完成一些復(fù)雜的操作。
Response對(duì)象的主要屬性如下:
1.Buffer:表明頁輸出是否被緩沖;
2.CacheControl:決定代理服務(wù)器是否能緩存ASP生成的輸出;
3.Charset:將字符集的名稱添加到內(nèi)容類型標(biāo)題中;
4.ContentType:指定響應(yīng)的HTTP內(nèi)容類型;
5.Expires:在瀏覽器中緩存的頁面超時(shí)前,指定緩存的時(shí)間;
6.ExpiresAbsolute:指定瀏覽器上緩存頁面超時(shí)的日期和時(shí)間;
7.IsClientConnected:表明客戶端是否與服務(wù)器斷開;
8.Pics:將PICS標(biāo)記的值添加到響應(yīng)的標(biāo)題的PICS標(biāo)記字段中;
9.Status:服務(wù)器返回的狀態(tài)行的值。
Response對(duì)象的主要方法如下:
1.AddHeader:從“名稱”到“值”設(shè)置HTML標(biāo)題;
2.AppendToLog:在該請(qǐng)求的Web服務(wù)器日志條目后添加字符串;
3.BinaryWrite:將給出信息寫入到當(dāng)前HTTP輸出中,并且不進(jìn)行任何字符集轉(zhuǎn)換;
4.Clear:清除任何緩沖的HTML輸出;
5.End:停止處理 .asp 文件并返回當(dāng)前的結(jié)果;
6.Flush:立即發(fā)送緩沖的輸出;
7.Redirect:將重指示的信息發(fā)送到瀏覽器,嘗試連接另一個(gè) URL;
8.Write:將變量作為字符串寫入當(dāng)前的 HTTP 輸出。
通過上述內(nèi)容可以看出,Response對(duì)象的屬性用來對(duì)當(dāng)前頁面或者服務(wù)器連接信息進(jìn)行存取,Response對(duì)象的方法則主要用來實(shí)現(xiàn)某種操作。其中,對(duì)象的屬性我們?cè)跊]有特殊需要時(shí)一般不會(huì)去主動(dòng)修改,因此表1中的內(nèi)容僅供參考,在此不再舉例。表2中列舉了Response對(duì)象的方法,其中有三個(gè)方法較為常用,分別是End方法、Redirect方法和Write方法。下面我們舉例來演示這三個(gè)方法的使用。
Response常用方法的使用。
(一)End方法的使用。新建一個(gè)ASP文檔,輸入以下代碼:存盤為1.asp
這是第一行文字<br>
這是第二行文字<br>
<%
Response.end
%>
這是第三行文字<br>
將程序放入本地主目錄,在瀏覽器中輸入http://locahost/1.asp運(yùn)行該程序。
可以看到,程序運(yùn)行之后,只輸出了Response.end之前的內(nèi)容,而該語句之后的“這是第三行文字”沒有輸出。因?yàn)槌绦驁?zhí)行到Response.end這一行時(shí),該頁面停止處理,僅將前面已經(jīng)處理的內(nèi)容返回發(fā)送到客戶端。因此我們只看到了第一行和第二行文字,之后的內(nèi)容全部被忽略掉了。這個(gè)End方法通常用在頁面出錯(cuò),或者其他原因必須立即停止處理當(dāng)前頁面內(nèi)容等情況下。一旦遇到End方法,整個(gè)ASP頁面停止執(zhí)行。
(二)Write方法的使用。新建一個(gè)ASP文檔,輸入以下代碼:
<font size=3>這是由HTML輸出的</font><br>
<%
Response.write("<font size=2>這是由ASP輸出的。</font><br>")
%>
本程序中,第三行:
Response.write("<font size=2>這是由ASP輸出的。</font><br>")
也可以寫為:
Response.write "<font size=2>這是由ASP輸出的。</font><br>"
也就是文本內(nèi)容可以不用括號(hào)括起來,在write之后空一格,然后用兩個(gè)雙引號(hào)將文本內(nèi)容包裹起來也可以。但是建議讀者還是采用第一種方法,因?yàn)橛袝r(shí)候需要輸出的內(nèi)容比較復(fù)雜,使用雙括號(hào)不容易出錯(cuò)。
(三)Redirect方法的使用。新建一個(gè)ASP文檔,輸入以下代碼:存盤為3.asp
內(nèi)容<br>
<%
Response.redirect (“1.asp”)
%>
程序運(yùn)行之后,讀者會(huì)發(fā)現(xiàn)瀏覽器中并沒有顯示3.asp中的內(nèi)容,而是顯示了1.asp的運(yùn)行結(jié)果,這是為什么呢?就是因?yàn)楫?dāng)程序執(zhí)行到Response.redirect語句時(shí),程序自動(dòng)轉(zhuǎn)到1.asp頁面執(zhí)行,因此最終看到的是1.asp的內(nèi)容。而先前3.asp中輸出的內(nèi)容由于停留時(shí)間太短而沒有被我們看到。
三、總結(jié)
值得注意的是,在ASP中對(duì)象和方法名不區(qū)分大小寫,因此Response.end和response.End這樣的寫法都正確,甚至大寫和小寫隨意混合也不要緊。但是盡管如此,為了養(yǎng)成良好的編程習(xí)慣,我們一般應(yīng)把對(duì)象名單詞的第一個(gè)字母大寫,或者全部大寫,而方法或者屬性名全部小寫,如Response.end,這樣程序容易閱讀。
參考文獻(xiàn):
[1].Web開發(fā)技術(shù).北京:水力出版社,2015。