教学前言
课程介绍
师资介绍
教材介绍
课程计划
教学大纲
教学计划
实训计划
课程总表
教学内容
作业考试
作业上传
在线测试
测验考试
互动讨论
学习论坛
疑难解答
意见建议
 
 
关于本章:

教学目的与要求:
本部分主要介绍构成ASP语言的重要部分ASP内置对象:Response对象、Request对象、Server对象、Application对象和Session对象的使用。
讲授内容:
一、Response对象
二、Request对象
三、Server对象
四、Application对象和Session对象
重点、难点:
Response对象、Request对象是本章重点学习的内容,难点是Application和Session对象的使用。

关于本节:
章节:
第4章 ASP的内置对象
第1节 Request对象 FLASH版演示教案
教学目的:

掌握Request对象的作用、语法;
掌握使用QueryString、Form数据集合传递并获取数据;
了解数据集合Cookies、ServerVariables

重点:
使用QueryString、Form方法传递并获取数据
难点:
数据集合QueryString
学习方法:
仔细阅读分析范例代码,并察看实际效果。手工方式反复输入几遍范例代码。
章首语:

在面向对象的程序设计中,对象就是指一个完整的操作和数据组成的变量。对象是基于特定模型的,在对象中客户使用的服务通过由一组方法或相关函数的接口访问对象的数据,然后客户端可以调用这些方法执行某种操作。ASP同样也提供了内置对象,这些对象使用户更容易收集通过浏览器请求发送的信息,响应浏览器及存储用户信息。
ASP提供了六个功能强大的内置对象。我们可以使用这些对象以扩展脚本的功能,从而设计出功能强大的ASP应用程序。对象的使用非常简单,并不需要任何特殊的语法就可在代码中直接调用它们。ASP的内置对象见表4-1。
表4-1 ASP的内置对象
对象名
说明
Request对象 使用 Request 对象访问任何基于 HTTP 请求传递的所有信息,包括从 HTML 表格用 POST 方法或 GET 方法传递的信息、Cookie和用户认证等
Response对象 使用 Response 对象控制发送给用户通过脚本语言运行后的输出信息。包括直接发送信息给客户端、重定向浏览器到另一个 URL 和设置 Cookie的值
Application对象 用来存储和获取可以被该应用程序所有用户共享的信息
Session对象 用来存储一个客户端信息
Server对象 用户可以在服务器上使用不同的工具函数,还可以用来创建其他的对象。Server对象可以让你运用许多Server端的应用函数
ASPError 对象 可以使用 ASPError 对象来捕捉 ASP 错误并向用户返回详细的信息描述

内容:

4.1.1 Request对象
Request对象是ASP中常用的对象,用于获取客户端的信息,可以使用Request对象访问任何基于HTTP请求传递的所有信息,包括从HTML表单用POST方法或GET方法传递的信息、Cookie和用户认证等,即Request对象包含了关于获取ASP要执行的HTTP请求的所有信息。HTTP协议是一种请求与响应的通信协议,由客户端向Web服务器提出请求,服务器再响应信息。我们可以利用Request对象来连接服务器端的Web页和客户端的Web页。
Request 对象的语法如下:
Request[.数据集合|属性|.方法]("变量或字符串")
Request对象的数据集合又称为获取方法,因为就是通过某种获取方法来获取URL请求数据集合中的数据。Request对象拥有下面5 种获取客户端信息的方法:
▲ QueryString:HTTP 中查询字符串中变量的值。
▲ Form:HTTP 请求正文中表单元素的值。
▲ Cookies:HTTP 请求中被发送的 Cookie的值。
▲ ServerVariables:预定的环境变量的值。
▲ ClientCertificate:存储在发送到 HTTP 请求中客户端证书中的字段值。
其中最常用的是QueryString方法和Form方法。
当然,Request 对象的语句中也可以不直接指明数据集合,而是采用Request( "变量名或字符串"),如果这样,程序会以QueryString、Form、Cookies和ServerVariables顺序搜索,当找一个匹配的变量时,就认定它为要引用的成员。
Request 对象的属性TotalBytes的功能是取得客户端响应数据的字节大小。
Request 对象的方法BinaryRead的功能是以二进制方式读取客户端Post的数据。
我们先通过下面的范例看一下Request对象的基本用法。
范例4-1:包含sample4-1.htm和sample4-1login.asp,判断用户是否合法登录
sample4-1.htm代码如下:
<html>
<head>
<title>Request对象的用法</title>
</head>
<body>
<form method="POST" action="sample4-1login.asp">
用户名:<input type="text" name="username" size="20"></p>
<p>密码:<input type="text" name="password" size="20"></p>
<p><input type="submit" value="提交" name="B1"></p>
</form>
</body>
</html>
sample4-1login.asp代码如下:
<%
dim username,password
' 采用Form方法获取信息
username=Request. Form ("username")
password=Request. Form ("password")
if username="admin" then
if password="admin888" then
Response.redirect"admin.asp"
Else
Response.Write "输入错误!"
End if
End if
%>
说明:
▲ 页面sample4-1.htm是输入信息的表单,表单所输入的信息传递给页面sample4-1login.asp处理,由于sample4-1.htm不包含任何ASP代码,所以其文件后缀可以是.htm。
▲ sample4-1login.asp采用Form方法获取用户登录信息,如果用户输入正确的用户名和密码,则就会引导进入指定的页面,否则提示输入错误。
 点击浏览sample4-1.htm和sample4-1login.asp效果。
本平台应用见平台首页用户登录。
上例中用到了Form方法,Form方法是Request对象的一种获取方法,或者称为一个数据集合。Request对象共提供了Form、QueryString、Cookies、Serverables及ClientCertificate等数据集合,下面我们首先介绍数据集合QueryString。
4.1.2 数据集合QueryString
QueryString数据集合语法如下:
Request.QueryString(参数)
QueryString集合允许以名称检索QueryString变量。Requset.QueryString(参数)的值是出现在QueryString中所有参数的值的数组。
查询字符串用来从客户端浏览器向Web服务器传送信息,是用户与浏览器地址栏中看到的整个URL。QueryString集合的功能是通过浏览器的URL请求读取用户递交的信息。
QueryString集合检索HTTP查询字符串中变量的值,HTTP查询字符串由问号(?)后的值指定。如:
<A href="example.asp?string=this is a example1">string example1</A>
生成值为“this is a example1”的变量名字符串。
查询字符串最重要的一个功能是能够获取客户端的提交信息。利用QueryString集合,可以很快判断出客户端的动作并及时作出响应。Request.QueryString在通过超链接提供数据的情况下使用。
范例4-2:包含两个文件sample4-2.asp和sample4-2result.asp
sample4-2.asp代码如下:
<html>
<head>
<title> QueryString获取方法范例</title>
</head>
<p>您最喜欢的是什么职业:<br>
<a href="sample4-2result.asp?fav=教师">教师</a><p>
<a href="sample4-2result.asp?fav=工程师">工程师</a><p>
<a href="sample4-2result.asp?fav=推销员">推销员</a>
</body>
</html>
说明:
此页包含了多个面向sample4-2result.asp页面的超文本链接,每一个链接都含有一个fav查询字符串变量。当用户点击自己最喜欢的职业时,结果就会送到sample4-2result.asp页面。
sample4-2result.asp代码如下:
<html>
<head>
<title> QueryString获取方法范例</title>
</head>
<body>
<%
fav=Request.QueryString("fav")
%>
您最喜欢的职业是:<%=fav%>
</body>
</html>
 点击浏览sample4-2.asp和sample4-2result.asp效果(观察点击不同链接时切换到的页面,并注意观察IE地址栏,利用查询字符串所传递信息会出现在IE地址栏里)
把sample4-2result.asp稍做修改,可以用此程序做一个统计调查,看哪一种职业的得票最多,从而评选出用户最喜欢的职业。sample4-2result.asp修改后的代码如下:
<html>
<head>
<title> QueryString获取方法范例</title>
</head>
<body>
<%
fav=Request.QueryString("fav")
if fav="教师" then
Application("fav1")=Application("fav1")+1
end if
if fav="工程师" then
application("fav2")=application("fav2")+1
end if
if fav="推销员" then
application("fav3")=application("fav3")+1
end if
%>
你最喜欢的职业是:<%=fav%><br>
大家最喜欢的职业票数累计结果如下:<br>
教师:<%=application("fav1")%>票<br>
工程师:<%=application("fav2")%>票<br>
推销员:<%=application("fav3")%>票<br>
</body>
</html>
说明:
当用户点击自己最喜欢的职业时,该职业的票数就会加1。
sample4-2result.asp修改后的效果如图4-3所示。
 点击浏览sample4-2result.asp修改后的效果。
再来看一个对各种事件进行选择的例子。
范例4-3:sample4-3.asp
<html>
<head>
<title> QueryString获取方法范例</title>
</head>
<body>
<%
Dim sample
Sample=request.Querystring("sample")%>
<%Select Case sample%>
<%Case "公司经营项目一:主营迅通品牌电脑"%>
<hl>公司经营项目一:主营迅通品牌电脑</hl>
<%Case "公司经营项目二:兼营电脑配件"%>
<hl>公司经营项目二:兼营电脑配件</hl>
<%Case "公司经营项目三:提供网络综合服务"%>
<hl>公司经营项目三:提供网络综合服务</hl>
<%end select%>
<p>请点击下面的选项:<br>
<font size="+1"><a href="sample4-3.asp?sample=公司经营项目一:主营迅通品牌电脑">公司经营项目一</a><br>
<a href="sample4-3.asp?sample=公司经营项目二:兼营电脑配件">公司经营项目二</a><br>
<a href="sample4-3.asp?sample=公司经营项目三:提供网络综合服务">公司经营项目三</a><br>
</font></p>
</body>
</html>
 点击浏览sample4-3.asp的效果(注意观察IE地址栏)。
本平台应用见学习论坛文章ID号的传递。
通过对实例效果的展示,可以观察到:
▲利用查询字符串可以方便给服务器传递信息,这些信息是放在字符串中。
▲通过查询字符串来传递少量信息是可行的,但需要传递大量数据时,查询字符串就不能实现了。
▲ 字符串会显示在浏览器的地址栏内,这也是不安全的。
如果需要传递大量数据或隐藏数据时,就需要利用下面介绍的Form表单。
4.1.3 Form数据集合
Form数据集合可以取得客户端表单上的各项内容值。这些表单的元素都是由HTML的<Form>标记组合而成的,它们包括单行文本框(Text)、文本区(TextArea)、复选框(CheckBox)、单选按钮(Radio)、下拉式选择框(Select)和按钮(Button)等表单元素。
Form数据集合语法如下:
Request.Form(参数)[(索引.计数)]
参数:用来指定欲返回Form 内的表单元素名。
Index索引:为可选参数,使用该参数可以访问某参数中多个值中的一个。它可以是1到Requset.Form(参数).Count之间的任意整数。
Count计数:表示集合中元素的个数,Form集合按请求正文参数的名称来索引。Rrquest.Form(参数).Count的值是请求正文中所有名称相同的组数。通过调用Request.Form(参数).Count来确定参数中值的个数,如果参数未关联多个值,则计数为1,如果找不到参数,计数为0。要引用有多个值的表格元素中的单个值,则必须指定Index值。Index参数可以是从1到Request.Form(参数).Count中的任意数字。如果引用多个表格参数中的一个,而未指定Index值,返回的数据将是以逗号分隔的字符串。
应该把HTML的Form作为最主要的页面传递信息的手段。利用Form客户端和ASP能充分实现交互和信息的传递,它适合于任何浏览器,利用它来传递客户端信息应该是最可靠的。
Form集合是通过Post来提交数据,method="post",也可以不写明,不写则默认为Post方法。利用Post方法可以提交大量的数据,并且在浏览器的请求地址内也看不到相关的输入信息。
先看一个比较简单的利用Form集合提交数据的范例。
范例4-4:包含两个文件sample4-4.asp和sample4-4result.asp
sample4-4.asp代码如下:
<html>
<head>
<title>Form获取方法范例</title>
</head>
<body>
<form method="post" action="sample4-4result.asp">
<p>您的姓名:
<br><input name="name"type="text"size="30">
<br><input type="submit"value="提交">
</form>
</body>
</html>
sample4-4result.asp用于获取并处理用户输入的信息,其代码如下:
<html>
<head>
<title>Form获取方法范例</title>
</head>
<body>
<%
dim name
name=Request.Form("name") ' 获取客户端提交的信息
%>
您的名字是:<br>
<%=name%>
</body>
</html>
说明:
▲ 在sample4-4.asp中,我们注意到Form的method="post",也就是说,当用户在表单输入内容后,按下【提交】按钮,则Form的内容就作为HTTP请求的一部分被提交到sample4-4result.asp页面。在sample4-4result.asp中,name= Request.Form (“name”)用来获取客户端提交的信息。Form参数action指向处理此请求的ASP文件,method指出请求是以Post方式传递给服务器。
▲ 在本范例中,表单信息的输入页面为sample4-4.asp,而处理表单信息的页面为sample4-4result.asp为另一页面,通过<form method="post" action="name.asp">来指明传递方法和传递方向。其实sample4-4.asp页并不包含ASP代码,所以文件名完全可以改写sample4-4.htm。
 点击浏览sample4-4.asp和sample4-4result.asp的效果。
当需要用户提交大量的反馈信息时,我们经常要用到带文本区的Form表单。用户可以把要提供的信息填入文本区提交上来。
还是上题的例子,我们给它增加了内容,让用户填写一下对公司的意见,反馈给公司。
范例4-5:sample4-5.asp
<html>
<head>
<title> Form获取方法范例</title>
</head>
<body>
<form method="post" action="">
<p>您的姓名:
<br><input name="name"type="text"size="30">
<p>您的意见:
<br><textarea name="advices"cols=40 rows=6></textarea>
<br><input type="submit"value="提交">
</form>
<%
dim name,advices
name=Request.Form("name")
advices=Request.Form("advices")
%>
您的名字是:<%=name%><br>
您的意见是:<br><%=advices%>
</body>
</html>
说明:
▲ 本页面将表单的输入与表单信息的处理和显示集中于一个页面。
▲ 注意<form method="post" action="">中action=""的写法,表示表单信息交与本页面中的ASP程序处理,也可以写成action="sample4-5.asp"
 点击浏览sample4-5.asp的效果。
本平台应用见“学生注册”页面“疑难解答”栏目提问页面
通过对实例效果的展示,可以观察到:
▲Form表单是最主要的页面传递信息的手段。
▲利用Form客户端和ASP能充分实现交互和信息的传递,利用它来传递客户端信息应该是最可靠的。
4.1.4 数据集合Cookies
HTTP是一个无状态的通讯协议,所以每一个连接都是全新的开始,因此,如果要判断某个用户是否曾经进入本网站时,那么在ASP中只能使用Cookie。从另一个角度来说,Cookie实质上是一个标签,浏览器用一个或多个限定的文件支持Cookie,当你访问一个需要唯一标识你的Web站点时,它会在你的硬盘上留下一个标记,下一次你访问同一个站点时,站点的页面会查找这个标记,即可以在服务器端和客户端保持持久的信息。例如你在访问一个需要密码的网站时,除了第一次需要输入帐号与密码外,以后不再需要输入帐号与密码,这就是使用了Cookie技术。在第一次访问时,浏览器将服务器指定的相关信息已存入本机上,以后浏览器会自动传递这个信息供服务器认证之用。每个Web站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面来完成。另外Request提供的Cookies集合允许用户检索在HTTP请求中发送的Cookie的值。这项功能经常被使用在要求认证客户密码以及电子公告板、Web聊天室等ASP程序中。
要注意的是,出于安全的考虑,有的客户可能会关闭自己计算机上浏览器上Cookie。
Cookies数据集合语法如下:
Request.Cookies("Cookiename")[(key)|.Attribute]
Cookiesname:指定要检索其值的Cookie,是一个必需的参数。
Key:可选参数,用于从Cookie集合中检索子关键字的值。
如果是省略关键字,则是一个个设置,一个个获取。例如:
<%
Response.Write Request.Cookies("name")
%>
如果某个Cookies拥有关键字,比如name拥有两个关键字,分别是First和Second。当获取Cookies值时,如果不指定关键字,则代码如下:
<%= Request.Cookies("name")%>
那么将输出全部关键字的信息。如果指定了关键字,则会得到相应关键字的信息,比如:
<%= Request.Cookies("name")("first")%>
则输出第一个关键字的信息。
Attribute:指定Cookie自身的有关信息,即表示这个Cookie的属性值。一般来说每一个Cookie都可以包含Domain、Expires、Haskeys、Secure及Path等属性值。但对Request对象的Cookies数据集合而言,它只包含Haskeys属性,且是只读属性,它用来判断指定的Cookies目录下是否包含其他的Cookie。如果一个Cookies包含几个关键字,它就形成一个Cookies目录,内含几个关键字,通过Haskeys属性可以判断Cookies关键字数目,如果含有多个关键字,则返回True,否则返回False。语法如下:
Request.Cookies("Cookiename").Haskeys
4.1.5 数据集合ServerVariables
前面介绍的Form、QueryString、Cookies等数据集合都是用来取得客户端所传递的数据,下面介绍服务器变量(ServerVariables)数据集合是负责取得Web服务器端的环境变量,检索预定的环境变量。通过ServerVariables可以取得服务器端或客户端的一些信息,比如,取得客户端的IP地址。
ServerVariables数据集合语法如下:
Request.ServerVariables("环境变量名称")
常用的环境变量见表4-2。

表4-2 常用的环境变量
变 量
说明
ALL_HTTP 客户端发送的所有HTTP标题文件
AUTH_TYPE 这是用户访问受保护的脚本时,服务器用于检验用户是否合法用户
CONTENT_LENGHT 发送到客户端的文件长度
CONTENT_TYPE 发送到客户端的内容的数据类型
GATEWAY_INTERFACE 服务器使用的CGI规格的修订。格式为CGI/revision
LOCAT_ADDR 返回接受请求的服务器地址。如果在绑定多个IP地址的多宿主机器上查找请求所用的地址时,这条变量非常重要
LOCAT_USER 用户登录WindowsNT 的账号
QUERY_STRING 查询HTTP请求中问号(?)后的信息
REMOTE_ADDR 发出请求的远程主机的IP地址
REMOTE_HOST 发出请求的主机名称
REMOTE_USER 用户发送的未映射的用户名字符串。该名称是用户实际发送的名称,与服务器上验证过滤器修改过后的名称相对
REQUEST_METHOD 该方法用于提出请求。对HTTP的请求方式,可以是GET、HEAD、POST等方法
SCRIPT_NAME 执行脚本的虚拟路径。用于自引用的URL
SERVER_NAME 服务器主机名或IP地址
SERVER_PORT 发送请求的端口号
URL 提供URL的相对网址

下面我们来看具体两个例子。
范例4-6:sample4-6.asp,获取客户端的信息
<html>
<head>
<title> ServerVariables获取方法范例</title>
</head>
<body>
<p>发送请求的端口号是:
<b><% =Request.servervariables("SERVER_PORT") %></b><br>
<p>发送请求的远程主机的IP地址是:
<b><% =Request.servervariables("REMOTE_ADDR") %></b><br>
</body>
</html>
 点击浏览sample4-6.asp的效果。
一个实际应用就是通过Request.servervariables("REMOTE_ADDR")取得远端用户的IP地址,这样就可以限制某些用户访问Web页面。
范例4-7:sample4-7.asp,获取服务器环境变量
<html>
<head>
<title> ServerVariables获取方法范例</title>
</head>
<body>
<%
response.write("<p><b>服务器变量</b><br>")
syh=chr(34)
for each var in request.servervariables
if instr(var,"_ALL")+instr(var,"ALL_")=0 then
key=trim(request.servervariables(var))
if len(key)=0 then
blankvars=blankvars&var&","
else
response.write "request.servervariables("&syh
response.write var&syh&")"
response.write"=<b>"&key &"</b><p>"
end if
end if
next
%>
</body>
</html>
 点击浏览sample4-7.asp的效果。
本平台应用见“作业上传”页面获取IP。
下面介绍ASP的Response内置对象。

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

输入范例4-1、4-2、4-3、4-4、4-5,并运行浏览。

在线测试:
备注:
查看平台各交互功能页面,分析这些页面分别是通过什么方式来传递和获取数据。
附:
提高部分
 

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

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