1
第 7章 ASP动态网页制作基础
学习目标
? ASP的特点及相关概念
?如何在 HTML页面中嵌入 VBScript
? VBScript的变量定义及语法规则
? ASP内置对象的特性和方法
? ASP内置组件的使用方法
2
第 7章 ASP动态网页制作基础
教学内容
7.1 ASP简介
7.2 VBscript 脚本语言
7.3 ASP内置对象
7.4 ASP内置组件
本章小结
返回总目录
3
7.1 ASP简介
返回目录
ASP( Active Server Pages)是微软公司 1996年底推出的 Web应用程
序开发技术,其主要功能是为生成动态交互的 Web服务器应用程序提供
功能强大的方法和技术。 ASP既不是一种语言也不是一种开发工具,而
是一种技术框架,是位于服务器端的脚本运行环境。 ASP 内含于 IIS
( Internet Information Server) 3.0 和 4.0 之中,我们可以结合 HTML 网
页,ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB 服务器应
用程序。
ASP 所独具的一些特点:
1,使用 VBScript, JScript 等简单易懂的脚本语言, 结合 HTML
代码, 可快速完成网站的应用程序 。
2,容易编写, 无须编译, 所使用的脚本语言均在 WEB 服务器端执行 。
3,使用普通文本编辑器进行编辑设计, 如 Windows 的记事本 。
4
7.1 ASP简介
4,与浏览器无关, 用户端只要使用可执行 HTML代 码的浏览器
就能浏览 ASP所设计的网页内容 。
5.能与任何 ActiveX scripting 语言相容。除了与
VBScript 和 Jscript相容之外,还通过 plug-in 方式使用由第
三方提供的其他脚本语言,如 REXX, Perl, Tcl 等。脚本引
擎是处理脚本程序的 COM( Component Object Model) 物件。
6,源程序不会被传到客户浏览器, 能避免所写程序源代码被他
人剽窃, 提高了程序的安全性 。
7,可使用服务器端的脚本来产生客户端的脚本 。
8,面向对象 ( Object-oriented ) 。
9,ActiveX Server Components (ActiveX 服务器元件 )
具有无限可扩充性。可以使用 Visual Basic, Java, Visual
C++, COBOL 等语言编写 ActiveX Server Component 。
返回目录
5
7.1 ASP简介
第一个 ASP程序
第一步:打开一个文本编辑器 ( 比如记事本 ), 输入以下代码:
<HTML>
<HEAD><TITLE>ASP实例 </TITLE></HEAD>
<BODY>
<% Response.write(“Hello world”) % >
</BODY>
</HTML>
第二步:以文件名 Hello.asp存盘 。 因为,asp文件由服务器端的 ASP环境来
解释, 所以进入第三步 。
第三步:将 Hello.asp文件放在 WWW服务器的目录下 。 在安装了 PWS的 Win98系
统里, 缺省路径是 C:\Wroot,也可以自己建一个子目录, 比如 C:\asp。
第四步:打开浏览器,地址栏中输入
http://yourservername/asp/Hello.asp,浏览器上立即显示 "Hello World",
就这么简单。(, yourservername”要换具体的服务器名)
返回目录
6
7.2 VBscript 脚本语言 — VBscript简介
VBScript是 ASP的缺省语言,它通过变量、操作符、循环、分支、
函数和子例程扩展了 HTML。可以在 HTML文件中直接嵌入 VBScript
脚本,使静态 HTML网页变为动态网页。
VBScript是一种脚本语言, 脚本语言的句法比较简单, 这意味着它
比 Basic语言容易使用 。 但是, 简单的句法也使开发大的应用程序变
得很困难, 这也使得它比 Basic语言难用 。
VBScript可以作为客户端编程语言, 由浏览器解释执行,
VBScript也可以作为服务器端编程语言 。 服务器端编程语言是在服
务器上执行的语言, 服务器为一个站点提供文件, 浏览器接收这些
文件 。 服务器端编程语言将执行站点主机上的所有操作 。
返回目录
7
7.2 VBscript 脚本语言 — 在 HTML页面中嵌入 VBscript
在 HTML页面中嵌入 VBScript 要使用 Script元素, 该元素用于将 VBScript
代码添加到 HTML页面中 。 VBScript代码要写在成对的< SCRIPT>标记之
间 。 例如, 以下代码是一个测试传递日期的过程:
例 7-2 测试传递日期的过程代码
< SCRIPT LANGUAGE=”VBScript”>
< !--
Function TT(Dt)
TT= (CDate(Dt)-Now())> 2
End Function
-->
</ SCRIPT>
说明,VBScript代码的开始和结束部分都有 <SCRIPT>标记。
LANGUAGE属性用于指定所使用的脚本语言。
返回目录
8
7.2 VBscript 脚本语言 — 在 HTML页面中嵌入 VBscript
上例是一个通用函数 (不依赖于任何窗体控件 ),可将其包含在页面的 HEAD部分:
例 7-3 测试传递日期的脚本编写
< HTML>
< HEAD>
< TITLE>订购< / TITLE>
< SCRIPT LANGUAGE=”VBScript”>
< !--
Function TT(Dt)
TT= (CDate(Dt)-Now())> 2
End Function
-->
< / SCRIPT>
< / HEAD> < BODY>

Script块可以出现在
HTML页面的任何地方
( BODY或 HEAD部分之
中),但最好将所有的
Script目标代码放在 HEAD
部分中,Script代码集中放
置,能确保在 BODY部分调
用代码之前所有 Script代码
都被读取并解码。
返回目录
9
7.2 VBscript 脚本语言 — 在 HTML页面中嵌入 VBscript
一个值得注意的例外情况是, 在窗体中提供内部代码以响应窗体中对象的
事件 。 以下示例在为窗体中嵌入 Script代码以响应窗体中按钮的双击事件 。
例:窗体内部代码响应窗体中按钮的双击事件
< HTML>
< HEAD>
< TITLE>测试按钮事件< /TITLE>
< / HEAD>
< BODY>
< FORMNAME=”Forml”>
< INPUT TYPE=”Bunon” NAME=”Buttonl” VALUE=”双击, >
< SCRIPT FOR=”Buttonl” EVENT=”OnClick” LANGUAGE=”VBScript”>
MsgBox”按钮被双击 !”
< / SCRIPT>
< / FORM> < / BODY> < / HTML>
返回目录
10
7.2 VBscript 脚本语言 — 变量、常量及数组
1.变量
( 1) 声明变量
声明变量的一种方式是使用 Dim语句, 例如,Dim tt。 声明多个变量时,
使用逗号分隔变量 。 例如,Dim top,bottom,left,right。
另外一种方式是通过直接在 Script中使用变量名, 这一简单方式可隐
式地声明变量, 但不提倡这样做, 因为有时会因为变量名被拼错而导致
运行 Script时出现意外结果 。
( 2) 变量的作用域
VBScript变量都有相应作用域, 作用域由声明变量的位置决定, 在过程
中声明的变量只有该过程中的代码可以访问或更改变量值, 此时变量具
有局部作用域并称为过程级变量 。 在过程之外声明变量可以被脚本中所
有过程识别, 称为全局变量 。
返回目录
11
7.2 VBscript 脚本语言 — 变量、常量及数组
( 3)变量子类型
用 DIM语句声明一个变量时无须为变量定义数据类型, 因为 VBScript中所有变量都
是相同的数据类型,variant型 。 variant是一种特殊的变量类型, 它可以代表许多其他
类型的变量 。 Variant包含的基本数据类型称为子类型 。 当用一个变量代表一个数字时,
只要把数字分配给该变量, 不用引号定界 。 当用一个变量代表一个字符串时, 把字
符串分配给该变量时要用引号定界 。 一个 variant型变量可自动与赋给它的值的类型保
持一致 。
用 TYPENAME()函数可以显示 variant型变量的子类型 。
例如,< % aa=”Hello !” % >< % = TYPENAME(aa) % >
< % aa= 3 % > < % = TYPENAME(aa) % >
在上例中, 变量被分配了两个不同类型的值, 对每种类型的值, 可以用 VBScript函
数 TYPENAME()显示该变量所代表的实际数据的子类型 。 当给变量 aa分配字符串数
据, Hello!”时, variant型变量 aa的子类型是 string。 当给变量 aa分配整数 3时, aa的子
类型是 integer。
返回目录
12
7.2 VBscript 脚本语言 — 变量、常量及数组
( 4)空变量和空值变量
在给一个变量分配值之前, 该变量是空的 。 可以用函数 ISEMPTY()检
测一个变量是否为空 。 如下例所示:
例 7-5 用函数 ISEMPTY()检测变量是否为空
< %
aa=”Hello!”
% >
aa:< % =ISEMPTY(aa) % >
bb:< % =ISEMPTY(bb )% >
在这个例子中, 检测了两个变量 aa和 bb,看它们是否为空 。 因为 aa已
经被分配了值, 当以 aa为函数 ISEMPTY()的参数时, 函数返回 False。 而
bb没有分配数据, 以 bb为参数时, 函数 ISEMPTY()返回 True。
返回目录
13
7.2 VBscript 脚本语言 — 变量、常量及数组
2.常量
VBScript可以声明常量, 一旦声明了一个常量, 该常量的值将不能被
改变 。
例如:< % CONST TOP= 21.1 % >
在例子中, 常量 TOP被分配了值 21.1。 因为 TOP是一个常量, 所以在
脚本中不能再给 TOP分配新值 。 试图改变常量的值将收到错误信息:
Illegal Assignment error。
对于不希望在脚本中被改变的数值可使用常量 。 例如站点注册费是一
个固定价格, 应定义为常量 。 若将来某一天改变这个价格, 可通过手工
修改方式更改这个常量的值 。 可以一次定义多个常量, 把每个常量定义
用逗号隔开即可 。
例如:<% CONST TOP=21.1,BOTTOM=52.5,AA=”Hello!” %>
返回目录
14
7.2 VBscript 脚本语言 — 变量、常量及数组
3.数组
数组是一个可以存储一组值的变量 。 当需要存储一组相关的值时应该使用
数组 。 例如:创建一个数组, 用来存储站点上出售的一系列商品 。
例:创建存储商品的数组
< %
DIM Product(10)
Product (0) =”Trading Card”
Product (1) =”Book on Active Sever Pages”
Product (2) =”Computer Monitor”
% >
例子中, DIM语句声明了一个可以存储 11个值的数组, 数组在使用之前必
须声明 。 VBScript中数组的下标从 0开始, 声明了一个数组之后, 可以用一
个索引为数组元素赋值 。 数组可以多维, 如,Dim tt (4,6)。
返回目录
15
7.2 VBscript 脚本语言 — VBscript过程
过程是一组能执行指定任务且具有返回值的脚本命令 。 用户可以
定义自己的过程, 然后在脚本中反复调用它们 。 也可以将过程定义
放在调用过程的,asp文件中, 还可以将通用过程放在一个共享的,asp
文件中, 用 SSI #include指令将其包含到其他调用其过程的,asp文件
中 。 还有另一种方法, 即把这些功能打包在 ActiveX组件中 。
过程定义常出现在< SCRIPT>和</ SCRIPT>内部, 必须遵循声
明脚本语言规则 。 如果过程所用语言与主脚本语言不同, 则要使用
< SCRIPT>元素 。 主脚本语言中的过程用脚本分界符, < %, 和
,% >, 分隔 。 使用 HTML< SCRIPT>标记时, 必须用 RUNAT和
LANGUAGE属性来保证服务器端能够处理脚本 。
返回目录
16
7.2 VBscript 脚本语言 — VBscript过程
过程是一组能执行指定任务且具有返回值的脚本命令 。 用户可以
定义自己的过程, 然后在脚本中反复调用它们 。 也可以将过程定义
放在调用过程的,asp文件中, 还可以将通用过程放在一个共享的,asp
文件中, 用 SSI #include指令将其包含到其他调用其过程的,asp文件
中 。 还有另一种方法, 即把这些功能打包在 ActiveX组件中 。
过程定义常出现在< SCRIPT>和</ SCRIPT>内部, 必须遵循声
明脚本语言规则 。 如果过程所用语言与主脚本语言不同, 则要使用
< SCRIPT>元素 。 主脚本语言中的过程用脚本分界符, < %, 和
,% >, 分隔 。 使用 HTML< SCRIPT>标记时, 必须用 RUNAT和
LANGUAGE属性来保证服务器端能够处理脚本 。
返回目录
17
7.2 VBscript 脚本语言 — VBscript过程
使用< SCRIPT>标记的语法如下:
< SCRIPT RUNAT=SERVER LANGUAGE=JSCRIPT>
过程定义
< / SCRIPT>
说明,RUNAT=SERVER属性通知 Web服务器在服务器上处理脚本,
若不设置该属性, 脚本将由客户端浏览器处理 。 LANGUAGE属性决
定此脚本块所用的语言, 可以指定任何一种具有脚本引擎的语言 。
如:用 VBSCRIPT指定 VBScript,用 JSCRIPT指定 JScript。 若不设置
LANGUAGE属性, 将用主脚本语言解释此脚本块 。
返回目录
18
7.2 VBscript 脚本语言 — VBscript过程
VBScript中的过程被分为两类,Sub过程和 Function过程 。
Sub过程是包含在 Sub和 End Sub语句之间的一组 VBScript语句, 执
行操作但不返回值 。 Sub过程可以使用参数, 由调用过程传递的常数,
变量或表达式 。 如果 Sub过程无任何参数, 则 Sub语句必须包含空括
号 ( ) 。
Function过程是包含在 Function和 End Function 语句之间的一组
VBScript语句 。 Function过程与 Sub过程类似, 但是 Function过程可以
通过函数名返回值, 这个值是由过程的语句赋给函数名的 。 Function
返回值的数据类型总是 Variant。 Function过程可以使用参数, 由调用
过程传递的常数, 变量或表达式 。 如果 Function过程无任何参数, 则
Function语句必须包含空括号 ( ) 。
返回目录
19
7.2 VBscript 脚本语言 — VBScript函数
函数和过程一样都是命名了的代码块, 但它们却有很大区别, 过
程完成程序任务, 函数则返回值 。
取得日期之间的差或和的函数 DateSerial,其语法如下:
DateSerial(year,month,day)
DateSerial函数中每个参数的取值范围都要合适, 日的取值在 1~ 31
之间, 月的取值在 1~ 12之间 。 也可以用年, 月, 日的数值表达式代
替绝对日期 。
对于 year参数, 若取值范围是从 0~ 99,则被解释为 1900,1999年 。
此范围之外的 year参数要使用 4位数字表示年份 ( 例如 1800年 ) 。 当
任何一个参数的取值超出可接受范围时, 会适当地进位到下一个较
大的时间单位 。
返回目录
20
7.2 VBscript 脚本语言 — VBScript条件语句
在 VBScript中可使用以下两种条件语句:
1,If… Then… E1se语句
If… Then… E1se语句先计算条件是 True还是 False,然后根据计算结
果指定要运行的语句 。 通常, 条件是一个对值或变量进行比较的关
系表达式, If… Then… E1se语句允许嵌套 。 If… Then… E1se语句最简
格式是条件后只跟一条语句, 此时可以省略 EndIF。
2,Select Case语句
Select Case结构提供了 If… Then… E1se结构的变通形式, 从多个语
句块中选择执行其中的一个 。 其功能与 If… Then… E1se语句类似,
但代码更加简练易读 。 Select Case结构在开始处有一个只计算一次
的简单测试表达式, 然后将表达式结果与结构中每个 Case的值比较,
如果匹配, 则执行与该 Case关联的语句块 。
返回目录
21
7.2 VBscript 脚本语言 — VBScript循环语句
循环语句的作用是重复执行程序代码 。 在 VBScript中有下列 3种循
环语句:
Do… Loop,它可以多次运行语句块, 次数不定 。 当条件为, 真,
时循环 。
For… Next:指定循环次数, 使用计数器重复运行语句 。
ForEach… Next:对集合中的每项或数组中的每个元素, 重复执行
一组语句 。 这在不知道集合中元素的数目时非常有用 。 它的语法如
下:
For Each element In group
[statements]
Next [element]
返回目录
22
7.3 ASP内置对象 — ASP基本内置对象综述
1,Application对象
Application对象负责存储数据以供多个用户使用 。
集合,Contents数据集合与 StaticObjects数据集合
方法,Lock方法与 Unlock方法
2,Request对象
使用 Request对象能访问任何用 HTTP请求传递的信息, 包括从 HTML
表格用 POST方法或 GET方法传递的参数, Cookie和用户认证 。 还能访
问发送给服务器的二进制数据, 如上传的文件 。
集合,C1ientCertificate数据集合, Cookies数据集合, Form数据集合,
QueryString数据集合, ServerVariables数据集合
属性:只提供一个 TotalBytes属性
方法:仅提供 BinaryRead方法
返回目录
23
7.3 ASP内置对象 — ASP基本内置对象综述
3,Response对象
使用 Response对象能控制发送给用户的信息, 包括直接发送信息给浏览器, 重定向
浏览器到另一个 URL或设置 Cookie的值 。
集合,Cookies数据集合
属性,Buffer,CacheControl,Charset,ContenType,Expires,ExpiresAsolute、
IsClientConnected, Pics,Status等
方法,AddHeader,AppendToLog,BinaryWrite,Clear,End, Flush,Redirect、
Write等
4,Server对象
Server对象提供对服务器上的方法和属性进行的访问 。 最常用的方法是创建
ActiveX组件的实例 ( Server.Createobject) 。 其他方法用于将 URL或 HTML编码成字
符串, 将虚拟路径映射到物理路径以及设置脚本的超时期限 。
属性:只有一个 ScriptTimeout属性
方法,CreateObject, HTMLEncode, MapPath, URLEncode等
返回目录
24
7.3 ASP内置对象 — ASP基本内置对象综述
5,Session对象
使用 Session对象能存储特定的用户会话所需信息 。 当用户在应用程序的页之间跳转
时, 存储在 Session对象中的变量不会清除, 而用户在应用程序中访问页时, 这些变
量始终存在 。 也可以使用 Session方法显式地结束一个会话和设置空闲会话的超时期
限 。
集合,Contents数据集合和 StaticObjects数据集合
属性,CodePage,LCID,sessionID, Timeout等
方法:只提供了 Abandon方法
事件,Session_onEnd事件和 Session_OnStart事件
6,0bjectContext对象
使用 0bjectContext对象可以提交或撤消由 ASP脚本初始化的事务 。
方法,SetAbort方法和 SetComplete方法
事件,OnTransactionAbort事件和 OnTransactionCommit事件
返回目录
25
7.3 ASP内置对象 — Request对象
使用 Request对象能访问任何基于 HTTP请求传递的所有信息, 包括从 HTML表格
用 POST方法或 GET方法传递的参数, Cookie和用户认证, 访问客户端发送给服务
器的二进制数据 。
Request的语法,Request[集合 |属性 |方法 ](变量 )
我们挑选一些常用的对象语法进行分析:
1,Form集合
Form集合通过使用 POST方法的表格检索邮送到 HTTP请求正文中的表格元素的值 。
它的语法格式,Request.Form(element)[(index)|Count]。 参数的功能如下:
element指定集合要检索的表格元素的名称 。
Index是可选参数, 使用该参数可以访问某参数中多个值中的一个, 它可以是 1到
Request.Form(parameter).Count之间的任意整数 。
Form集合按请求正文中参数的名称来索引 。 Request.Form(element)的值是请求正
文中所有 element值的数组 。 通过调用 Request.Form(elemem).Count来确定参数中
值的个数 。 如果参数未关联多个值, 则计数为 1。 如果找不到参数, 计数为 0。
返回目录
26
7.3 ASP内置对象 — Request对象
2,QueryString集合
QueryString集合检索 HTTP查询字符串中变量的值, HTTP查询字
符串由问号后的值指定 。 如,< A Href=”example.asp?string=this is a
sample”> string sample< /A> 生成一个值为, this is a sample”的变
量名字符串 。 通过发送表格或由用户在其浏览器的地址框中键入
查询也可以生成查询字符串 。
语法格式,Request.QueryString(variable)[(index)|.Count]
QueryString 集 合 让 用 户 以 名 称 检 索 Query_String 变量 。
Request.QueryString(参数 ) 的值是出现在 QUERY_STRING 中所有
参数的值的数组 。
通过调用 Request.QueryString(parameter).Count可以确定参数有多
少个值 。
返回目录
27
7.3 ASP内置对象 — Request对象
3,Cookies集合
Cookie其实是一个标签, 当访问一个需要唯一标识的 Web站点时,
它会在硬盘上留下一个标记, 下一次访问同一个站点时, 站点的
页面会查找这个标记 。 每个 Web站点都有自己的标记, 标记的内容
可以随时读取, 但只能由该站点的页面完成 。 每个站点的 Cookie与
其他所有站点的 Cookie存在于同一文件夹中的不同文件内 ( 可以在
Windows的目录下的 Cookie文件夹中找到它们 ) 。 一个 Cookie唯一
标识一个客户 。 Cookie可以包含在一个对话期或几个对话期之间某
个 Web站点的所有页面共享的信息, 使用 Cookie还可以在页面之间
交换信息 。 Request提供的 Cookies集合允许用户检索在 HTTP请求
中发送的 Cookie的值 。
返回目录
28
7.3 ASP内置对象 — Request对象
它的语法格式如下:
Request.Cookies(Cookie)[(Key)|.attribute]
其中参数的主要功能如下:
Cookie指定要检索其值的 Cookie。
Key是可选参数, 用于从 Cookie字典中检索子关键字的值 。
如果客户端浏览器发送了两个同名的 Cookie,那么 Request.Cookie
将返回其中路径结构较深的一个 。 要确定某个 Cookie是不是 Cookie
字典 (Cookie是否有关键字 ),可使用下列脚本 。
< % = Request.Cookies(“myCookie”)HasKeys% >
如果 myCookie是一个 Cookie字典, 则前面的赋值为 True。 否则为
False。
返回目录
29
7.3 ASP内置对象 — Request对象
4,ServerVariables集合
在浏览器中浏览网页使用的传输协议是 HTTP,在 HTTP
的标题文件中会记录一些客户端的信息, 如:客户的 IP
地址等 。 有时服务器端需要根据不同的客户端信息做出
不同的反映, 这时候就需要用 ServerVariables集合获取所
需信息 。 其语法如下:
Request.ServerVariables(服务器环境变量 )
返回目录
30
7.3 ASP内置对象 — Response对象
与 Request是获取客户端 HTTP信息相反, Response对象用来控制发
送给用户的信息, 包括直接发送信息给浏览器, 重定向浏览器到另
一个 URL或设置 Cookie的值 。
语法格式,Response.collection|property|method
1,属性
( 1) Buffer
Buffer属性指示是否缓冲页输出 。 当缓冲页输出时, 只有当前页的
所有服务器脚本处理完毕或者调用了 Flush或 End方法后, 服务器才
将响应发送给客户端浏览器, 服务器将输出发送给客户端浏览器后
就不能再设置 Buffer属性 。 因此, 应该在,asp文件的第一行调用
Response.Buffer。
返回目录
31
7.3 ASP内置对象 — Response对象
( 2) Charset
Charset属性将字符集名称附加到 Response对象中 content-type标题的后面 。
对于不包含 Response.Charset属性的 ASP页, content-type标题将为,content-
type:text/html。 可以在,asp文件中指定 content-type标题 。
( 3) ContentType
ContentType 属性指定服务器响应的 HTTP 内容类型 。 如 果 未 指 定
ContentType,默认为 text/HTML。
( 4) Expires
Expires属性指定了在浏览器上缓冲存储的页离过期还有多少时间 。 如果用
户在某个页过期之前又回到此页, 就会显示缓冲区中的页面 。
( 5) ExpiresAbsolute
与 Expires属性不同, ExpiresAbsolute属性指定缓存于浏览器中的页面
的确切到期日期和时间 。
返回目录
32
7.3 ASP内置对象 — Response对象
2,方法
( 1) C1ear
用 Clear方法可以清除缓冲区中的所有 HTML输出 。 但 Clear方法只清除响应正文而
不清除响应标题 。
( 2) End
End方法使 Web服务器停止处理脚本并返回当前结果 。 文件中剩余的内容将不被处
理 。 如果 Response.Buffer已设置为 True,则调用 Response.End将缓冲输出 。
( 3) F1ush
F1ush方法立即发送缓冲区中的输出 。 如果没有将 Response.Buffer设置为 True,则该
方法将导致运行时错误 。
( 4) Redirect
Redirect方法使浏览器立即重定向到程序指定的 URL。
( 5) Write
Write方法是最常用的方法之一, 它将指定的字符串写到当前的 HTTP输出 。
返回目录
33
7.3 ASP内置对象 — Response对象
3,集合
Response对象只有一个集合 就是 Cookie,Cookies集合设置 Cookie的值 。 若指
定的 Cookie不存在则创建它 。 若存在则设置新的值并将旧值删去 。 其语法如下:
Response.Cookies(Cookie)[(key)|.attribute]=value
这里的 Cookie是指定 Cookie的名称 。 如果指定了 key,则该 Cookie就是一个字
典 。 attribute指定 Cookile自身的有关信息 。 attribute参数可以是下列之一:
Domain若被指定, 则 Cookie将被发送到对该域的请求中去 。
Expires指定 Cookie的过期日期 。 为了在会话结束后将 Cookie存储在客户端磁盘
上, 必须设置该日期 。 若此项属性的设置未超过当前日期, 则任务结束后
Cookie将到期 。 HasKeys指定 Cookie是否包含关键字 。
Path若被指定, 则 Cookie将只发送到对该路径的请求中 。 如果未设置该属性,
则使用应用程序的路径 。
返回目录
34
7.3 ASP内置对象 — Application对象
Application对象的功能是处理多用户注册写入信息, 在给定的应用程序的所有用户
之间共享信息, 并在服务器运行期间持久地保存信息, 它有控制访问应用层数据的
方法, 还有可用于应用程序启动和停止时触发过程的事件 。
1,属性
虽然 Application对象没有内置的属性, 但可以使用以下句法设置用户定义的属性
( 也可称为集合 ) 。
Application(“属性/集合名称, )=值
可以使用如下脚本声明并建立 Application对象的属性 。
< %
Application(“Myvar”)=”Hello”
SetApplication(“MyObj”); Server.CreateObject(“MyComponent”)
% >
一旦我们分配了 Application对象的属性, 它就会持久地存在, 直到关闭 Web服务器
服务才使 Application停止 。
返回目录
35
7.3 ASP内置对象 — Application对象
2,方法
Application对象有两个方法, 它们都是用于处理多个用户对存储
在 Application中的数据的写入问题 。
( 1) Lock方法禁止其他客户修改 Application对象的属性 。
Lock方法阻止其他客户修改存储在 Application对象中的变量, 以
确保在同一时刻仅有一个客户可修改和存取 Application变量 。 如果
用户没有明确调用 Unlock方法, 则服务器将在,asp文件结束或超时
后即解除对 Application对象的锁定 。
( 2) 与 Lock方法相反, Unlock方法允许其他客户修改 Application
对象的属性 。 如上例, Unlock方法解除对象的锁定, 使得下一个客
户端能够增加 NumVisits的值 。
返回目录
36
7.3 ASP内置对象 — Application对象
3,事件
( 1) Application_OnStart
该事件在首次创建新会话 ( 即 Session_OnStart事件 ) 之前发生 。
当服务器启动并允许对应用程序所包含文件进行请求时就触发
Application_OnStart事件 。 Application_OnStaIt事件的处理过程必须
写在 Global.asa文件之中 。 Appliction_OnStart事件的语法如下:
< SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
SubApplication_OnStart

End Sub
</ SCRIPT>
返回目录
37
7.3 ASP内置对象 — Application对象
( 2) Application_OnEnd
该事件在应用程序退出时于 Session onEnd事件之后发生,
Appliation_OnEnd事件的处理过程也必须写在 Global.asa文件之中 。
使用 Application对象时有两个注意事项:
注意事项 1:不能在 Application对象中存储 ASP内置对象 。
注意事项 2:若将一个数组存储在 Application对象中, 请不要直接
更改存储在数组中的元素 。 下面的脚本将无法运行 。
< % AppliCation(“StoredArray”)(3)=”newvalue”% >
因为 Application 对 象 是 作 为 集 合 被 实 现 的, 数 组 元 素
StoredArray(3)未获得新的赋值, 而此值包含在 Application对象集合
中, 并将覆盖此位置以前存储的任何信息 。
返回目录
38
7.3 ASP内置对象 — Session对象
Session是与 Application对象有相似作用的另一个非常实用的 ASP内置
对象 。 使用它存储特定的用户会话所需信息 。 当用户在应用程序的页
之间跳转时, 存储在 Session对象中的变量不会清除, 而用户在应用程
序中访问页面时, 这些变量始终存在 。 当用户请求来自应用程序的
web页时, 如果该用户还没有会话, 则 Web服务器将自动创建一个
Session对象 。 当会话过期或被放弃后, 服务器将终止该会话 。
通过向客户程序发送唯一的 Cookie可以管理服务器上的 Session对象 。
当用户第一次请求 ASP应用程序中的某个页面时, ASP要检查 HTTP头
信息, 查看在本文中是否有名为 ASPSESSIONID的 Cookie发送过来,
如果有, 则服务器会启动新的会话, 并为该会话生成一个全局唯一的
值, 再把这个值作为新 ASPSESSIONID cookie的值发送给客户端, 正
是使用这种 Cookie,可以访问存储在服务器上的属于客户程序的信息 。
返回目录
39
7.3 ASP内置对象 — Session对象
1,属性
( 1) SessionID
SessionID属性返回用户的会话标识 。 在创建会话时, 服务器会为每一个会
话生成一个单独的标识 。 会话标识以长整形数据类型返回 。 在很多情况下
SessionID可以用于 Web页面注册统计 。
( 2) Timeout
Timeout属性以分钟为单位为该应用程序的 Session对象指定超时时限 。 如
果用户在该超时时限之内不刷新或请求网页, 则该会话将终止 。
2,方法
Session对象仅有一个 abandon方法, 该方法删除所有存储在 Session中的对
象并释放这些对象的源 。 如果不明确调用 Abandon的方法, 一旦会话超时,
服务器将删除这些对象 。 当服务器处理完当前页时, 下面示例将释放会话
状态 。 < % Session Abandon% >
返回目录
40
7.3 ASP内置对象 — Session对象
3,事件
Session对象有两个事件可用于在 Session对象启动和释放时的运行过程 。
( 1) Session_OnStart事件在服务器创建新会话时发生 。 服务器在执行请求
的页之前先处理该脚本 。 Session_OnStart事件是设置会话期变量的最佳时机,
因为在访问任何页之前都会先设置它们 。 尽管在 Session_OnStart事件包含
Redirect或 End方法 调用 情况下 Session对象仍会保持, 然而服务器将停止处
理 Global.asp文件并触发 Session_OnStart事件的文件中的脚本 。
为了确保用户在打开某个特定的 Web页时始终启动一个会话, 可在
Session_OnStart事件中调用 Redirect方法 。 当用户进入应用程序时, 服务器
将为用户创建一个会话并处理 Session_OnStart事件脚本 。 用户可以将脚本包
含在该事件中以便检查用户打开的页是不是启动页, 如果不是, 就指示用
户调用 Response.Redirect方法启动网页 。
( 2) Session_OnEnd事件在会话被放弃或超时发生 。
返回目录
41
7.3 ASP内置对象 — Session对象
4,会话的 3种方式启动:
( 1) 一个新用户请求访问一个 URL,该 URL标识了某个应用程序中
的,asp文件, 并且该应用程序的 Global.asa文件包含 Session_onStart过
程 。
( 2) 用户在 Session对象中存储了一个值 。
( 3) 用户请求了一个应用程序的,asp文件, 并且该应用程序的
Global.asa文件使用 < OBJECT>标签创建带有会话作用域的对象的
实例 。
如果用户在指定时间内没有请求或刷新应用程序中的任何页, 会话
将自动结束 。 这段时间的默认值是 20分钟 。 可以通过在 Internet服务
管理器中设置, 应用程序选项, 属性页中的, 会话超时, 属性改变
应用程序的默认超时限制设置 。
返回目录
42
7.3 ASP内置对象 — Server对象
Server对象提供对服务器上方法和属性的访问, 其中大多数方法和
属性作为实用程序的功能服务 。
1,语法, Server.property|method
property表示 Server对象的属性, method表示 Server对象的方法 。
2,属性
ScriptTimeout为超时值, 在脚本运行超过这一时间后即作超时处理 。
指 定 服 务 器 处 理 脚 本 在 75 秒 后 超 时 的 代 码 为, < %
Server.ScriptTimeout=75% >
3,方法
( 1) HTMLEncode方法
返回目录
43
7.3 ASP内置对象 — Server对象
HTMLEncode方法允许对特定的字符串进行 HTML编码, 虽然
HTML可以显示大部分写入 ASP文件中的文本, 但当文本包含 HTML
标记中所使用的字符时就会遇到问题, 因为浏览器读到这样的字符
串时会试图进行解释 。
( 2) URLEncode方法
Server对象的 URLEncode方法可以根据 URL规则对字符串进行正确
编码, 当字符串数据以 URL的形式传递到服务器时, 在字符串中不
允许出现空格, 也不允许出现特殊字符 。 如果希望在发送字符串之
前进行 URL编码, 可以使用 Server.URLEncode方法 。
( 3) MapPath方法
MapPath方法将指定的相对或虚拟路径映射到服务器上相应的物
理目录上 。 语法,Server.MapPath(Path)
Path指定要映射物理目录的相对或虚拟路径 。
返回目录
44
7.3 ASP内置对象 — Server对象
( 4) CreateObject方法
Server.Createobject恐怕是 ASP中最实用也最强劲的功能了 。 它用于
创建已经注册到服务器上的 ActiveX组件实例 。 这是一个非常重要的
特性, 通过使用 ActiveX组件能够轻松地扩展 ActiveX的能力, 正是
使用了 ActiveX组件, 许多至关重要的功能得以实现, 如数据库连接,
文件访问, 广告显示等, 还有其他 VBscript不能提供或不能简单地
依靠单独使用 ActiveX所能完成的功能 。 这些组件使得 ASP具有强大
的生命力 。
语法,Server.CreateObject(“Component Name”)
默认情况下, 由 Server.CreateObject方法创建的对象具有页作用域 。
返回目录
45
7.4 ASP内置组件 — 不可缺少的 ActiveX组件
ActiveX组件是一个存在于 Web服务器上的文件, 该文件包含执行
某项任务或一组任务的代码, 组件可以执行公用任务, 这样就不必
自己去创建执行这些任务的代码 。 当 Web服务器安装完 ASP环境后,
就可以直接使用它自带的几个常用组件, 如 Database Access组件 。
要使用组件提供的对象, 首先要创建对象的实例并给这个新的实例
分配变量名 。 可以使用 ASP的 Server.CreateObject方法创建对象的实
例, 接着, 再使用脚本语言的变量分配指令为对象实例命名 。 创建
对象实例时, 必须提供实例的注册名称, PROGID”。 如下脚本创建
一个 AdRotator对象的实例:
< % SetMyAds=Server.CreateObject(“MSWC.AdRotator”)% >
返回目录
46
7.4 ASP内置组件 — 不可缺少的 ActiveX组件
1,AdRotator组件
ADRotator组件能使用户在自己的网站上建立一个符合广告领域标准
功能的广告系统, 允许每次访问 ASP页面时在页面上显示新的广告,
并提供了很强的功能, AdRotator组件的工作是通过读取 AD Rotator计
划文件来完成的, 该文件包括要显示的图像文件地点有关的信息, 以
及每个图像的不同属性 。
2,Database Access组件
Web应用程序最常见和最实用的任务就是访问服务器端的数据库 。
ASP内建的 Database Access组件使通过 ADO (ActiveX Data Objects)访问
服务器端的数据库或其他表格化数据结构中的信息变得很容易 。 ADO
是对当前微软所支持的数据库进行操作的最有效和最简单直接的方法,
它是一种功能强大的数据访问编程模式, 使得大部分数据源编程的属
性得以直接扩展到 Active Server页面上 。
返回目录
47
7.4 ASP内置组件 — Browser Capabilitices组件
使用 ASP的 Browser Capabilities组件, 能够设计, 智能, 的 Web页,
以适合浏览器性能的格式呈现内容 。
Browser Capabilities组件能够创建一个 BrowserType对象, 该对象提
供带有客户端网络浏览器功能说明的用户脚本 。 该组件之所以能识别
客户浏览器的版本等信息, 主要因为当客户浏览器向服务器发送页面
请求时, 会自动发送一个 User Agent HTTP标题, 该标题是一个声明浏
览器及其版本的 ASCII字符串, Browser Capabilities组件将 User Agent
映射到在文件 Browscap.ini中所注明的浏览器, 并通过 BrowserType对
象的属性来识别客户浏览器 。 若该对象在 browscap.ini文件中找不到
与该标题匹配的项, 将使用默认的浏览器属性 。 若该对象既未找到匹
配项而且 browscap.ini文件也未指定默认浏览器设置, 则它将每个属
性都设为字符串, unknown”。
返回目录
48
7.4 ASP内置组件 — FileAccess组件
Web留言簿最早的雏形大概是, 恐龙时代, 的 CGI留言簿, 那时, 在
基于 Internet的 Web应用程序中连接服务器后端数据库还十分困难, 因
此留言簿中的历史信息不像如今那样存储在后端数据库中, 而是保存
在文本文件中 。 CGI程序可以把从客户端接收的信息写进一个存放在
服务器端的文本文件中, 该文件可以是 HTML文件或 TXT文件, 这使
得程序员能不通过与数据库连接就将客户信息保存下来 。 但是写此类
CGI程序十分烦琐 。
ASP File Access组件不仅可以写一些,log文件, 通过它甚至可以毫不
费力的远程自动更新网站, 只要把固定格式的文本文件传送到远端的
服务器上, 通过 File Access组件读取文件, 并自动生成全新 HTML页面
即可, 而不必再辛辛苦苦地一个一个地更新 HTML文件 。
返回目录
49
本 章 小 结
? ASP简介
? VBscript 脚本语言
– VBScript是 ASP的缺省语言, VBScript可以作为客户端编程语
言,也可以作为服务器端编程语言 。
– VBScript代码要写在成对的< SCRIPT>标记之间 。
– 声明变量的一种方式是使用 Dim语句 。
– VBScript可以声明常量, 一旦声明了一个常量, 该常量的值
将不能被改变 。
– 数组是一个可以存储一组值的变量 。
– 过程是一组能执行指定任务且具有返回值的脚本命令 。
– 函数和过程一样都是命名了的代码块, 函数则返回值 。
– 两种条件语句,If… Then… E1se语句 和 Select Case语句 。
返回目录
50
本 章 小 结
? ASP内置对象
– Application对象, Request对象, Response对象, Server对
象, Session对象 和 0bjectContext对象 。
? ASP内置组件
– ActiveX组件是一个存在于 Web服务器上的文件, 该文件包
含执行某项任务或一组任务的代码, 组件可以执行公用任务,
这样就不必自己去创建执行这些任务的代码 。
– 使用 ASP的 Browser Capabilities组件, 能够设计, 智能, 的
Web页, 以适合浏览器性能的格式呈现内容 。
– ASP File Access组件不仅可以写一些,log文件, 通过它甚至
可以毫不费力的远程自动更新网站 。
返回目录