ASP編程入門進(jìn)階(五):內(nèi)置對(duì)象Response
更新時(shí)間:2007年01月03日 00:00:00 作者:
通過對(duì)Request對(duì)象的學(xué)習(xí),可以了解到,Request對(duì)象是服務(wù)器端用來(lái)獲取客戶端的信息的。
但作為服務(wù)器和客戶端進(jìn)行交互,是不是還缺少服務(wù)器端向客戶端發(fā)送信息呢?對(duì)象Response正是擔(dān)任此責(zé)任。
負(fù)責(zé)將信息傳遞給用戶的對(duì)象就是Response了,它可動(dòng)態(tài)地響應(yīng)客戶端的請(qǐng)求,并將動(dòng)態(tài)生成的響應(yīng)結(jié)果返回給客戶端瀏覽器。
一,Response.write
在Response中write方法是使用最頻繁的一個(gè)了,write就是寫:將指定的字符串寫到當(dāng)前的 HTTP 輸出。
1,write.asp
response.write后面為所顯示的信息,可以用括號(hào)包含,也可以直接書寫(注意和response.write之間有空格)。
書寫的字符串信息或者HTML代碼相關(guān),用引號(hào)包含;而ASP本身的函數(shù)或變量則不需要,直接用即可。
并且無(wú)論字符串信息、HTML代碼、函數(shù)還是變量之間進(jìn)行連接都是采用&號(hào)(針對(duì)vbscript)
以上遇到一個(gè)隨機(jī)函數(shù)rnd(),該函數(shù)返回一個(gè)小于 1 但大于或等于 0 的值。
需要注意的是在調(diào)用 Rnd 之前,先使用無(wú)參數(shù)的 Randomize 語(yǔ)句初始化隨機(jī)數(shù)生成器,該生成器具有基于系統(tǒng)計(jì)時(shí)器的種子。
若缺少Randomize,則無(wú)法繼續(xù)生成隨機(jī)種子。
下面一個(gè)利用隨機(jī)函數(shù)的例子,產(chǎn)生隨機(jī)背景顏色效果:
[Ctrl+A 全部選擇進(jìn)行拷貝 提示:可先修改部分代碼,再點(diǎn)擊運(yùn)行]
當(dāng)然要產(chǎn)生指定范圍的隨機(jī)整數(shù),請(qǐng)使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
這里, upperbound 是此范圍的上界,而 lowerbound 是此范圍內(nèi)的下界。
[Ctrl+A 全部選擇進(jìn)行拷貝 提示:可先修改部分代碼,再點(diǎn)擊運(yùn)行]
隨機(jī)函數(shù)在做考試系統(tǒng)的時(shí)候非常有用,當(dāng)然你也可以用來(lái)自己搖獎(jiǎng),拿個(gè)頭彩也分點(diǎn)我就行了
二,Response.end
這是Response常用的一種方法,使 Web 服務(wù)器停止處理腳本并返回當(dāng)前結(jié)果,文件中剩余的內(nèi)容將不被處理。
主要放在一頁(yè)多功能的ASP頁(yè)中,為讓程序運(yùn)行到此,抑或往下的程序沒必要再執(zhí)行顯示……
2,end.asp
三,Response.clear
該方法主要作用是清除緩沖區(qū)中的所有 HTML 輸出,但該方法只清除響應(yīng)正文而不清除響應(yīng)標(biāo)題。
該方法和end方法似相反,end是到此結(jié)束返回上面的結(jié)果,而clear卻是清除上面的執(zhí)行,然后只返回下面的結(jié)果。
3,clear.asp
下面通過一個(gè)例子來(lái)仔細(xì)看看end and clear
4,end2clear.asp
以上程序中,當(dāng)輸入用戶名和密碼同為cnbruce的時(shí)候會(huì)發(fā)現(xiàn)clear方法的處理結(jié)果,反之是另外一個(gè)效果。
四,Response.redirect
Redirect 方法是讓瀏覽器立即重定向到程序指定的URL地址。這在根據(jù)客戶的不同響應(yīng),為不同的客戶指定不同的頁(yè)面,或根據(jù)不同的情況指定不同的頁(yè)面時(shí),顯得非常重要。
該方法是立即生效的,在其后的腳本都不執(zhí)行。
5,redirect.asp
以上四則運(yùn)用屬于Response對(duì)象的幾個(gè)比較重要的方法:write、end、clear、redirect等當(dāng)然方法還有:AddHeader、AppendToLog、BinaryWrite、Flush……
早說過,一個(gè)ASP對(duì)象除了對(duì)象方法外,還有對(duì)象屬性
那response對(duì)象的屬性有哪些呢?
五,Response.ContentType
ContentType 屬性指定服務(wù)器響應(yīng)的 HTTP 內(nèi)容類型。如果未指定 ContentType,默認(rèn)為 text/html。
6,contenttype.asp(非text/html的)
六,Response.charset
Charset 屬性將字符集名稱附加到 Response 對(duì)象中 content-type 標(biāo)題的后面,用來(lái)設(shè)置服務(wù)器響應(yīng)給客戶端的文件字符編碼。
7,charset.asp
當(dāng)然Response.ContentType和Response.charset應(yīng)用得比較少了。直接在head頭部屬性里面添加就OK了。
七,Response.expires
該屬性指定了在瀏覽器上緩沖存儲(chǔ)的頁(yè),距過期還有多少時(shí)間。
如果用戶在某個(gè)頁(yè)過期之前又回到此頁(yè),就會(huì)顯示緩沖區(qū)中的頁(yè)面。
但若設(shè)置 response.expires=0,則可使緩存的頁(yè)面立即過期。
這是一個(gè)較實(shí)用的屬性,當(dāng)客戶通過 ASP 的登陸頁(yè)面進(jìn)入 WEB 站點(diǎn)后,應(yīng)該利用該屬性使登陸頁(yè)面立即過期,以確保安全。
引用一個(gè)經(jīng)典的例子
8,expires.asp
八,Response.status
設(shè)置服務(wù)器要響應(yīng)的狀態(tài)行的值。Response.status="狀態(tài)描述字符串",字符串可以為一個(gè)三位整數(shù)或一串說明文字組成,但必須防在<html>之前。
9,status.asp
九,Response.buffer
比較重要的一個(gè),值為true or false。該屬性指示是否緩沖頁(yè)輸出。
引用:當(dāng)緩沖頁(yè)輸出時(shí),只有當(dāng)前頁(yè)的所有服務(wù)器腳本處理完畢或者調(diào)用了 Flush 或 End 方法后,服務(wù)器才將響應(yīng)發(fā)送給客戶端瀏覽器,服務(wù)器將輸出發(fā)送給客戶端瀏覽器后就不能再設(shè)置 Buffer 屬性。因此應(yīng)該在 .asp 文件的第一行調(diào)用 Response.Buffer。
對(duì)于Response對(duì)象的屬性和方法先到這里,剩下一個(gè)數(shù)據(jù)集合,即cookie。
繼續(xù)看cookies講座吧。
應(yīng)用舉例題
表單發(fā)OutLook郵件
[Ctrl+A 全部選擇進(jìn)行拷貝 提示:可先修改部分代碼,再點(diǎn)擊運(yùn)行]
ASP的
但作為服務(wù)器和客戶端進(jìn)行交互,是不是還缺少服務(wù)器端向客戶端發(fā)送信息呢?對(duì)象Response正是擔(dān)任此責(zé)任。
負(fù)責(zé)將信息傳遞給用戶的對(duì)象就是Response了,它可動(dòng)態(tài)地響應(yīng)客戶端的請(qǐng)求,并將動(dòng)態(tài)生成的響應(yīng)結(jié)果返回給客戶端瀏覽器。
一,Response.write
在Response中write方法是使用最頻繁的一個(gè)了,write就是寫:將指定的字符串寫到當(dāng)前的 HTTP 輸出。
1,write.asp
<% response.write("hello,world"&"<br>") Randomize response.write "任意數(shù)是"&rnd()&"<br>" %> |
response.write后面為所顯示的信息,可以用括號(hào)包含,也可以直接書寫(注意和response.write之間有空格)。
書寫的字符串信息或者HTML代碼相關(guān),用引號(hào)包含;而ASP本身的函數(shù)或變量則不需要,直接用即可。
并且無(wú)論字符串信息、HTML代碼、函數(shù)還是變量之間進(jìn)行連接都是采用&號(hào)(針對(duì)vbscript)
以上遇到一個(gè)隨機(jī)函數(shù)rnd(),該函數(shù)返回一個(gè)小于 1 但大于或等于 0 的值。
需要注意的是在調(diào)用 Rnd 之前,先使用無(wú)參數(shù)的 Randomize 語(yǔ)句初始化隨機(jī)數(shù)生成器,該生成器具有基于系統(tǒng)計(jì)時(shí)器的種子。
若缺少Randomize,則無(wú)法繼續(xù)生成隨機(jī)種子。
下面一個(gè)利用隨機(jī)函數(shù)的例子,產(chǎn)生隨機(jī)背景顏色效果:
[Ctrl+A 全部選擇進(jìn)行拷貝 提示:可先修改部分代碼,再點(diǎn)擊運(yùn)行]
當(dāng)然要產(chǎn)生指定范圍的隨機(jī)整數(shù),請(qǐng)使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
這里, upperbound 是此范圍的上界,而 lowerbound 是此范圍內(nèi)的下界。
[Ctrl+A 全部選擇進(jìn)行拷貝 提示:可先修改部分代碼,再點(diǎn)擊運(yùn)行]
隨機(jī)函數(shù)在做考試系統(tǒng)的時(shí)候非常有用,當(dāng)然你也可以用來(lái)自己搖獎(jiǎng),拿個(gè)頭彩也分點(diǎn)我就行了

二,Response.end
這是Response常用的一種方法,使 Web 服務(wù)器停止處理腳本并返回當(dāng)前結(jié)果,文件中剩余的內(nèi)容將不被處理。
主要放在一頁(yè)多功能的ASP頁(yè)中,為讓程序運(yùn)行到此,抑或往下的程序沒必要再執(zhí)行顯示……
2,end.asp
<%response.write now() response.end '程序執(zhí)行顯示到此結(jié)束 response.write rnd()%> |
三,Response.clear
該方法主要作用是清除緩沖區(qū)中的所有 HTML 輸出,但該方法只清除響應(yīng)正文而不清除響應(yīng)標(biāo)題。
該方法和end方法似相反,end是到此結(jié)束返回上面的結(jié)果,而clear卻是清除上面的執(zhí)行,然后只返回下面的結(jié)果。
3,clear.asp
<%response.write now() response.clear '以上程序到此全被清除 response.write rnd()%> |
下面通過一個(gè)例子來(lái)仔細(xì)看看end and clear
4,end2clear.asp
<% filepath=request.servervariables("script_name") user=Request.Form("username") pwd=Request.Form("password") %> <form method="POST" action="<%=filepath%>"> name:<input type="text" name="username"><br> pwd:<input type="password" name="password"><br> <input type="submit" value="submit"> </form> <% If user="cnbruce" and pwd="cnbruce" Then response.write "采用clear方法,上面的程序結(jié)果將清除。" response.clear ' 清空存儲(chǔ)在緩存中的頁(yè)面 Else response.write "采用end方法,下面的程序?qū)⑼_\(yùn)。" Response.End ' 立即停止腳本處理,并將緩存中的頁(yè)面輸出 End If %> 如果你只看到“刷新”鏈接就表明clear方法已經(jīng)生效<br> <a href="<%=filepath%>">刷新</a> |
以上程序中,當(dāng)輸入用戶名和密碼同為cnbruce的時(shí)候會(huì)發(fā)現(xiàn)clear方法的處理結(jié)果,反之是另外一個(gè)效果。
四,Response.redirect
Redirect 方法是讓瀏覽器立即重定向到程序指定的URL地址。這在根據(jù)客戶的不同響應(yīng),為不同的客戶指定不同的頁(yè)面,或根據(jù)不同的情況指定不同的頁(yè)面時(shí),顯得非常重要。
該方法是立即生效的,在其后的腳本都不執(zhí)行。
5,redirect.asp
<%response.redirect("http://www.cnbruce.com/")%> |
以上四則運(yùn)用屬于Response對(duì)象的幾個(gè)比較重要的方法:write、end、clear、redirect等當(dāng)然方法還有:AddHeader、AppendToLog、BinaryWrite、Flush……
早說過,一個(gè)ASP對(duì)象除了對(duì)象方法外,還有對(duì)象屬性
那response對(duì)象的屬性有哪些呢?
五,Response.ContentType
ContentType 屬性指定服務(wù)器響應(yīng)的 HTTP 內(nèi)容類型。如果未指定 ContentType,默認(rèn)為 text/html。
6,contenttype.asp(非text/html的)
<% Response.ContentType = "text/HTML" %> <% Response.ContentType = "image/GIF" %> <% Response.ContentType = "image/JPEG" %> <% Response.ContentType = "text/plain" %> <% Response.ContentType = "image/JPEG" %> |
六,Response.charset
Charset 屬性將字符集名稱附加到 Response 對(duì)象中 content-type 標(biāo)題的后面,用來(lái)設(shè)置服務(wù)器響應(yīng)給客戶端的文件字符編碼。
7,charset.asp
<% Response.charset = "big5" %> 中文顯示,但采用的big5繁體的編碼,所以看到的是亂碼。 |
當(dāng)然Response.ContentType和Response.charset應(yīng)用得比較少了。直接在head頭部屬性里面添加就OK了。
七,Response.expires
該屬性指定了在瀏覽器上緩沖存儲(chǔ)的頁(yè),距過期還有多少時(shí)間。
如果用戶在某個(gè)頁(yè)過期之前又回到此頁(yè),就會(huì)顯示緩沖區(qū)中的頁(yè)面。
但若設(shè)置 response.expires=0,則可使緩存的頁(yè)面立即過期。
這是一個(gè)較實(shí)用的屬性,當(dāng)客戶通過 ASP 的登陸頁(yè)面進(jìn)入 WEB 站點(diǎn)后,應(yīng)該利用該屬性使登陸頁(yè)面立即過期,以確保安全。
引用一個(gè)經(jīng)典的例子
8,expires.asp
<% Response.Expires = 0 Response.Expiresabsolute = Now() - 1 Response.AddHeader "pragma","no-cache" Response.AddHeader "cache-control","private" Response.CacheControl = "no-cache" %> |
八,Response.status
設(shè)置服務(wù)器要響應(yīng)的狀態(tài)行的值。Response.status="狀態(tài)描述字符串",字符串可以為一個(gè)三位整數(shù)或一串說明文字組成,但必須防在<html>之前。
9,status.asp
<% Response.Status = "401 Unauthorized" %> |
九,Response.buffer
比較重要的一個(gè),值為true or false。該屬性指示是否緩沖頁(yè)輸出。
引用:當(dāng)緩沖頁(yè)輸出時(shí),只有當(dāng)前頁(yè)的所有服務(wù)器腳本處理完畢或者調(diào)用了 Flush 或 End 方法后,服務(wù)器才將響應(yīng)發(fā)送給客戶端瀏覽器,服務(wù)器將輸出發(fā)送給客戶端瀏覽器后就不能再設(shè)置 Buffer 屬性。因此應(yīng)該在 .asp 文件的第一行調(diào)用 Response.Buffer。
Response.buffer=true |
對(duì)于Response對(duì)象的屬性和方法先到這里,剩下一個(gè)數(shù)據(jù)集合,即cookie。
繼續(xù)看cookies講座吧。
應(yīng)用舉例題
表單發(fā)OutLook郵件
[Ctrl+A 全部選擇進(jìn)行拷貝 提示:可先修改部分代碼,再點(diǎn)擊運(yùn)行]
ASP的
<% submitname=request.form("submit") if submitname="submit" then email=request.form("email") cc=request.form("cc") subject=request.form("subject") body=request.form("body") response.redirect("mailto:"&email&"?cc="&cc&"&subject="&subject&"&body="&body) else %> <form name="form1" method="post" action="email.asp"> email:<input name="email"><br> cc:<input name="cc"><br> subject:<input name="subject"><br> body:<input name="body"><br> <input type="submit" name="submit" value="submit"> </form> <%end if%> |
相關(guān)文章
asp實(shí)現(xiàn)批量錄入數(shù)據(jù)的實(shí)現(xiàn)
asp實(shí)現(xiàn)批量錄入數(shù)據(jù)的實(shí)現(xiàn)...2006-12-12一個(gè)可以自動(dòng)創(chuàng)建多級(jí)目錄的函數(shù)
一個(gè)可以自動(dòng)創(chuàng)建多級(jí)目錄的函數(shù)...2007-02-02保證asp葉面一定不會(huì)出現(xiàn)亂碼 UTF8
保證asp葉面一定不會(huì)出現(xiàn)亂碼 UTF8...2006-10-10整理了一個(gè)editplus的剪輯文件(ASP方面的內(nèi)容)
整理了一個(gè)editplus的剪輯文件(ASP方面的內(nèi)容)2006-06-06FileSystem對(duì)象常用的文件操作函數(shù)有哪些?
FileSystem對(duì)象常用的文件操作函數(shù)有哪些?...2006-06-06ASP Recordset 分頁(yè)顯示數(shù)據(jù)的方法(修正版)
最近給別人培訓(xùn)asp 分頁(yè),對(duì)于asp的入門新手來(lái)說,最簡(jiǎn)單的分頁(yè)就是用Recordset 分頁(yè)技術(shù)了,他主要用于一些少量數(shù)據(jù)的分頁(yè),對(duì)于新手學(xué)習(xí)是最好的了,對(duì)于大量數(shù)據(jù)分頁(yè)不建議用。2008-11-11asp向數(shù)據(jù)庫(kù)插入數(shù)據(jù)的方法rs
用adodb.recordset實(shí)現(xiàn)數(shù)據(jù)庫(kù)的插入方法2008-04-04