Transcript Document

第9章 动态网页制作ASP
本章要点
☆ASP的基本概念
☆ASP工作原理与开发平台
☆ASP对象的使用
☆ASP组件的应用
9.1 ASP基础
本节向读者介绍ASP的背景知识。读者将了解到动
态Web页的发展,ASP的技术特点、工作原理及开发平
台。
9.1.1 动态Web页的发展与ASP简介
9.1.2 ASP的工作原理
9.1.3 ASP的开发平台
9.1.4 创建一个ASP页
9.1.1 动态Web页的发展与ASP简介
Internet迅猛发展,其中一个主要的推动力是World
Wide Web的发展。
最初,基于HTML语言的Web页是完全静态的。静
态文本的缺点是维护起来比较困难。
于是,对发展动态Web页的要求便逐渐提上日程。
9.1.1 动态Web页的发展与ASP简介
随着CGI、ISAPI(Internet Server Application
Programming Interface)以及其他一些相关技术的出现,
加强了与Web Server进行沟通。
另外,CGI程序可以用VB、Java、C等多种语言编
写,大大增加了发展势头。
但是,CGI程序有一个很大的缺点,就是与HTML
只能分开编写、分开运行,要将两者合在一起并不容易,
从而导致维护与编写都相当困难。
因此,一些厂商都推出自己的脚本语言,来增强网
页开发的功能。
9.1.1 动态Web页的发展与ASP简介
ASP是微软开发的基于Windows NT Server和
IIS(Internet Information Sever)的服务器端的脚本运行环
境。
ASP可以在服务器上运行,又可以在客户端的浏览
器上运行。
事实上,ASP是在标准的HTML文档的基础上扩展
了一些附加特征,从而很好地把HTML和脚本开发融合
到一起。
任何可以放在HTML中的内容,如脚本和ActiveX控
件等,都可以放在ASP中。
9.1.1 动态Web页的发展与ASP简介
ASP不仅支持客户端脚本,还支持服务器端脚本。
VBScript和JavaScript是用来创建ASP的最好工具。
利用服务器端脚本,开发者可以创建具有动态内容
的网页。
除此之外,ASP提供了Response、Request、Server、
Application和Session等内置对象。
这些对象用于向用户回传信息;获取用户传送的信
息;提供访问服务器的方法和属性;还够保存多个Web
页面间的共享信息。
利用这些内置对象,可以使脚本程序的功能更加强
大。
9.1.1 动态Web页的发展与ASP简介
除内置的对象外,ASP还提供了一些ActiveX组件,
称为ActiveX服务器组件。
它包括数据库访问、文件访问、浏览器信息访问和
内容链接等多种功能。
若仍不能满足需要,还可以自行开发组件,增强系
统的功能。
ASP的主要特点
(1)完全与HTML融合到一起。
(2)只要支持HTML的浏览器就能浏览ASP设计的页面。
(3)可以通过ActiveX服务器组件扩充ASP的功能。
(4)ASP的源代码不会下载到用户的浏览器上,可以有效
地保护开发者的成果。
9.1.2 ASP的工作原理
比较用户通过浏览器请求ASP程序的过程和访问普通HTML
页面的过程的不同,可以清楚的了解ASP程序的工作原理。
1、访问HTML网页的过程
1)在客户端浏览器地址栏处输入HTML文件的URL地址,回车后发
送一个网页请求;
2)浏览器发送网页请求到指定URL地址的计算机IIS/PWS服务器;
3)IIS/PWS服务器收到请求,通过扩展名.html或.html判断是HTML
文件的请求;
4)IIS/PWS服务器将对应的HTML文件从磁盘或存储器中取出并送
回浏览器;
5)HTML文件由用户的浏览器解释,结果在浏览器窗口中显示出来。
9.1.2 ASP的工作原理
2、访问ASP网页的过程
1)客户端浏览器地址栏输入要请求的ASP文件URL地址,
回车后发送一个网页请求;
2)浏览器向指定URL地址的计算机IIS/PWS服务器发送
ASP请求;
3)IIS/PWS服务器收到请求并根据扩展名.asp识别出ASP文
件;
4)IIS/PWS服务器从硬盘或内存中获取相应的ASP文件;
2、访问ASP网页的过程
5)IIS/PWS服务器将ASP文件发送到一个类似于发动机引
擎的名为asp.dll(动态链接库)的特定文件中;
6)asp.dll引擎将ASP文件从头至尾进行解释处理,并根据
ASP文件中的命令要求生成相应的动态HTML网页;
7)HTML网页被送回(Response)客户端浏览器;
8)用客户端浏览器解释执行HTML网页,并将结果显示在
客户端浏览器。
可见,ASP程序的工作过程的主要特点是增加了一个网络
服务器对脚本语言的解释过程。
9.1.3 ASP的开发平台
ASP程序是在服务器端运行的,所以ASP的开发平
台必须是一个支持ASP的服务器。
ASP是由微软公司推出的,现在只有微软公司的服
务器才能实现ASP的强大功能,还有一些其他服务器在
安装了一些插件后也能运行ASP。
在Windows系列操作系统上的Web Server
平台下的配置选择
1.Windows 95/98+PWS环境
Microsoft Personal Web Server(PWS)可以将任何运行
Windows95或Windows98的计算机变成Web服务器,并
且能够不间断地发布个人Web页。由于易于安装和管理,
PWS可以为所有用户简化共享Intranet或Internet上的信息
的过程。PWS是少量、对等Web发布的理想工具。
2.Windows NT/Win2000+IIS环境
IIS是微软公司的专业Web服务器组件,Windows 2000捆绑
了该服务器的5.0版本。而对于Windows NT Server,则
可以单独下载,如果运行的是NT Server,可以从微软站
点免费下载NT Option Pack。这样就可以使用IIS4.0了。
9.1.4 创建一个ASP页
了解了一些ASP的基本知识,下面将创建一个ASP
页以增进对ASP的直观认识。
例9-1 写一个ASP的开发环境的测试程序,以证明
ASP的服务器是否工作正常。
程序名称是Test.asp,代码如下:
9.1.4 创建一个ASP页
<HTML>
<HEAD>
<TITLE>ASP Test</TITLE>
</HEAD>
<BODY>
<INPUT TYPE=“SUBMIT”
NAME=“Btn1”
VALUE=“Test ASP”>
<SCRIPT
Language=“VBScript”>
<!--
Sub Btn1_onclick()
Dim Message
Message=“ASP Test Success!”
Msgbox Message ,0,”Test
ASP”
End Sub
-->
</SCRIPT>
</BODY>
</HTML>
9.1.4 创建一个ASP页
程序Test.asp的执行结果如图9-1所示。
图9-1程序Test.asp的执行结果
9.1.4 创建一个ASP页
单击按钮“Test ASP”,如果ASP的服务器工作正常,
结果会如图9-2所示,弹出消息框“ASP Test
Success!”。
图9-2消息框
9.2 ASP的语法组成
ASP程序是运行于Web服务器上的动态网页。这个
网页由嵌入到服务器的ASP解释程序解释后,生成相对
简单的HTML文档并返回给浏览器。
只要在Web服务器上嵌入相应的ASP解释器,就可
以运行使用诸如VBScript或JavaScript编写的动态ASP网
页。
ASP的执行过程是:当一个客户端浏览器向服务器
请求执行一个.asp文件时,服务器执行这个文件,最后
将标准的HTML格式文档传到客户端。
1.ASP程序组成
ASP程序是在服务器端运行的程序。一般说来,一
个简单的ASP程序主要包括以下3个部分。
(1)普通的HTML文件,也就是普通的Web页面内容。
(2)服务器端的Script程序代码:即位于“<%…%>”内的
程序代码。
(3)客户端的Script程序代码:位于“<Script>…</Script>”
内的程序代码。
2.编写ASP程序时的注意事项
(1)不分大小写。
(2)用英文的标点符号。
(3)注意“<%”、“%>”的位置,一定要出现在采用动态
变换的地方。
(4)ASP语句必须完全包括在【<%”、“%>”中。
(5)注释语句用英文单引号“' ”开头。
(6)要充分利用HTML工具开发源代码。
由于ASP程序是以纯文本的形式存在,因此可以使
用任何一个文本编辑器来编写,如:Windows的记事本。
当然,为提高工作效率,可以使用Dreamweaver
UltraDev等一些专业的ASP编写工具。
9.3 ASP中的对象
9.3.1面向对象的基本概念
9.3.2 Request对象
9.3.3 Response对象
9.3.4 Application对象
9.3.5 Session对象
9.3.6 Server对象
9.3.7 Global.asa文件
9.3.1面向对象的基本概念
在面向对象编程中,对象就是指由对完整实体的操
作和数据组成的变量。
对象是基于特定模型的,通过由一组方法或相关函
数接口对外提供服务,用户可以使用对象所提供的服务
访问对象中的数据,用户也可以调用这些方法执行某些
操作。
1.对象
ASP程序中除了可以使用HTML和VBScript脚本语言
等之外,还可以使用ASP的内部对象和组件。
这些对象在所有的ASP页中都可立即使用,而无须
创建它们。
使用这些内部对象,我们可以容易地获得通过浏览
器发送的信息、响应浏览器的处理请求、存储用户信息
等,从而使开发工作更加方便、容易。
ASP内部对象以及各对象的主要作用
内置对象
说明
Request
取得用户提交的信息。使用该对象,可以取得任何经由
HTTP请求传递过来的信息,包括使用POST或GET传递的
参数,以及从客户端传递的Cookie等
Response
传递信息给用户。可以使用该对象发送信息给用户或重新
定向浏览器到另一个URL或设置Cookie的值等
Session
管理当前会话信息,每个用户在每次打开一个浏览器时就
产生一个会话。当用户在不同的页面之间跳转时,存储在
Session对象中的变量不会丢失,即Session主要用来在同一
个用户的多个页面之间共享数据
Application 用来存储一个应用中所有用户共享的信息
Server
提供了对ASP对象和方法的使用。最常用的方法是
CreateObject方法,该方法用来创建组件的实例。其他方
法可以设置脚本的超时属性等
2.组件
ActiveX组件提供了在脚本中执行任务的对象,它是
建立Web应用程序的关键。
ActiveX组件是一个文件(通常是一个动态链接库.dll
或可执行文件.exe),该文件包含执行某项或一组任务的
代码,由于组件可以执行公用任务,这样程序员们就不
必自己去创建执行这些任务的代码。
因此,可以利用组件作为脚本和基于Web应用程序
的基本构造块。
只要知道如何访问组件提供的对象,即使是编写脚
本的新手,也可以在不了解组件运作方式的情况下编写
脚本。
2.组件
组件可以提供一个或多个对象,要使用组件提供的
对象,需要创建对象的实例,并为这个新的实例分配变
量名,这样才能在脚本中引用对象的方法或属性。
在ASP中,通常使用Server对象的CreateObject方法
创建对象的实例,使用脚本语言的变量分配指令可以为
对象实例命名。
9.3.2 Request对象
在ASP的内置对象中,Request对象的作用是负责数
据采集。
即用来收集并处理用户通过HTTP请求传送的所有信
息。
如HTML表单用POST或GET方法传递的参数、
Cookies数据和环境变量等。
Request对象的语法
Request对象共有5种获取方法,分别是:
QueryString、Form、Cookies、ServerVariables、
ClientCertificate。
Request对象的语法如下:
Request.获取方法(参数)
Request对象的语法
如果Web页面表单使用GET方式提供UserName参数,则获
取数据的命令格式为:
strUserName=Request.QueryString(“UserName”)
如果Web页面表单使用POST方法提供UserName数据:
strUserName=Request.Form(“UserName”)
如果省略集合的名称,也可以写成:
strUserName=Request(“UserName”)
Request对象的语法
这时,ASP将按照QueryString、Form、Cookies和
ServerVariables的顺序来搜索集合,当发现第一个匹配的
变量时,就认定它是要获取的成员。
显然,省略集合名称会影响执行效率,因此最好还
是显式的指定要获取哪个集合中的成员。
2.QueryString集合
当HTML表单用GET方法向ASP文件传递数据时,
表单提交的数据被附在URL的查询字符串中一起被提交
到服务器端指定的文件中。
QueryString集合的功能是从查询字符串中读取用户
提交的数据。查询字符串用于向服务器传送少量的数据。
包含查询字符串的URL类似于下面的格式:
http://sitename/filename.asp?fieldl=valuel&field2=value2
其中,filename.asp用于处理表单提交的数据。查询
字符串以”?”开始,包含几对字段名和值。不同的字段
名和值用“&”号分开。
3.Form集合
当使用POST方法将HTML表单的数据提交给服务器
时,表单元素作为Form集合的成员。
实际上,在提交数据的时候,更多的是利用POST方
法来提交,因为使用GET方法只能传递较小的数据量。
当用POST方法提交数据时,就必须利用Form集合
来获取数据。
实例
程序post.htm的执行结果如图9-3所示。
例9-2
图9-3程序post.htm的执行结果
4.ServerVariables集合
在浏览器中浏览网页的时候使用的传输协议是HTTP,
在HTTP的标题文件中会记录一些客户端的信息,如:
客户的IP地址等等。
有时服务器端需要根据不同的客户信息做出不同的
反应,这时候就需要用ServerVariables集合获取所需信息。
ServerVariables集合中包含多项浏览器及服务器变量。
使用ServerVariables集合中的各变量可以得到多个很
有用的信息。
4.ServerVariables集合
例如:如果希望的到访问者的IP地址,就可以使用以下语
句:
<% @ Language=VBScript%>
<%
Dim userIP
userIP=Request.ServerVariables(“REMOTE_ADDR”)
%>
5.Request对象的综合应用——留言板
本范例采用表单的形式收集客户留言信息,并通过
“Post”方式,传送到Web服务器管理员的邮箱中,其基
本流程如下:
(1)客户在线填写留言板。
(2)通过ASP程序将留言信息发送到网站管理员的邮箱中。
(3)网站管理员可以以电子邮件的形式回复客户信息。
5.Request对象的综合应用——留言板
根据以上功能要求,程序设计模块如下:
(1)留言板模块。
(2)留言板信息转成E-mail模块。
(3)处理留言板信息反馈模块。
(1)留言板程序设计
在浏览器上运行程序Customers.asp,显示留言板界面如图9.4
所示。
程序代码
图9-4
(2)将留言板信息转成电子邮件
当客户填完留言板后,按【送出】按钮,留言板信息就会传到
Web服务器上,此时ASP程序将接收(通过Request对象)这些信息。
其程序代码如下:
<%
Set CDOMail=Server. CreateObject(“CDONTS.NewMail”)
CDOMail.From=Request(“From”)
CDOMail.To=Request (“To”)
CDOMail.Subject=Request(“Subject”)
CDOMail. Body=Request(“Body”)
CDOMail.Send
Set CDOMail=Nothing
%>
(3)留言后的显示信息
当客户发出信息后,通常需要回复客户一个提示信
息,告之接收留言后的一些确认信息,以响应客户的参
与。
客户端的信息可以通过Request对象取系统变量获得。
客户发出留言后的显示结果如图9.5所示。
图9.5
(4)完整的留言板程序代码
程序代码
9.3.3 Response对象
在ASP中,Response对象用于将服务器处理ASP程
序的结果送给客户端浏览器。
用户可以使用该对象将服务器端的数据用HTML超
文本格式发送到客户端的浏览器。
与Request获取客户端HTTP信息相反,Response对
象用来控制发送给用户的信息,包括直接发送信息给浏
览器、重新定向浏览器到另一个URL。
另外,可以通过Response对象设置客户端浏览器的
状态,比如设置Cookies。
Response对象的语法
Response对象的语法如下:
Response[.collection|property|method](variable)
例如:
Response.Write(“userName”)
该语句的目的是输出赋予变量userName的字符串。
2.Response对象的属性
Response对象又很多属性,包括:
Buffer属性
Charset属性
Expires属性
ExpiresAbsolute属性
(1)Buffer属性
Buffer属性用于指定页面输出时是否要用到缓冲区,
默认值为False。
当它为True时,直到整个Active Server Page执行结
束后才会将结果输出到浏览器上。
实例
<%Response.Buffer=True%>
<html>
<Head>
<title>Buffer示例</title>
</head>
<body>
<%
for i=1 to 500
response.write(i & “<br>“
next
%>
</body>
</html>
这页执行时,整个主页的所
有内容会同时显示在浏览器
上,这个主页会存在缓存区
中直到脚本执行结束。
(2)Expires属性
Response对象的Expires属性指定了在浏览器上缓冲
存储的页距过期还有多长时间。
如果用户在某个页面过期之前又回到此页,就会显
示缓冲区中的页面。
如果设置Response.Expires=0,则可使缓存的页面立
即过期。
这是一个较实用的属性,当客户通过ASP的登录页
面进入Web站点后,应该利用该属性使登录页面立即过
期,以确保安全。
3.Response对象的方法
接下来将对Response对象的一些常用方法做简单介
绍,包括:
Write方法
Redirect方法
end方法
(1)Write方法
该方法的作用是以一个字符串的形式向客户端输出
信息,如:
<%Response.write “Hello,world!”%>
于是将会在浏览器中显示字符串”Hello,world!”。
(2)Redirect方法
该方法使浏览器可以重新定位到另一个URL上,这
样,当客户发出Web请求时,客户端的浏览器类型已经
确定,客户被重新定位到相应的页面。如:
<% @ language=VBScript%>
<%
If hour(now)>12 then
Response.Redirect”1.htm”
Else
Response.Redirect”2.htm”
End if
%>
(2)Redirect方法
该段程序实现的功能是:若当前时间是12点以后,
就把客户引到1.htm这个网页上来;若在12点以前,就定
向到2.htm这个页面上来。
(3)End方法
该方法用于告知Active Server当遇到该方法时停止
处理ASP文件。
如果Response对象的Buffer属性设置为True,这时
End方法即把缓存中的内容发送到客户端并清除缓冲区。
所以要取消所有向客户的输出,可以先清除缓冲区,
然后利用End方法。
End方法实例
<%
Response.buffer=true
On error resume next
Err.clear
if Err.number<>0 then
Response.Clear
Response.End
end if
%>
9.3.4 Application对象
每个Web站点上可以有多个应用程序。在同一虚拟
目录及其子目录下的所有.asp文件构成了ASP应用程序。
ASP应用程序具有以下特征:数据可在应用程序里
的页面间共享,即可以在网站的多用户间共享,对象实
例亦可在应用程序的所有页面间共享。
应用程序有可以驱动特定应用程序脚本的事件,每
个应用程序都可隔离开,在自己的内存空间单独执行,
即不会出现所有应用程序同时崩溃的现象,亦可以停止
一个应用程序的执行而不影响其他应用程序。
9.3.4 Application对象
应用程序的实例用Application对象表示,其生存期
从请求该应用程序的第一个页面开始,直到Web站点关
闭时结束。
由于存储在Application对象中的数据可以被应用程
序的所有用户共享,因此,Application对象特别适合在
应用程序的不同用户之间传递信息。
而且,Application对象还有控制访问应用层数据的
方法和可用于在应用程序启动和停止时触发过程的事件。
1.创建Application对象的属性
虽然Application对象没有内置的属性,但我们可以
使用以下语句设置用户定义的属性:
Application(“property”)=value
Application对象提供了两个集合来保存应用程序信
息,StaticObjects集合用于保存由<OBJECT>创建的对象,
而Contents集合用于保存其他值和非<OBJECT>创建的对
象。集合中的数据可以在整个应用程序中被所有用户共
享。语法格式如下:
Application.集合名称(“item”)=value
1.创建Application对象的属性
其中集合名称是Contents或者StaticObjects;item是
项目名称,用于从集合中检索数据;Value是要保存到集
合中的数据。
例如,我们可以使用如下脚本声明并建立
Application对象的属性。
<%
Application(“MyVal”)=“hello”
Set
Application(“MyObj”)=Server.CreateObject(“MSWC.AdRo
tator”)
%>
1.创建Application对象的属性
一旦分配了Application对象的属性,它就会持久地
存在,直到关闭Web服务器服务使得Application停止。
由于存储在Application对象中的数值可以被应用程
序的所有用户读取,所以Application对象的属性特别适
合在应用程序的用户之间传递信息。
2.Application对象的方法
(1)Lock和Unlock方法
Application对象的Lock和Unlock方法是用来处理多
个用户对存储在Application中的数据进行写入时的问题。
Lock方法用于阻止其他客户修改存储在Application
对象中的变量,以确保在同一时刻仅有一个客户可修改
和存取Application变量。
和Lock方法相反,Unlock方法解除对象的锁定,使
得下一个客户端能够增加NumVisis的值。如果用户没有
明确调用Unlock方法,则服务器将在.asp文件结束或超
时后即解除对Application对象的锁定。
2.Application对象的方法
(2)Contents.Remove和Content.RemoveAll方法
Contents.Remove方法用于删除Contents集合中的某个变
量对象。
Contents.Remove方法的语法如下:
Application.Contents.Remove(name|index)
其中参数name用于指定从集合中所要移去的对象的
名称,参数Index用于指定所要移去对象的索引代码。
Contents.RemoveAll方法用于删除Contents集合中的所有
变量对象。
Contents.RemoveAll方法的语法如下:
Application.Contents.RemoveAll()
3.Application_OnStart和
Application_OnEnd事件
Application_OnStart事件在首次创建新的应用程序时
发生。当Web服务器启动并允许对应用程序所包含的文
件进行请求时就触发Application_OnStart事件。
Application_OnStart事件的处理过程必须写在
Global.asa文件之中。
Application_OnEnd事件在应用程序退出时于
Session_OnEnd事件之后发生,Application_OnEnd事件
的处理过程也同样必须写在Global.asa文件之中。
4.Application对象的综合应用
一个简单的聊天室
网上聊天室是一个比较复杂的系统。由于要在多个
用户之间显示聊天内容,因此可以用Application对象传
递用户的信息。
聊天室示例代码
4.Application对象的综合应用
聊天室的登录页面如图9.6所示。
图9.6
4.Application对象的综合应用
输入昵
称(例如此例
中输入“柠
檬”)后,单
击【进入】按
钮,进入聊天
室,如图9.7所
示。
图9.7
4.Application对象的综合应用
在
消息栏里
输入想说
的话,单
击【提交】
按钮,对
话将出现
在输入框
的下方,
如图9.8所
示
图9.8
9.3.5 Session对象
与Application对象具有相近作用的另一个非常实用
的ASP内置对象就是Session对象。
当访问者首次从站点请求一个ASP页面时,服务器
为他创建一个Session对象,当会话过期或被放弃后,服
务器将终止该会话。
该对象提供一个存储场所,用来存储只有该访问者
在会话的活动期间,打开的网页可用的变量和对象。也
就是说,可以使用Session对象存储特定用户会话所需的
信息。
这样,当用户在应用程序的Web页之间跳转时,存
储在Session对象中的变量将不会丢失,而是在整个用户
会话中一直存在下去。
Session对象与客户保持联系的方法
ASP在创建一个Session对象的同时,也为其生成一
个SessionID,它唯一标识特定用户会话。
在新会话开始时,服务器将SessionID作为一个
Cookie存储在用户的Web浏览器中。
当然SessionID只能由Session对象读出,而Request对
象的Cookies集合读不到SessionID Cookie。
当用户再次从服务器上请求其他页面时,浏览器会
将SessionID与请求一起发送到服务器,这样就可以在会
话期间跟踪该用户。
如果会话被终止或超时,Session对象就会被清除。
Session对象与客户保持联系的方法
要注意的是,会话状态仅在支持Cookie的浏览器中
保留,如果客户关闭了Cookies选项,Session也就不能发
挥作用了。
9.3.5 Session对象
通过Web在浏览器和服务器之间传递请求和响应的
HTTP协议是无状态的协议,也就是说,Web服务器将每
个页面的请求都作为独立的请求,服务器不保留以前请
求的任何信息。
ASP的Session对象弥补了HTTP无法记忆先前请求的
缺陷。
使用Session对象,可以存储特定用户会话所需的信
息。
当用户在应用程序的不同页面之间跳转时,存储在
Session中的数据不会丢失。
这样Session对象就能实现同一用户在不同页面之间
传递信息。
1.Session对象的语法和属性
(1)Session对象的语法
Session对象的语法如下:
Session.collection|property|method
1.Session对象的语法和属性
(2)Session对象的TimeOut属性
TimeOut属性以分钟为单位为该应用程序的Session
对象指定超时时限。
如果用户在该超时时限之内不刷新或请求网页,则
该会话将终止。
Session对象的TimeOut属性语法如下:
Session.TimeOut[=nMinutes]
(2)Session对象的TimeOut属性
其中参数nMinutes用于指定一个会话对象在服务器
停止工作前所保持的时间,其缺省值为10分钟。
可以通过在Internet服务管理器中设置应用程序的默
认超时限制设置。
但应依据Web应用程序的要求和服务器的内存空间
来设置此值。
2.Session对象的方法
Session对象仅有一个方法,就是Abandon,Abandon
方法删除所有存储在Session对象中的对象并释放这些对
象的源。
如果未明确地调用Abandon方法,一旦会话超时,
服务器将删除这些对象。
当服务器处理完当前页时,下面示例将释放会话状
态。
<%Session.bandon%>
3.Session对象的Session_OnStart和
Session_OnEnd事件
Session对象有两个事件可用于在Session对象启动和
释放时发生。Session_OnStart事件在服务器创建新会话
时发生;Session_OnEnd事件在会话被放弃或超时时发
生。
Session_OnStart事件的语法如下:
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Session_OnStart
End Sub
</SCRIPT>
3.Session对象的Session_OnStart和
Session_OnEnd事件
Session_OnEnd事件的语法如下:
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Session_OnEnd
End Sub
</SCRIPT>
Session_OnStart事件是设置会话期变量的最佳时机,
因为服务器在执行请求的页之前会处理该脚本,在访问
任何页之前都会先设置它们。
可以将脚本包含在Session_OnStart事件中从而检查
用户打开的页是不是启动页,如果不是,就指示用户调
用Response.Redirect方法打开启动页。
9.3.6 Server对象
Server 对象提供对服务器上的方法和属性的访问,其
中大多数方法和属性是作为实用程序的功能服务的。
有了Server对象,就可以在服务器上启动 ActiveX 对
象例程,并使用Active Server服务提供像HTML和URL编
码这样的函数。
Server对象的语法和属性
(1)Server对象的语法如下:
Server.property|method
(2)ScriptTimeout属性
ScriptTimeout属性设置脚本运行的时间。在脚本运行超过
这一时间之后即作超时处理。如下代码指定服务器处理
脚本在 100 秒后超时。
< % Server.ScriptTimeout=100 %>
2.Server对象的方法
(1)HTMLEncode方法
HTMLEncode方法允许你对特定的字符串进行
HTML 编码,虽然HTML可以显示大部分已写入 ASP 文
件中的文本,但是当需要实际包含HTML标记中所使用
的字符,就会遇到问题。
为了避免此类问题,我们就需要使用Server对象的
HTMLEncode方法,采用对应的不由浏览器解释的
HTML Character Code替代HTML标记字符。
2.Server对象的方法
(2)URLEncode方法
就象HTMLEncode方法使客户可以将字符串翻译成可接
受的HTML格式一样,Server对象的URLEncode方法可
以根据URL规则对字符串进行正确编码,当字符串数据
以URL的形式传递到服务器时,在字符串中不允许出现
空格,也不允许出现特殊字符。
为此,如果用户希望在发送字符串之前进行URL编
码,可以使用Server.URLEncode方法。
2.Server对象的方法
(3)MapPath方法
MapPath方法将指定的相对或虚拟路径映射到服务
器上相应的物理目录上。
MapPath方法的语法如下:
Server.MapPath(Path)
(3)MapPath方法
Path指定要映射物理目录的相对或虚拟路径。若
Path以一个正斜杠(/)或反斜杠(/)开始,则MapPath
方法返回路径时将Path视为完整的虚拟路径。
若Path不是以斜杠开始,则 MapPath方法返回同.asp
文件中已有的路径相对的路径。
这里需要注意的是MapPath方法不检查返回的路径
是否正确或在服务器上是否存在。
(4)CreateObject方法
Server对象的CreateObject方法是ASP中最为实用,
也是最强劲的功能。它用于创建已经注册到服务器上的
ActiveX组件实例。
这是一个非常重要的特性,因为通过使用ActiveX组
件能够轻松地扩展ActiveX的能力,正是使用了ActiveX
组件,用户可以实现至关重要的功能,例如数据库连接、
文件访问、广告显示和其他VBScript不能提供或不能简
单地依靠单独使用ActiveX所能完成的功能。
正是因为这些组件才使得ASP具有了强大的生命力。
其语法如下:
Server.CreateObject(“Component Name”)
(5)Transfer方法
Transfer方法会把一个正在执行的ASP文件的所有信
息传给另外一个ASP文件。其语法如下:
Server.Transfer (path)
其中参数Path表示将要接收信息的asp文件的位置。
当调用Server.Transfer时,所有内置对象的状态信息都会
包含在这次传送之中。
这就是说,所有保存在Session或Application中的信
息都会被传送,而且所有当前请求的信息都会被接收信
息的asp文件所接受。
9.3.7 Global.asa文件
前面介绍的Application对象和Session对象的事件,
要和Global.asa文件结合起来使用。
Global.asa文件其实是一个可选文件,程序编写者可
以在该文件中指定事件脚本,并声明具有会话和应用程
序作用域的对象。
该文件的内容不是用来给用户显示的,而是用来存
储事件处理过程和由应用程序全局使用的对象,所以不
能包含任何输出语句。
该文件的名称必须是Global.asa,且必须存放在应用
程序的根目录中。每个应用程序只能有一个Global.asa文
件。
标准的Global.asa文件格式
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Application_OnStart
End Sub
</SCRIPT>
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Application_OnEnd
End Sub
</SCRIPT>
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Session_OnStart
.End Sub
</SCRIPT>
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Session_OnEnd
End Sub
</SCRIPT>
9.4 组件介绍
1.计数器组件
该组件用于创建一个或多个计数器,这些计数器用
于跟踪某一网页或某一网站访问次数的信息。用户只能
创建一个计数器组件,但该组件可以有多于一个的计数
器。一旦创建了计数器,它将一直持续下去直到被删除
为止。
计数器组件的创建语法如下:
Set My Count=Server.CreateObject(“MSWC.Counters”)
(1)计数器组件的方法




计数器组件的方法描述如下:
Get(CNum):返回指定的计数器值,如果指定的计
数器不存在,则创建并将其值设为0。
Increment(CNum):对指定的计数器进行加1操作,
如果指定的计数器不存在,则创建并将其值设为1。
Remove(CNum):清除指定的计数器。
Set(CNum,i):设置指定计数器的值i。
其中,参数CNum用于指定计数器的名字。
(2)计数器组件的使用
ASP中的计数器组件通常在Global.asa文件中声明,
声明如下:
<object Runat=Server Scope=Application ID=WebCount
ProgID=“MSWC.Counters”>
</Object>
实例
例9-3计数器组件的用法(程序名:9-3.asp)。
<%
Set Counters=Server.Createobject(“MSWC.Counters”)
Counters.Set”cnbruce”,10'设置记数初始值
Counters.Set”it365cn”,20
Counters.Set”blueidea”,30
%>
共有<%=Counters.Get(“cnbruce”) %>次访问cnbruce.com网站
<Br>
共有<%=Counters.Get(“it365cn”)%>次访问 it365cn.com网站<Br>
共有<%=Counters.Get(“blueidea”)%>次访问blueidea.com网站
<Br>
在本例中刷新页面,记数是不会增加的。
用Increment方法实现计数递增实例
例9.4使用Increment方法,实现计数递增的用法(程序名:94.asp)。
<%
Set Counters=Server.CreateObject(“MSWC.Counters”)
%>
共有<%=Counters.Increment(“qvtc”)%>次访问qvtc.edu.cn网
站<Br>
共有<%=Counters.Increment(“itnet”)%>次访问itnet.com.cn
网站<Br>
例9.5 投票计数
2.常见组件
(1)Ad Rotator组件
Ad Rotator组件的作用是在网站的网页上显示横幅广告,并
且可用此组件规定不同横幅广告的显示频率。
(2)Browser Capabilities组件
创建一个BrowserType对象,该对象决定访问Web站点的每
个浏览器的性能、类型及版本。
(3)Database Access组件
提供用ActiveX Data Objects(ADO)对数据库的访问。
(4)Content Linking组件
创建一个NextLink对象,该对象可生成Web页内容列表,
并像书一样将各页顺序连接。
2.常见组件
(5)File Access组件
提供文件的输入输出访问。
(6)Collaboration Data Objects for NTS组件
可以快速、简便地在Web页上添加收发邮件功能。该组件
只适用于Internet Information Server for Windows NT
Server。
(7)MyInfo组件
创建一个MyInfo对象,该对象追踪个人信息,例如站点管
理员的姓名、地址及显示选择。
2.常见组件
(8)Counters组件
创建一个Counters对象,该对象可以创建、保存、增加或
检索任意数量的独立计数器。
(9)Content Rotator组件
自动翻转Web主页上的HTML内容字符串。
(10)Page Counter组件
记录并显示Web页被打开的次数。
9.5程序运行示例
第一步:编写一个体现一页中可以使用不同脚本语
言的ASP程序。编写ASP文件可以使用任何的文本编辑
器,如“记事本”,也可以使用Microsoft Visual
InterDev、Microsoft FrontPage或Dreamweaver等。
打开“记事本”文本编辑器,输入以下代码:
9.5程序运行示例
<html>
<title>hello</title>
<body>
<script language=“JScript” RUNAT=“Server”>
function write_hello()
{
Response.Write(“你好,欢迎使用ASP!^!^”)
}
</script>
<%
For I=3 to 5
write_hello()
Next
%>
</body>
</html>
9.5程序运行示例
执行文件菜单下的保存命令,弹出另存为对话框(如图9.9所示)。
指定保存位置后,在保存类型中选“所有文件”,在文件名里输入
test.asp,然后单击【保存】按钮。
图9.9
9.5程序运行示例
第二步:新建虚拟目录。首先在D盘根目录下建立一个
用于存放ASP文件的文件夹myasp,把第一步中所编辑
的test.asp拷贝到该文件夹中。打开【控制面板】|【管理
工具】|【Internet服务管理器】→右击【默认Web站点】|
【新建】|【虚拟目录】,把myasp文件夹设置成IIS服务
器中的虚拟目录myasp。
第三步:调试运行test.asp。打开IE浏览器,在地址栏中输
入http://localhost/myasp/test.asp(也可输入
http://127.0.0.1/maysp/test.asp),即可看到test.asp的运行
结果 ,如图9 10所示。
9.5程序运行示例
图9.10test.asp运行结果
本章小结
ASP技术经过不断的改进,其功能越来越强大。它
的出现,使得用户和信息之间成为了一种显示和浏览的
关系,而且实现了一种实时、动态和可交互的表达能力。
本章简单的介绍了ASP的工作原理和开发平台,较
详细的介绍了ASP中的内置对象及组件等。
相信对于学习ASP的读者具有较大的帮助。
习题
一、选择题
1.服务器端的Script程序代码:即位于()内的程序代码。
A.<Html>…</Html>B.<%…%>C.<Script>…</Script>D.<…>
2.ASP的内置对象()用来存储一个应用中所有用户共享的信息。
A.RequestB.ResponseC.SessionD.Application
3.()方法用于告知Active Server当遇到该方法时停止处理ASP文件。
A.WriteB.RedirectC.EndD.Stop
4.Response对象的()属性指定了在浏览器上缓冲存储的页距过期还有
多长时间。
A.BufferB.CharsetC.ExpiresD.ExpiresAbsolute
5.在ASP的常用组件中,()组件记录并显示Web页被打开的次数。
A.CountersB.File AccessC.Content LinkingD.Page Counter
习题
二、填空题
1.包括数据库访问、文件访问、浏览器信息访问和内容链
接等多种功能。
2.事件在首次创建新的应用程序时发生,事件在应用程序
退出时在Session_OnEnd事件之后发生。
3.Response对象的属性用于指定页面输出时是否要用到缓
冲区,默认值为False。
4.Session对象的属性以分钟为单位为该应用程序的Session
对象指定超时时限。
5.Application对象和Session对象的事件要和文件结合起来
使用。
习题
三、简答题
1.简述ASP的主要特点。
2.比较用户通过浏览器请求ASP程序的过程和访问普通
HTML页面的过程。
3.ASP的内部对象主要有哪些?简述各对象的主要作用。