第 7章 ASP对象
ASP动态网页设计教程
2
第 7章 ASP对象
7.1 对象的概念
7.2 Response对象
7.3 Request对象
7.4 Application对象
7.5 Session对象
7.6 Server对象
7.7 ObjectContext对象
3
7.1 对象的概念程序设计的概念发展至今,影响最深远的除了模块化设计外,大概就是对象的概念 。 什么是对象? 它们和 ASP又有什么关系? 在这一章将为您一一介绍 。
4
7.1 对象的概念
7.1.1 对象与面向对象
7.1.2 ASP的对象模块
5
7.1 对象的概念
7.1.1 对象与面向对象程序设计的概念发展至今,影响最深远的除了模块化设计外,大概就是对象的概念。
什么是对象?简单的说,对象就是由具有属性
(Properties)、方法 (Methods)及事件 (Events)三要素所组合而成的东西。在现实生活中,您每时每刻都在看到对象,比如说手机、书、计算机等等。这些对象都必须具有以下三个性质:
( 1)具有属性可以描述
( 2)具有方法可以使用
( 3)具有事件可以产生行为
6
7.1 对象的概念
7.1.1 对象与面向对象比如说手机就具有下列对象特性,如下表所示。
根据上述特性,我们可以说这个对象是手机,也可以说手机就是个对象。
属 性 方 法 事 件天 线 拨 号 电话响了材 质 接 听 电话无信号颜 色 拨 号 电话占线重 量 挂 断 语音通知号 码电话号码电 信
7
7.1 对象的概念
7.1.1 对象与面向对象下面我们来看看几个对象的名词:
● 类 (Class)与实例 (Instance)
类,顾名思义就是种类的意思。以上面的手机为例,它所描述的是手机该有的条件,没有了这些条件,
它就不会是手机,所以“手机”是一个类。那末,什么又是实例呢?比如说 A的手机是 Sagem MC725,B
的手机是 Nokia 3210。虽然它们都是手机,但是长得却不一样,虽然不同,又都有手机的特征及功能。这时我们就称为 Sagem MC725及 Nokia 6150为手机类的实例。
8
7.1 对象的概念
7.1.1 对象与面向对象
● 属性 (Property)
所谓属性,就是对象的特征。这些特征对每个实例而言,都有一个独特的值,以 A的 Sagem手机和 B的
Nokia手机为例,说明如下表所示。
属 性 A的手机 B的手机天线 不发光 发光材质 塑料 塑料颜色 蓝色 红色重量 300g 200g
号码 13905456551 13005456527
电信 中国移动通信 中国联通由表发现,A
的手机和 B的手机的特性是不一样的。
虽然不一样,
但是隶属的属性却是相同的。
9
7.1 对象的概念
7.1.1 对象与面向对象
● 方法 (Method)
所谓方法,就是该对象所能采取的行为。比如说,
A的手机可以接听电话,拨号及挂断电话。这些动作就是手机可以采取的行为。
● 事件 (Event)
所谓事件,就是对象与外界沟通的方法。举例来说,假设 B打电话给 A,A的手机如何让 A知道呐?利用声音!只要电话响了,A就知道该接听电话了。
“电话响了”就是一个事件,然后利用“接听”的方法来听电话。
10
7.1 对象的概念
7.1.1 对象与面向对象
● 封装 (Encapsulation)
所谓封装,就是将功能装在对象当中,用户不必知道那些功能的背景是如何运行,只要会用就可以了。
比如说,A的手机响了,A不必知道为什么它会响,
只要按下按钮就可以接听了。接听时也不必管为什么会有声音出来,只要听得到就可以了。
11
7.1 对象的概念
7.1.2 ASP的对象模块前面讲了许多对象的概念,目的在给读者一些热身,因为
ASP 本身是以对象的概念发展而来,如果读者有一些对象的概念来看会清楚得多。在 ASP 的程序模块里,有许多的功能可以运用,这些功能可以用来产生动态网页或者与数据库沟通。为了使用方便,这些功能被分成七个对象,它们分别是:
● Response对象
● Request对象
● Application对象
● Session对象
● Server对象
● ObjectContext对象
● ASPError对象
12
7.1 对象的概念
7.1.2 ASP的对象模块这些对象彼此之间有交互关系存在,有的是大对象中含有小对象,有时是彼此相连。它们的关系如下图所示。
在 ASP的对象里,除了前面所提的属性、方法和事件,还包括了一个新的东西:数据集合 (Collection)。所谓数据集合是一数据结构 (Data Structure)。数据在存储时会被赋予一个键 (Key),如果能够知道这个键的值,那这个数据集合的值就可以被取得。
13
7.2 Response对象在 ASP里,Response对象主要是提供输出的接口,
让程序能够控制返回的信息。
7.2.1 Response的数据集合
7.2.2 Response的属性
7.2.3 Response的方法
14
7.2 Response对象
7.2.1 Response的数据集合
Response对象只有一个数据集合,就是 Cookies。它是用来在 Client端写入相关数据,以便以后使用。它的语法是:
Response.Cookies("Cookies的名字 ")="Cookies的值 "
请注意,Response.Cookies语句必须放在 ASP文件的最前面,
也就是 <html>之前,否则将发生错误。
范例 ch7-1.asp
<%
lastvisit=Request.cookies("visited")
Response.cookies("name")="拜访者 "
Response.cookies("visited")=now
Response.cookies("name").expires=date+30
Response.cookies("visited").expires=date+30
%>
<html>
<head>
15
7.2 Response对象
7.2.1 Response的数据集合范例 ch7-1.asp(续 )
<title>Response.cookies</title>
</head>
<body><center>
<h2>Response.cookies测试 </h2><hr width="350">
<%
name=request.cookies("name")response.write name & " 您好 !!" & " 现在是 " & now & "<br>"
response.write "您上次拜访时间是 " & lastvisit%>
<hr width="350">
</center><center>
Created by <br><img src=tiedao.bmp>
</center>
</body></html>
16
7.2 Response对象
7.2.1 Response的数据集合这个范例的目的在将访问者的上次访问时间记录起来,并显示于浏览器,其要点就在于利用 lastvisit=Request.cookies(“visited”)
取回上次所存储的 Cookies,然后再用
Response.cookies(“visited”)=now把这次的时间存回 Cookies以待下次之用。 执行结果如下图所示。
17
7.2 Response对象
7.2.2 Response的属性
Response对象共有 9个属性,它们是:
( 1) Buffer
( 2) Cachecontrol
( 3) Charset
( 4) ContentType
( 5) Expires
( 6) ExpiresAbsolute
( 7) IsClientConnected
( 8) PICS
( 9) Status
● Buffer属性
Buffer属性用来决定是否要将网页内容存储于缓冲区。语法如下:
Response.buffer=True/False
请注意:本行一定要放在网页最开头。
18
7.2 Response对象
7.2.2 Response的属性
● Cachecontrol
Cachecontrol是用来设置 ASP的处理结果是否需放在 Proxy服务器上。
语法如下:
Response.cachecontrol=Public/Private
注意:如果您的浏览器并未设置 Proxy,无论您如何设置
Response.cachecontrol,都不会有任何作用。
● Charset
Charset是用来设置响应给浏览器的语言,如 En或 GB。语法如下:
Response.Churset=语言名称
● ContentType
ContentType是用来设置响应给浏览器的 http文件类型,如 text/html。
语法如下:
Response.contenttype=文件类型
19
7.2 Response对象
7.2.2 Response的属性
● Expires
Expires是用来设置 ASP网页保留在浏览器 cache的时间,以分钟计算。
它的语法如下:
Response.expires=分钟数
● ExpiresAbsolute
Expiresabsolute是用来设置保留在 cache内的网页到期的时间,以日期及时刻计算。它的语法如下:
Response.expiresabsolute=日期及时间例如,Response.expiresabsolute=#April 30,2000,12:00:00#1
● IsClientConnected
IsClientConnected是用来判断浏览器是否仍和服务器端相连接。它的语法如下:
Response.isclientconnected
响应值会是 True或者 False。
20
7.2 Response对象
7.2.2 Response的属性
● PICS
PICS的全名是 The Platform for Internet Content Selection,它是用来设置系统及数据等级。语法如下:
Response.PICS(PICS字符串 )
● Write
Write是用来将字符串的内容输出到浏览器上。它的语法是:
Response.write "字符串,/函数
Response.write的用法及范例已于前面章节提过,这里就不再重复。
● Status
Status是用来检查服务器返回给浏览器的状态,它的响应值是一个代码加上简短的说明。下表是 Status所会见到的代码及说明。
21
7.2 Response对象
7.2.2 Response的属性代码 说 明
100 继续( Continue)
101 切换协议( Switching Protocol)
200 OK
201 创建( Created)
202 接受( Accepted)
203 无授权的信息 (Non Authoritative
Information)
204 没有网页内容( No Content)
205 重置网页内容( Reset Content)
206 部分网页内容( Partial Content)
300 多重选择( Multiple Choices)
301 永久迁移( Moved Permanently)
代码 说 明
302 发现( Found)
303 查看其他( See Other)
304 无修改( Not Modified)
305 使用 Proxy( Use Proxy)
306 没有使用( Unused)
307 暂时转向( Temporary Redirect)
400 不正确的要求
401 无授权( Unauthorized)
402 付费要求( Payment Required)
403 禁止( Forbidden)
404 没有发现( Not Found)
22
7.2 Response对象
7.2.2 Response的属性代码 说 明
415 不支持的媒体类型 (Un supported
Media Type)
416 输入的范围不合适 (Requested Range
Not Certifiable)
417 请求失败 (Expectation Failed)
500 服务器内部错误 (Internal Server Error)
501 不执行 (Not Implemented)
502 网关错误 (Bad Gateway)
503 服务无法使用 (Service Unavailable)
504 网关超时 (Gateway Timeout)
505 不支持此版的 http协议 (HTTP Version
Not Supported)
代码 说 明
405 不允许使用这种方法 (Method Not
Allowed)
406 不接受 (Not Acceptable)
407 Proxy需授权才能使用 (Proxy
Authentication Required)
408 超时 (Request Time out)
409 冲突 (Conflict)
410 结束 (Gone)
411 长度要求 (Length Required)
412 先决条件失败 (Precondition Failed)
412 输入的内容过大 (Request Entity
Too Large)
414 URL太长 (Request-URL Too Long)
23
7.2 Response对象
7.2.2 Response的属性下面是一个测试 Response对象属性的范例 (Ch7-2.asp):
<%
Response.buffer = true
Response.charset = big5
Response.expires = 1
%>
<HTML>
<HEAD>
<TITLE>Response对象测试 </TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<h2><center>Response 对象属性测试
</center></h2>
<hr>
Response.Buffer = <% =
Response.Buffer %><br>
Response.CacheControl = <% =
Response.CacheControl %><br>
Response.ContentType = <% =
Response.ContentType %><br>
Response.ExpiresAbsolute = <% =
Response.ExpiresAbsolute %><br>
Response.IsClientConnected = <% =
Response.IsClientConnected %><br>
Response.Status = <% =
Response.Status %><br>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
24
7.2 Response对象
7.2.2 Response的属性下图为对象属性测试结果 (部分属性因为设置的关系,无法在浏览器显示出设置结果 )。
25
7.2 Response对象
7.2.3 Response的方法
Response对象共有八种方法,它们是:
( 1) AddHeader
( 2) AppendToLog
( 3) BinaryWrite
( 4) Clear
( 5) End
( 6) Flush
( 7) Redirect
( 8) Write
● AddHeader
AddHeader方法是用来设置 HTML文件的标题 (Head)。它的语法如下:
Response.Addheader标题变量名称,标题变量值
26
7.2 Response对象
7.2.3 Response的方法
● AppendToLog
AppendToLog是用来添加一段文字在服务器的登录文件 (Log File)中,
以便追踪及分析使用记录。它的语法如下:
Response.AppendtoLog”字符串”
● BinaryWrite
BinaryWrite是用来输出二进制数据到浏览器,所输出的数据不经过任何字符集的转换。它的语法如下:
Response.Binarywrite”数据内容”
● Clear
Clear是用来将缓冲区数据清除掉。语法如下:
Response.Clear
● End
End是用来即刻停止正在处理的网页,并将结果返回到网页。语法为,Response.end
请注意:这个命令只在
Response.Buffer的设置是 True时才会生效,不然返回一个错误信息。
27
7.2 Response对象
7.2.3 Response的方法
● Flush
Flush是用来将缓冲区的数据送至浏览器。它的语法如下:
Response.flush
下面是 Flush范例 Ch7-3.asp。
<% response.buffer = true %>
<HTML>
<HEAD>
<title>Response.flush测试 </title>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<h2><center><p>Response.flush测试
<p></center></h2>
<hr>
<%
Response.flush
stringTxt =,这是由 response.Flush做出来的文字,你好吗?"
For i = 1 To Len(stringTxt)
For intWrite = 1 To 500000,Next
Response.Write Mid(stringTxt,i,1)
Response.Flush
Next
%>
<hr>
<center>
Created by <br>
<img src=tiedao.jpg>
</center>
</BODY>
</HTML>
请注意:这个命令只能在 buffer为
true时使用,不然会产生错误。
28
7.2 Response对象
7.2.3 Response的方法这个范例会利用 Flush的原理,将文字以跑马灯的方式一个字接一个字的显示出来 (如初次运行该范例“跑马灯”效果不明显,
可按“刷新”按钮看其显示效果 )。
执行结果如下图所示。
29
7.2 Response对象
7.2.3 Response的方法
● Redirect
Redirect是用告诉浏览器转向到另一个网页。它的语法是:
Response.redirect
请注意:这个命令必须放在 <html>之前,否则会产生错误。 下面是一个转向的范例 Ch7-4.asp:
<html>
<head>
<title>Response.redirect测试
</title></head>
</head>
<body>
<center>
<h2>Response.redirect测试 </h2>
</center>
<hr>
<form action="ch7-5.asp" method="post">
<input type="RADIO" name="selection"
value=“1” checked> 转到中国铁道出版社 ——计算机图书项目中心网站 <br>
<input type="RADIO" name="selection"
value="2"> 不转到中国铁道出版社 ——
计算机图书项目中心网站 <br>
<p>
<input type=“SUBMIT” name=“所按按钮 " value="填好了 ">
<input type="RESET" name="所按按钮 "
value="重填 ">
</form>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
30
7.2 Response对象
7.2.3 Response的方法范例 Ch7-5.asp
<%
If request.form("selection")=1 then
response.redirect " http://www.tqbooks.net/"
else
response.write "你选择不转向 "
end if
%>
这个范例是利用一个 Form来读取用户的选择,然后根据用户的选择来决定要不要转向。
31
7.2 Response对象
7.2.3 Response的方法例如我们选择“转到中国铁道出版社 ——计算机图书项目中心网站”选项,按 按钮,如下图 a所示,执行结果如下图 b所示。
请注意:图示结果只有在连接上互联网情况下才能出现。
图 a 图 b
32
7.3 Request对象在第 5章时,笔者曾提过,有输出必有输入,当时与 Response一搭一唱扮演输入角色的就是 Request。这一节我们就来看看这个对象。
7.3.1 Request的数据集合
7.3.2 Request的属性
7.3.3 Request的方法
33
7.3 Request对象
7.3.1 Request的数据集合
Request共有 5个数据集合,它们是:
( 1) ClientCertificate
( 2) Cookies
( 3) Form
( 4) QueryString
( 5) ServerVariables
● ClientCertificate
ClientCertificate是用来取得浏览器端的身份认证。它的语法如下:
Request.ClientCertificate(关键字)
● Cookies
Request.cookies和 Response.cookies刚好是相对的。 Response.cookies
是将 Cookies写入,而它则是将 cookies的值取出。语法如下:
变量= Request.cookies("cookies的名字 ")
注意:浏览器端要用 https://与服务器连接,而服务器端也要设置用户需要认证,Request.ClientCertificate
才会有效
34
7.3 Request对象
7.3.1 Request的数据集合
● Form
Form是用来取得由表单所发送的值。它的语法与范例已于前面章节讲过,这里就不再详述。
● QueryString
QueryString和 Form一样,都是取得前一页所发送的值。不同的是,
Form是利用表单取得数据,而 QueryString则是利用参数来取得数据。下面是一个 QueryString的范例 (ch7-6.asp),
<html>
<head>
<title>QueryString测试 </title>
</head>
<body>
<center>
<h2>QueryString测试 </h2>
</center>
<hr>
请按 <a href=ch7-7.asp?name="无名氏 ">这里 </a>
将 QueryString 送出
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
35
7.3 Request对象
7.3.1 Request的数据集合范例 ch7-7.asp
<html>
<head>
<title>输出结果 </title>
</head>
<body>
<center>
<h2>输出结果 </h2>
</center>
<hr>
<% Response.write "您传送过来的是 " &
Request.QueryString("name") & " 三个字 " %>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
36
7.3 Request对象
7.3.1 Request的数据集合在第一个文件中创建了一个链接 <a href=/ch7-7.asp?name=“无名氏,>将 QueryString”无名氏”三个字送出,而在第二个文件中则利用 Request.QueryString(name)记录送来的结果,并通过
Response.Write将字符串显示于浏览器,执行过程如图 a与图 b所示。
图 a 图 b
37
7.3 Request对象
7.3.1 Request的数据集合
● ServerVariables
ServerVariables是用来存储环境变量及 http标题 (Header)。因其相关变量极多,在这里不多加详述。如果读者有兴趣,可以参考
RFC2616文件 (http://www.w3.org/Protocols/rfc 2616/rfc2616.html)。
下面是一个用来显示 ServerVariables的范例,读者可以试着修改它来显示其他 ServerVariables。
范例 ch7-8.asp
<HTML>
<HEAD>
<TITLE>ServerVariables测试 </TITLE>
</HEAD>
<BODY>
<center>
<h2>Servervariables测试 </h2>
</center>
<hr>
<TABLE CELLPADDING=0 CELLSPACING=0>
38
7.3 Request对象
7.3.1 Request的数据集合范例 ch7-8.asp(续 )
<%
Response.Write "<TR><TD>HTTPS = " & Request.ServerVariables("HTTPS")
& "</TD></TR>"
Response.Write "<TR><TD>LOCAL_ADDR = " & Request.ServerVariables
("LOCAL_ADDR") & "</TD></TR>"
Response.Write "<TR><TD>PATH_INFO = " &
Request.ServerVariables("PATH_INFO") & "</TD></TR>"
Response.Write "<TR><TD>PATH_TRANSLATED = " &
Request.ServerVariables ("PATH_TRANSLATED") & "</TD></TR>"
Response.Write "<TR><TD>REMOTE_ADDR = " & Request.ServerVariables
("REMOTE_ADDR") & "</TD></TR>"
Response.Write "<TR><TD>REMOTE_HOST = " & Request.ServerVariables
("REMOTE_HOST") & "</TD></TR>"
Response.Write "<TR><TD>REQUEST_METHOD = " &
Request.ServerVariables ("REQUEST_METHOD") & "</TD></TR>"
39
7.3 Request对象
7.3.1 Request的数据集合范例 ch7-8.asp(续 )
Response.Write "<TR><TD>SERVER_PORT = " & Request.ServerVariables
("SERVER_PORT") & "</TD></TR>"
Response.Write "<TR><TD>SERVER_NAME = " & Request.ServerVariables
("SERVER_NAME") & "</TD></TR>"
Response.Write "<TR><TD>HTTP_ACCEPT = " & Request.ServerVariables
("HTTP_ACCEPT") & "</TD></TR>"
Response.Write "<TR><TD>HTTP_ACCEPT_LANGUAGE = " &
Request.ServerVariables ("HTTP_ACCEPT_LANGUAGE")& "</TD></TR>"
Response.Write "<TR><TD>HTTP_USER_AGENT = " & Request.ServerVariables
("HTTP_USER_AGENT") & "</TD></TR>"
%>
</TABLE>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</BODY>
</HTML>
40
7.3 Request对象
7.3.1 Request的数据集合测试结果如下图所示。
41
7.3 Request对象
7.3.2 Request的属性
Request对象只有一个属性 TotalBytes,它是用来存储由浏览器送到服务器的字节数,语法如下:
Request.TotalBytes
范例 ch7-9.asp
<html>
<head>
<title>Property测试 </title>
</head>
<body>
<center>
<h2>Property测试 </h2>
</center>
<hr>
<form action="ch7-10.asp"
method="post">
请输入您的大名,<input type="text"
name="name" size="21" value="">
<p>
<input type="SUBMIT" name=“
所按按钮 " value="提交 ">
<input type="RESET" name=“
所按按钮 " value="重填 ">
</form>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
42
7.3 Request对象
7.3.2 Request的属性范例 Ch7-10.asp
<html>
<head>
<title>输出结果 </title></head>
<body>
<center>
<h2>输出结果 </h2>
<hr>
<%
response.write "您的大名是," & request.form("name") & "<br>"
response.write "总计接收长度为," & request.totalbytes & " Bytes"
%>
<hr>
<center>
Created by <br>
<img src= tiedao.bmp>
</center>
</body>
</html>
43
7.3 Request对象
7.3.2 Request的属性这个范例先利用一个表单来读取用户输入的资料,再加上网页中的字符 Bytes数,然后于第二个文件中用 Request.TotalBytes 显示出总计长度。执行过程如下图 a所示,执行结果如下图 b所示。
图 a 图 b
44
7.3 Request对象
7.3.3 Request的方法
Request 对象只有一个方法 BinaryRead。当浏览器以 post方式发送数据时,使用这个方法可将数据以二进制格式读取,并存储于一个数组中。这个方法的语法如下:
数组名= Request.BinaryRead(数值)
基本上,Request.BinaryRead 是一个很少使用的程序。您只需知道有它的存在就可以了。
45
7.4 Application对象
Application 对象在 ASP 当中,是用来管理应用程序。它起始于浏览器对 Web 服务器的第一个 ASP 文件要求,结束于服务器关闭。基本上,Application 等级的变量可以给一个以上的用户在同一时间使用。
7.4.1 事件处理与全局
7.4.2 Application的数据集合
7.4.3 Application的方法
7.4.4 Application的事件
46
7.4 Application对象
7.4.1 事件处理与全局在开始谈 Application 对象之前,首先来看看事件处理 (Event
Handler)及全局 (Global)的概念。所谓事件处理,就是指处理事件的一些程序,而这些事件的程序,是以子程序的方法存在。它的格式如下:
Sub Application-On Start
程序区域
End Sub
Sub Application-On End
程序区域
End Sub
事件处理必须以全局的方法存在。所谓全局,就是指可以由多个程序来使用的变量或程序,这些变量或程序在使用上不必重新定义。在 ASP中,全局的概念是由 Global.asa来执行。
47
7.4 Application对象
7.4.1 事件处理与全局
Globul.asa是一个文件,它的格式必须是 <script
Language=VBScript runat=server>开头,并由 </script>结尾。另外,
Globul.asa必须放在网站的根目录才能被当作全局文件来使用。
总而言之,事件处理与全局的概念在 ASP中执行就是以下列格式创建文件:
<Script Language=VBScript runat=Server>
Sub Application.On Start
程序区域
End Sub
Sub Application-On End
程序区域
End Sub
</Script>
并以 Global.asa为名存储于 Web服务器的根目录。
48
7.4 Application对象
7.4.2 Application的数据集合
Application对象共有两个数据集合,它们是:
( 1) Contents
( 2) StaticObjects
● Contents
Contents数据集合包含了所有 Application对象中的所有变量,但是不包括由 <object>所创建的对象变量。它的语法是:
Application.Contents(变量名称)
下面是它的使用范例 (global.asa):
<script language=VBScript runat=server>
sub application_OnStart
application("Today")=date
application("Times")=time
end sub
</script>
注:本 Global.asa文件范例存放在 MyASP文件夹中了。
49
7.4 Application对象
7.4.2 Application的数据集合范例 ch7-11.asp
<html>
<head>
<title>Contents测试 </title>
</head>
<body>
<center>
<h1>Contents测试 </h1>
<hr>
<% for each var in application.contents
response.write "Application 有这个变量 " & var
response.write ",它的值是 " & application.contents(var)
response.write "<br>"
next
%>
<hr>
<center>
Created by <br>
<img src=tiedao.jpg>
</center>
</body>
</html>
50
7.4 Application对象
7.4.2 Application的数据集合在 Global.asa 中创建了两个变量 Today 和 Times。
而在 Ch7-11.asp中,利用一个循环配合
Application.Contents,可以把全部的变量和它的值返回到浏览器上,如下图所示。
51
7.4 Application对象
7.4.2 Application的数据集合
● StaticObjects
StaticObjects和 Contents的原理及用法大致相同。所不同的是,Contents返回的是不含 <object>所创建的对象变量,而 StaticObjects所返回的是由 <object>所创建的对象变量。 StaticObject的语法如下:
Application.StaticObjects(对象变量)
52
7.4 Application对象
7.4.3 Application的方法因为 Application对象根本没有属性,所以就直接来讲方法了。 Application对象有两个方法,它们是:
( 1) Lock
( 2) Unlock
这两个方法是相对的,lock 是用来锁定数据,而
Unlock则是用来解除锁定。为什么要锁定数据呢?因为
Application对象所储存的内容是共享,有异常情况发生时,如果没有锁定数据会造成数据不一致的状况发生,
并造成数据的不正确性。 Lock与 Unlock的语法如下:
Application.lock
欲锁定的程序语句
Application.unlock
53
7.4 Application对象
7.4.3 Application的方法例如:
Application.lock
Application("Balance")=Application("Balance")+deposit
Application.unlock
以上的 Balance变量在程序执行,+deposit”时会被锁定住,其他欲更改 Balance变量的程序将无法更改它,
直到锁定解除为止。
54
7.4 Application对象
7.4.4 Application的事件
Application对象共有两个事件,它们是
( 1) Application-OnStart
( 2) Application-OnEnd
顾名思义,Application-OnStart就是在 Application开始时所触发的事件,而 Application-OnEnd则是在 Application结束时所触发的事件。那它们怎么用呢?其实这两个事件是放在 Global.asa当中,用法也不像数据集合或属性那样是“对象,数据集合”或“对象,属性”,而是以子程序的方式存在。它们的格式是:
Sub Application-OnStart
程序区域
End Sub
Sub Application-OnEnd
程序区域
End Sub
55
7.4 Application对象
7.4.4 Application的事件让我们回顾一下 Ch7-11中所用的 Global.asa
<script language=VBScript runat=server>
sub application_OnStart
application("Today")=date
application("Times")=time
end sub
</script>
在这个文件中就用到了 Application-OnStart事件。由程序中可以看到定义了两个变量,Today”和,Times”。而将这两个变量放在 Application-OnStart中就是让 Application对象一开始就有,Today”
和,Times”这两个变量。
56
7.5 Session对象
Session对象基本上和 Application对象是一个很类似的对象。不同的是,Session对象是在浏览器每读取一个网页就会被自动创建,而旧的 Session也会被终止。 Session对象在 ASP中,主要是用来记录用户的信息。
7.5.1 Session的数据集合
7.5.2 Session的属性
7.5.3 Session的方法
7.5.4 Session的事件 (Event)
57
7.5 Session对象
7.5.1 Session的数据集合
Session的数据集合有两个,它们是:
( 1) Contents
( 2) StaticsObjects
● Contents
Contents包含了所有此 Session可以用的变量,但不包含由 <object>所创建的对象变量。它的语法是:
Session.Contents(变量名称)
下面是一个使用范例 (见下页 ):
58
7.5 Session对象
7.5.1 Session的数据集合范例 Global.asa
<script language=VBScript runat=server>
sub application_OnStart
application("Today")=date
application("Times")=time
end sub
sub session_OnStart
session("Today")=date
session("Times")=time
session("address")=Request.ServerVariables("Local_Addr")
end sub
</script>
注:本 Global.asa文件范例存放在 MyASP文件夹中了。因该文件与前面所讲 Global.asa文件同存在根目录下发生冲突,考虑到该文件代码中包含了前面 Global.asa文件内容,故用该文件替代了原
Global.asa文件。
59
7.5 Session对象
7.5.1 Session的数据集合范例 ch7-12.asp
<html>
<head>
<title>Contents测试 </title>
</head>
<body>
<center>
<h2>Contents测试 </h2>
<hr>
<%
for each var in session.contents
response.write "Session 有这个变量 " & var
response.write ",它的值是 " & session.contents(var)
response.write "<br>"
next
%>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
60
7.5 Session对象
7.5.1 Session的数据集合这个范例先在 Global.asa中定义 Session所会用到的变量
,Today”,,Times”及,Address”。 然后在 ch7-12.asp中利用一个循环将变量及变量值显示于浏览器 。 结果如下图所示 。
61
7.5 Session对象
7.5.1 Session的数据集合
● StaticObjects
StaticObjects和 Contents的概念和用法大致相同。所不同的是,StaticObjects所返回的是由 <object>所创建的对象变量。它的语法如下:
Session.StaticObjects(变量名称)
下面是一个 StaticObjects的范例,因为它所使用的 Global.asa
与上面相同,所以不再列出 Global.asa的内容。
62
7.5 Session对象
7.5.1 Session的数据集合范例 ch7-13.asp
<html>
<head> <title>StaticObjects测试 </title> </head>
<body>
<center>
<h2>StaticObjects测试 </h2>
<hr>
<%
for each obj in session.StaticObjects
response.write "Session 有这个对象变量 " & obj
response.write ",它的值是 " & session.StaticObjects(obj)
response.write "<br>"
next
%>
<hr>
<center>
Created by <br> <img src=tiedao.bmp> </center>
</body>
</html>
63
7.5 Session对象
7.5.2 Session的属性
Session 共有 4种属性,它们是:
( 1) CodePage
( 2) LCID
( 3) SessionID
( 4) Timeout
● Codepage
Codepage是一个代码,这个代码所代表的是字符集。当 ASP
处理网页内容时,它会根据这个代码将网页的字符转为自动识别
(UNICODE)。常见的代码如右表所示。
932 日文
( Shift-JIS)
936 中文简体
( GB)
949 韩文
950 中文繁体
( Big5)
1200 自动识别
( UNICODE)
52936 中文简体
( Hz)
64
7.5 Session对象
7.5.2 Session的属性可以使用下列语法来设置 Code page:
Session.codepage=代码或者用下列语法来看目前的设置:
=session.codepage
范例 ch7-14.asp
<html>
<head><title>codepage范例 </title></head>
<body>
<center>
<h2>Codepage测试 </h2>
<hr>
目前的设置为,<% =session.codepage %>
<hr>
<center>
Created by <br> <img src=tiedao.bmp> </center>
</body>
</html>
65
7.5 Session对象
7.5.2 Session的属性
ch7-14.asp这个范例执行后会显示目前的 Codepage设置到浏览器,在此所使用的是中文简体设置,所以返回 936。 执行结果如下图所示 。
66
7.5 Session对象
7.5.2 Session的属性
● LCID
LCID和 Codepage一样都是一个代码,它所代表的是国家或地区的相关设置。这些相关设置包括时间格式及货币显示等等。
因为 LCID的表格极长,在这里不列出。读者可以在
http://msdn.microsoft.com/scripting/default.htm?/scripting/vbscript/do
c/vsmscLCID.htm找到这个表。
LCID可以用下列语法设置:
Session.LCID=代码或者用下列语法来看目前的设置:
=Session.LCID
67
7.5 Session对象
7.5.2 Session的属性范例 ch7-15.asp
<html>
<head>
<title>LCID测试 </title>
</head>
<body>
<center>
<h2>LCID测试 </h2>
</center>
<hr>
目前的 LCID = <% = session.LCID %><br>
时间格式是 <% response.write now %><br>
<% Response.Write("货币格式是 "&
FormatCurrency(9999.99)) %>
<p>
<% session.LCID=3079 %>
瑞典的 LCID = <% = session.LCID %><br>
时间格式是 <% response.write now %><br>
<% Response.Write("货币格式是 "&
FormatCurrency(9999.99)) %>
<p>
<% session.LCID=2057 %>
英国的 LCID = <% = session.LCID %><br>
时间格式是 <% response.write now %><br>
<% Response.Write("货币格式是 "&
FormatCurrency(9999.99)) %>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
68
7.5 Session对象
7.5.2 Session的属性
ch7-15.asp这个范例会显示目前,瑞典及英国的 LCID及时间格式和货币格式。可以比较一下它们的差异性。执行结果如右图所示。
69
7.5 Session对象
7.5.2 Session的属性
● SessionID
SessionID是每一个 Session的代码,这个代码由服务器所产生。读者可以使用下列语法来看 Session代码:
=Session.SessionID
范例 ch7-16.asp
<html>
<head>
<title>SessionID测试 </title>
</head>
<body>
<center>
<h2>SessionID测试 </h2>
</center>
<hr>
SessionID = <% =Session.SessionID
%><br>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
70
7.5 Session对象
7.5.2 Session的属性这个范例会将 Session的 ID返回在浏览器上 。 执行结果如下图所示 。
71
7.5 Session对象
7.5.2 Session的属性
● Timeout
Timeout是用来设置每个 Session 结束的时间,如果这段时间内没有任何向 Session提出请求的话,这个 Session就会被结束并释放出它所占用的资源。您可以使用下列语法来设置 Timeout:
Session.timeout=分钟数或者用下列语法来看目前的 timeout设置:
=Session.timeout
系统所默认 timeout值是 20分钟。下面是一个使用范例:
72
7.5 Session对象
7.5.2 Session的属性范例 ch7-17.asp
<html>
<head>
<title>Timeout测试 </title>
</head>
<body>
<center>
<h2>Timeout测试 </h2>
</center>
<hr>
Timeout = <% =Session.Timeout %><br>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
73
7.5 Session对象
7.5.2 Session的属性这个范例会将目前的默认 Timeout值返回至浏览器 。 执行结果如下图所示 。
74
7.5 Session对象
7.5.3 Session的方法
Session对象只有一个方法,就是 Abandon,它是用来立即结束 Session并释放资源,Abandon的语法如下:
=Session.abandon
范例 7-18.asp
<html>
<head>
<title>abandon测试 </title>
</head>
<body>
<center>
<h2>abandon测试 </h2>
</center>
<hr>
本次 Session,你已经来过此页
<% =Session("NumCount") %>
次,
<% Session("NumCount") =
Session("NumCount") + 1 %>
<p>
SessionID = <% =Session.SessionID
%><br>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
75
7.5 Session对象
7.5.3 Session的方法这个范例中的 <% Session(,Numcount”) =Session
(,NumCount”) +1%>创建了一个计数器,每刷新一次,计数器就会增加1。但由于程序码中含有 <%=session.abandon %>,它每次都会杀掉这个 session,所以计数器并不会动。不过如果您移掉了 abandon 语句,计数器就可以动了。有 abandon语句时执行结果如下图所示。
76
7.5 Session对象
7.5.3 Session的方法没有 abandon语句时 (即移掉了 abandon语句 )执行结果如图所示,
每刷新一次,计数器就会增加1。
77
7.5 Session对象
7.5.3 Session的方法没有 abandon语句时,范例 7-18a.asp代码如下:
<html>
<head>
<title>abandon测试 </title>
</head>
<body>
<center>
<h2>abandon测试 </h2>
</center>
<hr>
本次 Session,你已经来过此页 <% =Session("NumCount") %> 次,
<% Session("NumCount") = Session("NumCount") + 1 %>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
78
7.5 Session对象
7.5.4 Session的事件 (Event)
Session对象共有两个事件,它们是:
( 1) Session.OnStart
( 2) Session.OnEnd
这两个事件的名称是不是看来有点眼熟?没错,它们的用法和 Application.OnStart及 Application.OnEnd是极类似的:以子程序的方式存在,并放在 Global.asa当中。语法如下:
Sub Session.OnStart
程序区域
End Sub
Sub Session.OnEnd
程序区域
End Sub
79
7.5 Session对象
7.5.4 Session的事件 (Event)
让我们回顾一下 Ch7-12所用到的 Global.asa:
范例 Global.asa
<script language=VBScript runat=server>
sub application_OnStart
application("Today")=date
application("Times")=time
end sub
sub session_OnStart
session("Today")=date
session("Times")=time
session("address")=Request.ServerVariables("Local_Addr")
end sub
</script>
由这个文件中可以看到,使用了 Session.OnStart事件,而这个事件则让 Session在一开始即拥有,Today”、,Times”及,Address”。
80
7.6 Server对象在 ASP中,Server对象主要是让用户使用 Web服务器所提供的功能。
7.6.1 Server的属性
7.6.2 Server的方法
81
7.6 Server对象
7.6.1 Server的属性
Server对象没有数据集合 (Collection),所以从属性开始讲起!
Server对象只有一个属性,就是 ScriptTimeOut。这个属性是用来设置 Script程序执行的时间,为什么要设置呢?因为要避免死锁
(Dead Lock)。所谓死锁就是一直执行的程序段 (比如无穷循环 )会一直执行直到把系统资源用完,所以必须设置它。它的语法如下:
Server.ScriptTimeout=秒数请注意:这个设置必须放在 ASP文件的最前头,否则会产生错误。您也可以用下列语法来看目前的 ScriptTimeout的设置。
=Server.ScriptTimeOut
下面是一个范例 (请见下页 ):
82
7.6 Server对象
7.6.1 Server的属性范例 ch7-19.asp
<html>
<head>
<title>ScriptTimeout测试 </title>
</head>
<body>
<center>
<h2>ScriptTimeout测试 </h2>
<hr>
目前的 ScriptTimeout是 <% = server.ScriptTimeout %> 秒 <br>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
83
7.6 Server对象
7.6.1 Server的属性这个范例会把目前的 ScriptTimeOut的设置值显示出来 。 执行结果如下图所示 。
84
7.6 Server对象
7.6.2 Server的方法
Server对象共有 7种方法,它们是:
( 1) CreateObject
( 2) Execute
( 3) GetLastError
( 4) HTMLEncode
( 5) MapPath
( 6) Transfer
( 7) URLEncode
● CreateObject
CreateObject方法是用来创建 ActiveX Server组件的范本。这些组件可以是内置的 ASP组件或是协助厂商所创建的组件。使用语法如下:
set 对象名称= server.createobject("ActiveX Server组件 ")
85
7.6 Server对象
7.6.2 Server的方法下面是使用范例 ch7-20.asp,
<html>
<head>
<title>CreateObject范例 </title></head>
<body>
<center>
<h2>CreateObject范例 </h2>
<hr>
<% set NewObject=Server.CreateObject("MSWC.BrowserType") %>
一个新对象 NewObject已经在产生,利用这个对象可以测试您的
Browser<p>您的 Browser是 <% = NewObject.Browser %>,版本是
<% = NewObject.version %><p>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
86
7.6 Server对象
7.6.2 Server的方法这个范例创建了一个对象 New Object,它是利用 ActiveX组件
MSWC.Browser Type建构而成 。 利用它,您可以知道您所使用浏览器种类及型号 。 执行结果如下图所示 。
87
7.6 Server对象
7.6.2 Server的方法
● Execute
Execute方法是 ASP 3.0新增的功能,它让您可以在一个 ASP文件中执行另一个 ASP文件,执行完毕后回到原本的 ASP文件。它的语法如下:
Server.execute("ASP文件 ")
请注意:这个方法因为目前只有 IIS 5.0是使用 ASP 3.0,所以只有装了 IIS 5.0(及以上版本)的机器才能使用。如果您安装的是 Personal Web Server或 IIS 4.0以下的 Web Server,将无法使用这个方法。
● GetLastError
GetLastError方法是用来得知最后一个发生在 ASP中的错误,
以便改错。它的语法是:
Server.GetLastError
请注意,GetLastError也是 ASP 3.0新增的功能。换句话说,
只有安装了 IIS 5.0以上的机器才可以使用这个功能。
88
7.6 Server对象
7.6.2 Server的方法
● HTMLEncode
HTMLEncode是用来将 HTML标记 (Tag)转换成编码后的字符串,编码过后的 HTML标记不会被编译,而是会被当成一个字符串输出。比如说,<html>编码后并不会被当作标记来编译,而是直接输出字符串,<html>”。如果您在网页中需解释 HTML标记,
这个功能非常有用。它的语法如下:
server.HTMLEncode("HTML标记 ")
89
7.6 Server对象
7.6.2 Server的方法
ch7-21.asp是一个范例
<html>
<head>
<title>HTMLEncode测试 </title>
</head>
<body>
<center>
<h2>HTMLEncode测试 </h2>
<hr>
server.HTMLEncode 可以将 HTML码转为字串,比如 <p>
<%
Response.write Server.HTMLEncode
("<html>") & "<br>"
Response.write "和 " & "<br>"
Response.write
Server.HTMLEncode(“<%
Server.HTMLENcode %\>")
%>
<p>
就是 server.HTMLEncode
转出来的
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
90
7.6 Server对象
7.6.2 Server的方法这个范例是将 <html>及 <% Server.HTMLEncode %>直接显示在浏览器中而不编译。请注意,<%...%>就算在
Server.HTMLEncode中,一样会被当作 ASP来编译,解决的办法只需将 %>改为 %\>就可以了。输出结果如图下所示。
91
7.6 Server对象
7.6.2 Server的方法
● MapPath
MapPath方法是用来取得文件存储的实际路径,也就是说,
取得该文件在服务器中的实际位置信息。它的语法如下:
Server.MapPath( "文件名称 ")
Ch7-22.asp是一个范例
<html>
<head>
<title>MapPath测试 </title>
</head>
<body>
<center>
<h2>MapPath测试 </h2>
<hr>
文件 ch7-22.asp在服务器中是存储在
<%
Response.write " " &
Server.MapPath("ch7-
22.asp")
%>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
92
7.6 Server对象
7.6.2 Server的方法这个范例的目的是显示文件 Ch7-22.asp的实际路径,通过
Server.MapPath,我们可以得知文件 Ch7-22.asp在服务器中实际存储的位置 。 执行结果如下图所示 。
93
7.6 Server对象
7.6.2 Server的方法
● Transfer
Transfer方法有点类似 Execute,都是从一个 ASP文件中执行另一个 ASP文件。所不同的是,Transfer方法调用执行另一个 ASP
文件后,控制权就移交给另一个文件,而不再回到原来的 ASP文件。它的语法如下:
Server.Transfer( "文件名称 ")
请注意:这个方法和 Execute一样都是 ASP 3.0新增的功能。
目前只能在装了 IIS 5.0以上的机器上执行。
● URLEncode
URLEncode方法的概念和 HTMLEncode的原理差不多,只是
URLEncode是将 URL转换为字符串。它的语法如下:
Server.URLEncode("URL字符串 ")
虽说是转换成字符串,但是一些特殊符号如:“:”,/”或
,.”,并不会被转换的和原来一样,而是%加上符号所对应的
ASCII码。比如说,http://会被转成 http %3 %2F %2F。
94
7.6 Server对象
7.6.2 Server的方法
ch7-23.asp是一个转换的范例 。
<html>
<head>
<title>URLEncode测试 </title>
</head>
<body>
<center>
<h2>URLEncode测试 </h2>
</center>
<hr>
<p>
转换前,
http://www.railway.com.cn<br>
转换后,
<%
response.write
server.URLEncode
("http://www.railway.com.cn")
%>
<p>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
95
7.6 Server对象
7.6.2 Server的方法这个范例是将 http://www.railway.com.cn转换成字符串,执行结果如下图所示 。
96
7.7 ObjectContext对象
ObjectContext 是什么意思?望文生义,Object 是对象的意思,Context是前后关系的意思,两者加起来就是对象前后关系。
7.7.1 交易
7.7.2 ObjectContext的方法
7.7.3 ObjectContext的事件
97
7.7 ObjectContext对象
7.7.1 交易
ObjectContext对象其实主要是用来管理交易。什么是交易?
就是数据的更新。那数据的更新和交易又有什么关系?举个例子来说明会更清楚。
以最热门的电子商务而言,其中有一个很重要的要项就是在线购物。在线购物有一个重要操作,就是下订单。从下订单开始到确认订单,整个事件称为一个“交易”。在这个交易中,存储订单数据的操作必须确认。如果确认成功,表示数据已被“送至”
数据库,交易成功。反之,如果订单数据未被确认,代表数据并未被送至数据库,则交易失败。
98
7.7 ObjectContext对象
7.7.1 交易将上面的流程画成下图,则交易有,成功,或,失败,两种结果,这就是,交易,的前后关系 。
上述所提的,交易,例子只是为了让您了解它的意义 。 在
ASP中,,交易,的意义还包括了组件之间的组件互动 。 看到这里,也许您还是觉得很陌生 。 总之一句话,ObjectContext对象主要是用来处理,交易,。 如果能够配合微软的另一产品 Transaction
Server来使用,将可以开发更具效率的 Web应用程序 。
99
7.7 ObjectContext对象
7.7.2 ObjectContext的方法
ObjectContext没有数据集合及属性,所以就从方法开始讲起了。 ObjectContext对象共有两个方法,它们是:
( 1) SetAbort
( 2) SetComplete
● SetAbort
SetAbort方法是用来中止目前由 ASP所产生的交易,并将先前所处理的交易回归到原来的状态。它的语法是:
ObjectContext.SetAbort
因为 ObjectContext对象的方法及事件彼此有相关性,所以使用范例就留待最后一并说明。
10
0
7.7 ObjectContext对象
7.7.2 ObjectContext的方法
● SetComplete
SetComplete方法是用来完成交易。它的语法是:
ObjectContext.SetComplete
请注意,完成交易并不代表交易成功。这是为什么呢?因为整个交易过程可能包含了一些较小的交易过程。 SetComplete方法的调用仅仅是完成某项交易,并不代表其他小的交易也完成。所以必须等到它们也调用 SetComplete方法来完成交易,全部的交易才算成功。
101
7.7 ObjectContext对象
7.7.3 ObjectContext的事件
ObjectContext对象共有两个事件,它们是:
( 1) OnTransactionAbort
( 2) OnTransactionCommit
● OnTransactionAbort
OnTransactionAbort事件的名字虽然长,但是意义却一目了然。
它就是用来处理交易不完成时所该处理的程序。这个事件必须以子程序的形态存在,语法如下:
Sub OnTransactionAbort
程序区域
End Sub
10
2
7.7 ObjectContext对象
7.7.3 ObjectContext的事件
● OnTransactionCommit
这个事件也是一样,看名字就大概知道是用来做什么的,它的主要功能是处理交易完成后的一些后续操作。同样的,它必须以子程序的形态存在。语法如下:
Sub OnTransactionCommit
程序区域
End Sub
记得前面说过 ObjectContext的方法和事件之间有相关性吗?
看了范例 Ch7-24.asp与 ch7-25.asp您就会知道为什么了。
这个范例是先利用一个表单来读取存入金额,然后根据金额的正负来决定交易成功与否。
10
3
7.7 ObjectContext对象
7.7.3 ObjectContext的事件范例 7-24.asp
<html>
<head>
<title>ObjectContext测试 </title>
</head>
<body>
<center>
<h2>ObjectContext对象测试 </h2>
</center>
<hr>
&nbsp;&nbsp;&nbsp;&nbsp;本范例以一个简单的存款为例子,如果存入金额大于或等于 0,则交易成功,
否则交易失败,<p>
<form action="ch7-25.asp"
method="post">
请输入您的存款金额,<input type="text"
name="name" size="21">
<p>
<input type="SUBMIT" name="所按按钮 "
value="填好了 ">
<input type="RESET" name="所按按钮 "
value="重填 ">
</form>
<p>
<hr>
<center>
Created by <br>
<img src=tiedao.bmp>
</center>
</body>
</html>
10
4
7.7 ObjectContext对象
7.7.3 ObjectContext的事件范例 7-25.asp
<%@ transaction=required %>
<html>
<head>
<title>输出结果 </title>
</head>
<body>
<center>
<h2>输出结果 </h2>
</center>
<hr>
<%
deposit=request.form("name")
if deposit <> Empty then
value=Cint(deposit)
if value <= 0 then
ObjectContext.SetAbort
else
ObjectContext.SetComplete
end if
else
ObjectContext.SetAbort
end if
sub OnTransactionCommit()
response.write "您存入 " & deposit & " 元,
交易成功 !!"
response.write "<hr><center>Created by <br>"
response.write "<img src=tiedao.bmp></center>"
end sub
sub OnTransactionAbort()
response.write "您存入 " & deposit & " 元,
交易失败 !!"
response.write "<hr><center>Created by <br>"
response.write "<img src=tiedao.bmp></center>"
end sub
%>
</body>
</html>
10
5
7.7 ObjectContext对象
7.7.3 ObjectContext的事件整个范例的重点在 Ch7-25.asp。一开始的 <%@
transaction=repuired %>定义了这是一个“交易”。也许您会纳闷这是什么?其实这是 ASP的保留关键字,主要是告诉 ASP,这是一个交易。请注意,@transaction必须放在网页一开始,否则会产生错误。接下来的 deposit=request.form("name“)读取了从表单送来的数据,并存放于 deposit变量中,然后运用决策运算来检验
deposit。如果 deposit小于0,则执行 ObjectContext.SetAbort。一旦
ObjectContext.SetAbort被执行,就会触发。
反之,若 deposit大于0,则执行 ObjectContext.SetComplete并触发下列事件:
10
6
7.7 ObjectContext对象
7.7.3 ObjectContext的事件
● 当存入金额大于或等于零时,比如存入 500,然后按,如下图所示 。
107
7.7 ObjectContext对象
7.7.3 ObjectContext的事件执行结果如下图所示。
10
8
7.7 ObjectContext对象
7.7.3 ObjectContext的事件
● 当存入金额小于零时,比如存入 -500,然后按,如下图所示 。
10
9
7.7 ObjectContext对象
7.7.3 ObjectContext的事件执行结果如下图所示。
110
第 7章 ASP对象本章主要介绍了对象的概念,以及常用的 Response、
Request,Application,Session,Server,ObjectContext等对象。
111
第 7章 ASP对象
习题
1.什么是对象?它如何被定义?并以实例说明。
2.试解释下列名词。
(1)类 (Class)
(2)实例 (Instance)
(3)属性 (Property)
(4)方法 (Method)
(5)事件 (Event)
(6)封装 (Encapsulution)
3.ASP的对象模块包含哪些对象?请画出它们的关系图。
4.试写一 ASP程序记录用户的上次访问日期,并将结果输出于浏览器。 (提示:利用 Response.cookies)
5.Response对象包含哪九个属性?试说明之。
6.Response对象包含哪八种方法?试说明之。
7.Request对象包含哪些数据集合?其中有一个是与
Response.cookies相对的,是哪一个?
112
第 7章 ASP对象
习题
8.Request有何属性?试说明之。
9.Request有何方法?试说明之。
10.试说明事件处理与全局。 ASP如何执行事件处理与全局?
11.一个 ASP对象通常有数据集合、属性、方法及事件。 Application对象缺了哪项?
12.试写一 ASP程序将 Session对象的属性默认值全部显示于浏览器上。
13.试利用 Server对象的 Create Object方法造出一对象 Browser
Data,并利用此对象测试您的浏览器种类与版本。
14.什么是,交易,?和 Object Conteyt有什么关系?
15.假设目前有 100元的存款,试利用 Object Conteyt对象写一提款程序,注意提款金额若为负数或大于节余金额,则交易失败。