对象的属性及方法在ASP中极其常用。下面几节将针对Response对象的常用属性、方法及集合进行详细讲解,对于不常用的也给出了说明。
一、Response对象的常用属性
1、 Buffer属性
其值为布尔型,即只有True和False两种情况,表明输出的Asp页是否被缓冲, 使用Buffer属性后,只有当前页的所有服务器脚本处理完毕或者调了 Flush 或 End 方法后,服务器才将响应发送给浏览器,在服务器将部分响应发送给浏览器后就不能再设置 Buffer 属性,因此通常在 .asp 文件的第一行调用 Response.Buffer。
设置Buffer属性方法如下:
<%Response.Buffer=True
2、 ContentType属性
ContentType 属性指定服务器响应的 HTTP 内容类型。如果未指定 ContentType,默认为 text/HTML。即在服务器响应的 HTTP中显示content-type:text/html。如果要用到特殊的ContentType属性,应按照以下示例中的方式调用:
<%Response.ContentType="text/css" %>
3、 Charset属性
Charset属性用于设置字符集的名称并将其添加到内容类型标题(content-type)的后面,若未在Asp页中设置Charset属性,则content-type为content-type:text/html,若将Charset属性设置为"gb2312"则content-type为content-type:text/html; charset=gb2312。
设置Charset属性的方法如下:
<% Response.Charset="gb2312" %>
小技巧:
无论设置的字符集是否有效,该设置都会将设置的字符集写到内容类型标题(content-type)后面,所以在使用该属性时要保证设置字符集的有效性。
如果页面包含多个Charset设置,则以最后一次被执行的Charset设置为准。
常用的字符集还有ASCII Latin1 gb2312 big5 gbk gb18030 Unicode等,如果要做国际化网站建议使用Unicode。
4、 Expires属性
Expires属性用于指定在浏览器缓存页面距超时还有多少时间,若用户在指定时间内回到此页,服务器会将缓存的页面返回给用户,设置的数字的单位是分。
设置Expires属性的方法如下:
<% Response.Expires=3 %>
上例表示本页三分钟后超时。
小技巧:
设置Response.Expires=0则使缓存页浏览后立即超时,这样做可以确保页面信息的安全。
5、 ExpiresAbsolute属性
ExpiresAbsolute属性与Expires属性类似,只是其值应设置为一个具体时间。
下例表示缓存页到2006年10月30日 20:22:00过期:
<% Response.ExpiresAbsolute=#Oct 30,2006 20:22:00# %>
6、 IsClientConnected属性
该属性为只读属性,用于判断上次向浏览器输出响应后,浏览器是否仍和服务器连 接。
7、 CacheControl属性
CacheControl属性用于决定代理服务器是否能缓存ASP生成的输出,默认值为False。如果将其设置为True将会大大降低网站的安全性。
8、 Pics属性
将PICS标记的值添加到响应的标题的PICS标记字段中,指定某一网页的内容级 别,如:暴力、色情、儿童不宜等。
该属性的使用方法:
<%Response.Pics("相关字符串")%>
9、 Status属性
Status属性服务器返回的状态行的值。
该属性的使用方法:
<%Response.Status="状态描述字符串"%>
二、Response对象的常用方法
1、Write方法
将变量作为字符串写入当前的HTTP输出
几种使用方法:
<%Response.Write"输出内容"%>
或:
<%Response.Write("输出内容")%>
如果要输出变量则用如下方法:
<%
Dim s
s="输出内容"
Response.Write(s)
%>
小技巧:
在直接输出到浏览器时通常可用
<%= s %>
来代替
<% Response.Write (s) %>
小技巧:
如要输出一个”,可以将”用两个双引号代替,例如:
<% Response.Write (””””) %>
在浏览器上输出的内容就是”了
小技巧:
对于HTML与服务器变量的交替输出,请不要将HTML代码与输出语句混写,例如:
<% For i=1 to
<a href=”#”><% =i %></a>
<% Next %>
此类情况最好写成:
<% For i=1 to
Response.Write ”<a href=””#””>” & i & ”</a>”
Next %>
因为在前一种写法中服务器端解析器不断在HTML与VBScript中跳转将会很大程度上影响执行速度。
小技巧:
对于输出大量连接而成的字符串,通常使用以下方法:
<%
Forto
a=a & i
Next
Response.Write (a)
%>
但如果面对很大的数量,如
<%
Forto
a=a & i
Next
Response.Write (a)
%>
的情况下,执行会极其之慢(大概12秒)。
这是因为VBScript在申请字符串变量的内存是要浪费大量时间。
但可以通过以下代码提高效率,使执行时间接近300毫秒。
<%
a=Spc(50000)
Forto
a=mid( a , i , 1)
Next
Response.Write (a)
%>
2、Redirect方法
将页面转向一个URL:
使用方法:
<%
Response.ReDirect (”http://www.eice.com.cn”)
%>
则页面将跳转到http://www.eice.com.cn
小技巧:
网页的重定向也可以用Server对象的Transfer方法。
但Server. Transfer与Response.ReDirect 有所不同。
Response.ReDirect可以转向任意网页、而Server. Transfer只能转向本虚拟目录下的网页。
Response.ReDirect不可以传递网页参数、而Server. Transfer却可以传递参数。
Response.ReDirect跳转后浏览器中显示的URL也随之改变、而Server. Transfer却仍显示原来的URL。
3、End方法
End 方法使 Web 服务器停止处理脚本并返回当前结果。文件中剩余的内容将不被处理。如果 Response.Buffer 已设置为 TRUE,则调用 Response.End 将缓冲输出。
例如:
<%
Response.Write"1"
Response.End()
Response.Write"2"
%>
则浏览器中输出的结果为1
End方法执行后即按本页执行完毕处理。
小技巧:
在网页中有错误,但还不能确定错误所在位置时。
可以添加一个Response.End并通过移动其位置,起到调试程序的目的。
4、Flush方法
Flush 方法立即发送缓冲区中的输出。如果没有将 Response.Buffer 设置为 TRUE,则该方法将导致运行时错误。
5、Clear 方法
可以用 Clear 方法清除缓冲区中的所有 HTML 输出。但 Clear 方法只清除响应正 文而不清除响应标题。可以用该方法处理错误情况。但是如果没有将 设置为 TRUE,则该方法将导致运行时错误。
6、BinrayWrite方法
将信息写入到当前HTTP输出中,并且不进行任何字符集转换。通常用于输出图片文件。
7、AppendToLog方法
在请求的Web服务器日志条目后添加字符串。
8、AddHeader方法
从名称到值设置HTML标题。
二、Response对象的常用集合
Response对象的集合只有一个,就是cookies,Cookies 集合用于设置 cookie 的值。若指定的 cookie 不存在,则创建它。若存在,则设置新的值并且将过去存储的值删去。
语法
Response.Cookies(cookie)[(key)|.attribute]=value
这里的 cookie 是指定 cookie 的名称。而如果指定了 key,则该 cookie 就是一个字典。attribute 指定 cookie 自身的有关信息。attribute 参数可以是下列之一 :
1、Domain
只写属性,该值若被指定,则 cookie 将被发送到对该域的请求中去。
2、Expires
只写属性,该值指定 cookie 的过期日期。为了在会话结束后将 cookie 存储在客户端磁盘上,必须设置该日期。若此项属性的设置未超过当前日期,则在任务结束后 cookie 将到期。
3、HasKeys
该值指定 cookie 是否包含关键字。
4、Path
该值若被指定,则 cookie 将只发送到对该路径的请求中。如果未设置该属性,则使用应用程序的路径。
5、Secure
用于设定Cookies是否在一个安全的渠道传递。当一个安全渠道没有在HTTP首页被发现,Cookies信息将不被发送。
下面给出一个cookie的使用示例:
<%
Request.Cookies("Eice")("UserName")="admin" ''设置名为Eice的cookie的UserName字段的值
Request.Cookies("Eice")("PassWord")="admin" ''设置名为Eice的cookie的PassWord字段的值
Request.Write(Request.Cookies("Eice")("UserName"))''取出名为Eice的cookie的UserName字段的值
Request.Write(Request.Cookies("Eice")(" PassWord "))''取出名为Eice的cookie的UserName字段的值
%>