教学前言
课程介绍
师资介绍
教材介绍
课程计划
教学大纲
教学计划
实训计划
课程总表
教学内容
作业考试
作业上传
在线测试
测验考试
互动讨论
学习论坛
疑难解答
意见建议
 
 
章节:
第4章 ASP的内置对象
第2节 Response对象 FLASH版演示教案
教学目的:
掌握Response对象数据集合、属性和方法;
重点:
了解Response对象的概述;

掌握Response对象数据集合、属性和方法
难点:
数据集合Cookies
内容:

Response对象的作用是向客户端浏览器发送信息。当需要将服务器端的数据用超文本的格式发送到客户端的浏览器时,可以使用Response对象来实现这个功能,也就是可以动态的创建Web页面,改变HTTP标题头,还可以自动将客户端重定向(Redirect)到一个指定的页面中。一般来说,该对象与Request对象通常是互相配合使用,以实现服务器端和浏览器端的数据传送,这也正是网页实现动态功能的基础。
Response对象语法如下:
Response.数据集合|属性|方法(变量或字符串)
下面我们分别对Response对象的数据集合、属性和方法来加以说明。
4.2.1 Response对象数据集合
Response对象只有Cookies一个数据集合,Cookies数据集合允许将数据设置在客户端的浏览器中,假设指定的Cookie不存在,那么系统将会在客户端创建新的Cookies,相反,如果指定的Cookie存在,则会先将其删除后再创建。
语法如下:
Response.Cookies("Cookiesname")[(Key)|. Attribute]=Cookiesvalue
Cookiesname::指Cookie的名称。
Key:关键字,是可选参数,如果指定了Key,则该Cookie就是一个集合,它包含几个关键字,可以分别赋值。
Attribute:属性,是指定Cookie自身的有关信息,其中Attribute属性见表4-3。

表4-3 Attribute属性
名称
说明
Domain 只写。若被指定,则Cookie将被发送到对该域的请求中去
Expires 只写。指定Cookie的过期日期。为了在会话结束后将Cookie存储在客户端磁盘上,必须设置该日期。若此项属性的设置未超过当前日期,则在任务结束后Cookie将到期
HasKeys 只读。指定Cookie是否包含关键字
Path 只写。若被指定,刚Cookie将只发送到对该路径的请求中。如果未设置该属性,则使用应用程序的路径
Secure 只写。指定Cookie是否安全

范例4-8:sample4-8.asp,利用Cookies来统计某用户访问某站点次数
<html>
<head>
<title> Cookies数据集合范例</title>
</head>
<body>
<%
dim num
num=request.cookies("visitnum")
if num<>"" then
num=num+1
response.write"您是第"& num & "次访问本站点。"
else
response.write"您是首次访问本站点。"
num=1
end if
response.cookies("visitnum")=num
%>
</body>
</html>
 点击浏览sample4-8.asp效果(打开此页面二次,注意观察页面对您访问次数的计数)。
4.2.2 Response对象属性
Response对象有9个可用属性,它们是Buffer、CaheControl、Charset、ContentType、Expires、ExpiresAbsolute、IsClientConnected、Pics、Status等。这里我们只对常用的几个属性做详细介绍。
1. Buffer属性
Buffer是指定是否将输出页面先保存到缓存。
一般来说,服务器处理ASP时,每执行一条命令就将输出立即送到浏览器中,即边处理边输出。但在某些情况下需要缓存,直到服务器处理完整个页面才将页面送到浏览器,通过页面缓存,可以根据不同情况显示出两个不同的页面。
Buffer值为布尔值,在早期版本中,默认为False,表示所传信息不放入缓冲区而直接被服务器传送到浏览器,此时服务器同时处理并传送网页;而现在ASP版本,默认为True。当Buffer值为True时表示把页面输出至缓冲区,文件未处理完时均被先存入缓冲区,等文件的所有脚本都处理完才由服务器传送给客户端。如果服务器在处理文件的过程中接受到Flush或End调用,则缓冲区的文件也会被立即传送给客户端,不管文件是否处理完毕。
Buffer不能在服务器已经向客户端发送输出后再设置,因此对Response.Buffer的调用必须放在ASP文件的第一行。

如果页中使用了Response.Redirect,必须把Response.Buffer设为True


可以用以下语句设置Buffer属性:
<%
Response.Buffer=布尔值
%>
在下面的例子中,sample4-9.asp可以根据Buffer值来决定是否撤消反馈。当输入yes时,用Response.Clear取消前面的反馈信息,用Response.Redirect将用户引导到Cookie设置页面,用Response.End停止反馈。
范例4-9:
<% Response.Buffer=true%>
<html>
<head>
<titile>Buffer设置范例</title>
</head>
<body>
<% if isEmpty(Request.Form("BufferValue"))then
Response.write"<H4>请设置BufferValue</H4>"
Else
Response.Write"BufferValue="&Request.Form("BufferValue")
End if
%>
<form method="post" action="">
<p>
是否撤消响应:<input name="BufferValue" value="no">
<p>
<input type=submit value="显示"><input type=reset value="重选">
</form>
<%if Request.Form("BufferValue")="yes" then
Response.Clear
Response.Redirect"cookie.asp"
Response.End
Else
Response.Write"BufferValue="&Request.Form("BufferValue")
End if
%>
</body>
</html>
下面两个例子可以更清楚的看出Buffer设置不同值时,出现不同的显示结果。
范例4-10:Buffer值为False
<html>
<head>
<title>Buffer值范例</title>
</head>
<boyd>
<%
response.write("欢迎您")
response.write("访问")
response.write("盛达网站")
%>
</body>
</html>
运行结果在浏览器上依次显示:“欢迎您”、“访问”、“盛达网站”。
因为Buffer值默认为False,表示所传信息不放入缓冲区而直接被服务器传送到浏览器。命令执行后,从上到下逐条顺序显示服务器端利用response对象传回的字符串。
范例4-11:Buffer值为true
<%response.buffer=true%>
<html>
<head>
<title> Buffer值范例</title>
</head>
<body>
<%
response.write("欢迎您")
response.write("访问")
response.write("盛达网站")
%>
</body>
</html>
运行结果在浏览器上一次性显示:“欢迎您访问盛达网站”。
2.ContentType属性
该属性用来指定响应的HTTP内容类型,其默认值为”text/html”,即将所需信息转换成文本并以HTML标志为格式。有几种响应文本的媒体类型如:“image/gif”、“text/plain”,“application/rtf”等都可以通过Response对象的ContentType属性来设置。
语法如下:
Response.ContentType[=描述类型的字符串]
3.Expires属性
Expires属性指定了在浏览器上缓冲存储的页距过期还有多少时间。如果你的信息每过2分钟自动存取一次,则可以将Expires值设置为2,这样2分钟后再读取的网页就是最新网页。如果设为0,则间隔时间为0,这样客户端每次都可以从服务器而不是浏览器上得到最新的网页。如果用户在某个页过期之前又回到此页,该显示缓冲区中的页面。这种设置有助于数据的保密。
通过把Expires设置为0,可以让缓存的页面立即过期。代码如下:
<%
Response.Expires=0
%>
Expires属性也常用来保证登录安全性,当用户通过ASP的登录页面进入Web站点时,使用Expires属性使登录页面立即过期,以确保安全。
Expires值特别适用于信息瞬息万变的网页,例如股市行情和气象信息发布。
Expires属性设置必须在服务器端进行刷新,如果在驻留时间前进行刷新,则要重新显示缓冲区脚本。
4.ExpiresAbsolute属性
ExpiresAbsoulte属性用来刷新被缓存页面的具体时间和日期。
如果在传入属性值时,时间未给定,那么Web页面会在当天午夜零点被清除。如果日期未给定,那么该页就会在脚本运行当天的指定时间被清除。
例如:
<%Response.ExpiresAbsolute=#may 12,2004 13:30:35# %>
指定页面到期时间为2004年5月12日13点30分35秒。
利用ExpiresAbsolute或Expires属性可以实现在页面每次被请求时都明确告诉浏览器获得此页面的最新版本。
5.CacheControl属性
为了减少在互联网上接受主页的时间,许多人都使用了代理服务器。该属性可以用来设置Web服务器是否将ASP的处理结果暂时存放在代理服务器上,如果客户端的浏览器没有设置,则这个属性值不起作用。语法如下:
Response.CacheControl=属性值
CacheControl的属性值为Public或Private两种,前者表示代理服务器可以缓冲由ASP产生的输出,Web服务器将ASP的处理结果暂时存放在代理服务器上,后者则不会。
6.Charset属性
Charset属性将字符集名称附加到Response对象中content-type标题的后面,用来设置Web服务器响应给客户端的文件字符编码。语法如下:
Response.Charset(字符集名称)
7.IsClientConnected属性
IsClientConnected属性只读,它指示自上次调用Response.Write之后,客户端是否与服务器相连。该属性允许用户在客户端与服务器没有连接的情况下有更多的控制。语法如下:
Response.IsClientConnected()
8.Pics属性
Pics属性向响应标题的pics标签字段添加值。PICS(The Platform for Internet Content Selection)是一个负责定义互关网网络等级数据的W3C团体。语法如下:
Response. Pics (Pics字符串)
9.Status属性
Status属性用来设置Web服务器要响应的状态行的值,对于每一个请求的网页,服务器都会报告其状况。HTTP规格中定义了Status值。语法如下:
Response.status="状态描述字符串"
“状态描述字符串”为一个三位数和一串说明文字组成,例如:401码的状态是没有权限。必须把该属性放在<HTML>标签之前,否则会出错。
4.2.3 Response对象方法
Response对象的方法包括:AppendToLog、BinaryWrite、AddHeader、Clear、End、Flush、Redirect、Write等。
1.Write方法
Response.Write是Response对象最常用的方法,该方法可以向浏览器输出动态信息。
Write方法语法如下:
Response.write 数据类型
数据类型可以一个字符串,或是用连接符“&”连接起来的多个字符串。只要是ASP中合法的数据类型,都可以用Response.Write方式来显示。
可以在Response.write语句中加入任何HTML标记,例如加入br或p标记来换行。
范例4-12:sample4-12.asp,分行输出
<html>
<head>
<title>Response.write范例</title>
</head>
<body>
<%
response.write"您是第1次访问本站点。" &"<br>"
response.write"欢迎您常来~"
%>
</body>
</html>
 点击浏览sample4-12.asp效果。
当然,用定界符和等号也可以灵活地向浏览器输出动态信息,<%=变量%>,“=”表示取一个变量的值。
因此,上例代码可以改写成:
<html>
<head>
<title>Response.write范例</title>
</head>
<body>
<%="您是第1次访问本站点。" %><br>
<%="欢迎您常来~"%>
</body>
</html>
2.Flush方法
该方法可以立即发送缓冲区中的数据。Response.buffer需设为真,否则该方法将会导致运行错误。
Flush方法语法如下:
Response.Flush
3.End方法
该方法使Web服务器停止处理脚本并返回当前结果,文件中剩余的内容将不会被处理。若Response.buffer已设置为真,则调用Response.end将缓冲输出。
End方法语法如下:
Response.end
该方法与Flush方法不同的是,在调用了Flush方法方法后,服务器端仍然会继续处理页面,而不是像End方法那样停止处理所有页面。因此,这两种方法可以分别在适当的场合使用。
4.Clear方法
该方法删除缓冲区中所有HTML输出,但只删除响应正文而不删除响应标题。可以用该方法处理错误情况。同样,若未将Response.buffer设为真,它也将导致运行错误。
Clear方法语法如下:
Response.Clear
5.BinaryWrite方法
该方法可以不经任何字符转换就将指定信息写到HTTP输出。该方法主要用于写非字符串信息(如客户端应用程序所需的二进制数据等)。语法如下:
Response.BrinaryWrite 二进制数据
6.AppendToLog方法
该方法将指定信息添加到Web服务器日志(Log)条目的末尾,以方便对访问者进行跟踪,当访问者有违规操作时,可以利用记录进行查询。可以在脚本的同一部分中多次调用该方法,每次调用该方法时,都会在当前条目中添加指定的字符串。语法如下:
Response.AppendToLog 要记录的字符串
7.Redirect方法
该方法可以用来将客户端的浏览器重向到一个新的网页,其作用有点类似于超链接。这也是个经常使用的方法,通过它可以根据用户的不同响应,为不同的用户指定不同的页面或根据不同的情况指定不同的页面。在使用时要注意的是,要在脚本页面的首行加上<% Response..buffer=true%>语句,否则脚本在运行时可能会出错。
Redirect方法语法如下:
Response.Redirect URL
其中URL是指浏览器重定向到的统一资源定位符。
范例4-13:
<%
if isempty(Session("ID")) then
Response.Redirect "login.asp"
end if
%>
说明:
Session("ID")为空表示该用户未经登录而是直接通过在IE地址栏里输入页面的URL进入页面,则重定向到login.asp登录页面。
 请点击,这是本平台教师管理页,如果不经登录要进入这个页面,点击看看会发生什么。
范例4-14:
<%
if Session("IsSystemManager") then
Response.Redirect "new.asp"
end if
%>
说明:
如果登录用户是IsSystemManager身份,则引导到new.asp页面。
关于Session我们下面将会讲述。
8.AddHeader方法
该方法用指定的值添加HTML标题。该方法常用来响应要添加新的HTTP标题。它并不替代现有的同名标题,一旦标题被添加,将不能被删除。此方法仅供高级用户使用。语法如下:
Response.AddHeader Name,Value
Name:一个新的HTTP标题变量名称。在Name中不能包含“_”。
Value:表示这个变量的初始值。
下面介绍用于存储整个过程和用于存储用户会话信息的两个对象。


FLASH版演示教案:
FLASH版演示教案
实训作业:

请设计一个简单的表单信息输入、获取和显示的ASP程序。具体要求,设计一个表单,用户可以在表单中输入用户名、性别、年龄、职业、爱好等;获取并显示表单内容。

在线测试:
在线测试
附:
提高部分

~ 江西信息应用技术职业学院信息技术系制作 ~

E-Mail:lxlz2050@163.net Tel:0791-5275546