1、第11章B/S结构程序设计基础第第11章章B/S结构程序设计基础结构程序设计基础11.1 ASP技术技术11.2 ASP程序的运行环境配置程序的运行环境配置11.3 ASP的内置对象的内置对象11.4 ADO技术技术 习题习题11第11章B/S结构程序设计基础11.1 ASP技术技术ASP(Active Server Pages)是微软公司推出的一种服务器端脚本环境,它内嵌于IIS中,可以让用户更轻松地结合HTML Web页面、脚本和ActiveX组件建立或执行动态的、交互的Web服务器应用程序。ASP并不单指某一种编程语言,而是一项把HTML代码与VBScript、JavaScript等脚本
2、语言融合在一起的技术。第11章B/S结构程序设计基础11.1.1脚本语言脚本语言脚本语言是介于HTML和Java、C+、Visual Basic等编程语言之间的一种语言。HTML用于格式化文本和链接网页,而编程语言则通常向计算机发送一系列复杂的机器指令,从而完成一系列操作。脚本语言介于两者之间,常用于格式化文本和使用编程语言编写的已编译好的组件。脚本语言也可用来向计算机发送指令,但它们的语法规则没有可编译的编程语言那么严格和复杂。第11章B/S结构程序设计基础ASP默认的脚本编写语言为VBScript语言,用户可以根据自己的需要选择其他脚本语言。只要安装了相应的脚本引擎,就可以使用几乎目前所有
3、流行的脚本语言编写ASP应用程序。第11章B/S结构程序设计基础11.1.2 对象和对象和ActiveX组件组件在面向对象编程中,对象就是指由当作完整实体的操作和数据组成的变量。对象是基于特定模型的,用户可通过由对象提供的一组方法或相关函数组成的接口来访问对象的数据或执行相应的操作。当用户用ASP编写服务器端的应用程序时,必须依靠ActiveX组件扩充Web应用程序的功能,如链接数据库,以及对数据库进行在线操作。ActiveX组件是一类特殊的对象,ASP通过这些对象以实现具有某种特殊功能的网页。第11章B/S结构程序设计基础11.1.3 ASP的特点的特点ASP具有以下几方面的特点:(1)在A
4、SP页面中可以包含文本、HTML标记、服务器端脚本和客户端脚本及ActiveX组件。Web服务器只执行ASP页面中的服务器端脚本,页面中的其他内容被服务器原封不动地发送给客户浏览器。第11章B/S结构程序设计基础(2)ASP技术支持多种脚本语言,包括VBScript和Java Script。在安装了相应的脚本引擎后,还可以使用其他脚本语言。(3)ASP提供了一些内置对象,使用这些内置对象可以增强ASP的功能。例如,实现客户机浏览器与Web服务器的交互,在网页间传递参数,等等。第11章B/S结构程序设计基础(4)ASP可以使用内置ActiveX组件完成许多重要功能。例如借助ADO对象可以轻松地完
5、成对数据库的操作。当然,也可以使用第三方组件来完成特定的功能。(5)ASP具有一定的安全性,由于ASP页面是在服务器端运行的,送到客户机浏览器的是ASP执行结果所生成的HTML页面,用户只能得到HTML代码,无法获取ASP源代码。(6)ASP是一种解释性语言,服务器只要在使用时对其进行解释执行即可。第11章B/S结构程序设计基础11.1.4 ASP文件的基本结构文件的基本结构ASP程序是以“.asp”为扩展名的文本文件,可以使用任何一种文本编辑器(如Windows中的记事本、写字板)来创建,也可以使用那些带有ASP增强功能的编辑器(如Frontpage、Dreamweaver等)来提高工作效率
6、。第11章B/S结构程序设计基础在ASP文件中通常包含文本、HTML标记和脚本命令。HTML是一种超文本标记语言,HTML中的标记可以被客户机浏览器读取、解释并显示在浏览器中。脚本(Script)由一组可以在Web服务器端或客户浏览器端运行的命令组成。此外,ASP脚本还可以调用ActiveX组件来执行特定的任务。第11章B/S结构程序设计基础文本、HTML标记和脚本命令三部分的内容可以以各种组合混杂在ASP文件中,需要使用不同的符号进行区分:HTML使用标准HTML标记界定;ASP服务器端脚本命令使用“”表示脚本的开始和结束,既可以每一行ASP语句界定一次,也可以多行语句界定一次。例例11-1
7、 一个简单的ASP程序(文件名为myfirst.asp):第11章B/S结构程序设计基础FONT size=很高兴见到大家!第11章B/S结构程序设计基础程序的运行结果如图11-1所示。这是一个向客户机浏览器重复显示文本“很高兴见到大家!”且字体越来越大的一段代码。在例11-1中,用“”括起来的是HTML标记;用“”括起来的是服务器脚本,由Web服务器负责执行;其他字符为普通文本。第11章B/S结构程序设计基础图11-1 包含脚本命令的HTML页第11章B/S结构程序设计基础11.1.5 主脚本语言主脚本语言 ASP使Web开发者可以用各种脚本语言编写程序而不用担心浏览器是否支持。实际上,在一
8、个.asp文件中可以使用多种脚本语言,只要在每段脚本程序开始处用HTML标签标明所用的脚本语言。第11章B/S结构程序设计基础VBScript是默认的主脚本语言,无需安装VBScript的脚本引擎。在ASP文件中,还可以将任一种脚本语言设为主脚本语言。其设置格式为例如,可以通过以下语句,将JScript设为主脚本语言:第11章B/S结构程序设计基础11.2 ASP程序的运行环境配置程序的运行环境配置在Windows Server 2003操作系统中默认安装IIS 6.0。而在Windows 2000和Windows XP中一般安装的为IIS 5.0。对开发者而言,IIS的各个版本之间的区别并不
9、大。下面介绍在Windows 2000 Server操作系统中安装配置IIS 5.0。第11章B/S结构程序设计基础11.2.1 IIS服务器的安装与测试步骤服务器的安装与测试步骤IIS服务器安装与测试的步骤如下:(1)进入控制面板,双击“添加/删除程序”按钮,进入“添加/删除程序”对话框,单击“添加/删除Windows组件”按钮,弹出“Windows组件向导”对话框,如图11-2所示。(2)选中“Internet信息服务(IIS)”对话框,然后单击“详细信息”按钮,弹出“Internet信息服务(IIS)”对话框,如图11-3所示,该对话框的列表框中详细列出安装的组件信息。第11章B/S结构
10、程序设计基础(3)选中所有选项,然后单击“确定”按钮,再次进入图11-2所示的界面。然后单击“下一步”铵钮,进行安装(注:中途需要插入安装光盘),直到安装完毕。(4)在安装完成后,需要测试服务器是否安装成功,打开浏览器,在地址栏中输入:“http:/localhost”,如果成功安装了IIS,并且没有修改默认Web站点的设置,浏览器中的正确显示效果如图11-4所示。第11章B/S结构程序设计基础图11-2 “Windows组件向导”对话框第11章B/S结构程序设计基础图11-3 “Internet信息服务(IIS)”对话框第11章B/S结构程序设计基础图11-4 测试服务器出现的两个页面第11
11、章B/S结构程序设计基础11.2.2 IIS服务器的配置服务器的配置 首先进入管理界面,打开控制面板,双击“管理工具”图标,然后双击“Internet信息服务”图标,进入管理界面,如图11-5所示。在图中可以看到在“默认Web站点”下有很多子节点,每一个子节点就是一个应用程序或者是一个虚拟路径。第11章B/S结构程序设计基础图11-5 “Internet信息服务”对话框(1)第11章B/S结构程序设计基础在Web服务器提供服务之前,先要启动服务,这可以通过工具栏上面的按钮来实现,也可以通过菜单实现。用鼠标右键单击“默认Web站点”,弹出图11-6所示的快捷菜单。通过弹出的菜单可以管理网站,如可
12、以单击“启动”菜单命令启动服务器、可以单击“停止”菜单命令停止服务器、可以单击“暂停”菜单命令暂停服务器。如果要对服务器进行各种设置,则可以通过“属性”菜单命令来设置。第11章B/S结构程序设计基础图11-6 “Internet信息服务”对话框(2)第11章B/S结构程序设计基础虚拟目录是物理上未包含在主目录中的目录,但可使客户端浏览器认为是包含在主目录中的目录。设定虚拟目录的步骤如下:(1)用鼠标右键单击“默认Web站点”,在弹出的快捷菜单中选择“新建”“虚拟目录”菜单命令,弹出“虚拟目录创建向导”对话框,如图11-7所示。(2)单击“下一步”按钮,弹出如图11-8所示对话框,在“别名”文本
13、框中输入虚拟目录别名,本例的输入为“website”,这个名称是访问网页时需要输入的名称。第11章B/S结构程序设计基础图11-7 欢迎界面第11章B/S结构程序设计基础图11-8 虚拟目录别名界面第11章B/S结构程序设计基础(3)单击“下一步”按钮,弹出如图11-9所示的对话框。单击“浏览”按钮,选择虚拟目录的路径。(4)单击“下一步”按钮,弹出如图11-10所示的对话框。在这个界面上,可以进行权限的设置,为了保证网站的安全,读者只需选择前3个选项就可以了。第11章B/S结构程序设计基础图11-9 选择Web站点目录界面第11章B/S结构程序设计基础图11-10 设置访问权限界面第11章B
14、/S结构程序设计基础 (5)单击“下一步”按钮,弹出如图11-11所示的对话框,单击“完成”按钮,便完成了虚拟目录的设定。图11-11 完成虚拟目录设定界面第11章B/S结构程序设计基础虚拟目录设置只是网站管理的开始,要对网站进行更加详细的设置,还需要通过“属性”对话框来设置。在“默认Web站点”上单击鼠标右键,在弹出的快捷菜单中单击“属性”菜单命令,弹出“默认Web站点属性”对话框,如图11-12所示。第11章B/S结构程序设计基础在“Web站点”选项卡中各选项值可选默认值,其中较重要的一个选项是“TCP端口”,默认的端口为“80”,因此用户输入URL:“http:/localhost”和输
15、入URL:“http:/localhost:80”的结果是一样的。但是如果把端口号改为8080,则访问时就需要输入端口号了,如“http:/localhost:8080”。通过设置不同的端口号,可以在同一台计算机上安装多个服务器。第11章B/S结构程序设计基础图11-12 “默认Web站点属性”对话框第11章B/S结构程序设计基础单击“主目录”选项卡,进入“主目录”属性页,如图11-13所示,在该属性页中通常采用默认的设定,最主要的是“本地路径”的设定。第11章B/S结构程序设计基础图11-13 “主目录”属性页第11章B/S结构程序设计基础用户可以对应用程序进一步配置,单击“配置”按钮,弹出
16、“应用程序配置”对话框,如图11-14所示。第11章B/S结构程序设计基础图11-14 “应用程序配置”对话框第11章B/S结构程序设计基础在该对话框的“应用程序选项”属性页中有几个重要的设定,其中要选中“启动父路径”(通常在HTML文件里,要访问“父路径”,可以用“./”来表示,但是如果不选中该选项,可能访问不了父路径)。同时“默认ASP语言”设置为“VBScript”(读者也可以设置为“JScript”),设置默认语言后,在ASP编程中,就不需要额外声明了。设定“ASP脚本超时”一项的默认值是90秒,也就是当一个ASP网页的执行时间超过90秒时,就会停止。在如图11-12所示的对话框中单击
17、“文档”选项卡,则进入“文档”属性页,如图11-15所示。第11章B/S结构程序设计基础图11-15 “文档”属性页第11章B/S结构程序设计基础在图11-15中,可以看到“启动默认文档”选项,列表中有“Default.htm”、“Default.asp”等文件名,这是为了访问网页方便而设置的,当用户访问一个虚拟路径的时候,如果该目录下面包含“默认文档”中所列的文件,则会自动显示该页内容(显示的优先权自上而下排列),如用户输入“http:/localhost/website”和输入“http:/localhost/website/default.htm”的结果是一样的。第11章B/S结构程序设
18、计基础11.2.3 ASP程序的运行程序的运行在计算机上成功地安装了Web服务器并将编制好的ASP文件存放在Web站点所对应的主目录上之后,就可以在浏览器中运行该ASP程序了。在浏览器的地址栏中输入正确的URL地址,其格式如下:http:/localhost/虚拟目录名/文件名称(包括扩展名)第11章B/S结构程序设计基础其中,“localhost”是指本机,可用具体的域名代替。如果程序存放在主目录中则不用虚拟目录名。例如,在浏览器中运行前面的myfirst.asp文件(该文件已存在于“d:教材实例”目录下),就可以在IE地址栏中输入http:/localhost/website/myfirs
19、t.asp,就会出现图11-1所示的结果。第11章B/S结构程序设计基础11.3 ASP的内置对象的内置对象ASP提供了可在脚本中使用的内置对象,这些对象使用户非常容易收集通过浏览器请示发送的信息,响应浏览器以及存储用户信息,从而使开发者摆脱了很多繁琐的工作。11.3.1 Response对象对象Response对象是ASP中一个重要的内置对象,对应于Web服务器端的HTTP响应,用于向客户端浏览器输出指定信息。使用Response对象可以实现动态创建Web页面,对客户端请求重定向以及向客户端写入Cookie等功能。第11章B/S结构程序设计基础Response对象的语法为:Response.
20、collectionpropertymethod其中,collection、property、method分别表示Response对象的集合、属性和方法。对于这三个参数,只能选择其中之一。1.Response对象的属性对象的属性表11-1列出了Response对象的属性。第11章B/S结构程序设计基础表表11-1 Response对象的属性对象的属性属 性功 能BufferCacheControlCharsetContentTypeExpiresExpiresAbsoluteIsClientConnectedPicsStatus指定页面的输出是否被缓冲控制是否允许代理服务器缓存页面将字符集名称
21、添加到Response对象的ContentType标题后面指定所响应的HTTP内容类型浏览器中所缓存页面的超时时间间隔指定浏览器缓存页面的具体超时日期和时间表明客户端是否与服务器端保持连接用于设置页面的Pics标签,Pics标签可以指明页面的内容级别用于传递Web服务器HTTP响应的状态第11章B/S结构程序设计基础2.Response对象的方法对象的方法Response对象的方法如表11-2所示。表表11-2 Response对象的方法对象的方法方 法功 能AddHeaderAppendToLogBinaryWriteClearEndFlushRedirectWrite向所输出的HTML页面
22、添加自定义HTTP头(Header)在Web服务器的日志文件中追加记录按字节格式向客户端浏览器输出数据,不进行任何字符集的转换清除服务器中缓存的Web页面数据停止处理.asp文件并返回当前的结果立即发送缓冲中的数据对当前页面进行重定向,尝试连接另外一个URL直接向客户端浏览器输出数据第11章B/S结构程序设计基础3.Response对象的数据集合对象的数据集合Response对象只有一个数据集合Cookies。Cookies是Web服务器通过浏览器在客户机硬盘上所存储的一些小文件(称为Cookie文件),这些文件可以包含用户的一些个人信息,如用户名、密码、在网站上所执行的操作等。当同一客户端浏
23、览器再次访问该Web服务器时,会将本地硬盘中的这些Cookie传给服务器。第11章B/S结构程序设计基础例例11-2 使用Response对象的Redirect方法,使同一个ASP程序可以根据客户的具体情况产生不同的响应,为不同的客户或不同的情况指定不同的页面,该实例包括三个文件:Redirect.asp、work.htm和rest.htm。(1)Redirect.asp的代码如下:第11章B/S结构程序设计基础=8 and dtmhour第11章B/S结构程序设计基础(2)work.htm文件的代码如下:您好第11章B/S结构程序设计基础(3)rest.htm文件的代码如下:对不起,现在休息
24、,请上班时间访问!上例在不同的时间的访问结果如图11-16所示。第11章B/S结构程序设计基础图11-16 Response.redirect的示例第11章B/S结构程序设计基础11.3.2 Request对象对象Request对象用于在Web服务器端收集用户通过HTTP传送的所有信息,如HTML表单用POST或GET方式所提交的数据、存储在客户端的Cookies数据等,是ASP中最常用的对象之一。从功能上看,Request与Response正好相反。在ASP中,Request对象负责收集用户信息,而Response对象负责向用户端发送信息,通过这两个对象的灵活运用,可以实现用户和服务器端的交
25、互,实现动态网页。第11章B/S结构程序设计基础Request对象的语法如下:Request.collectionpropertymethod(variable)其中,collection、property、method分别表示Request对象的集合、属性和方法,这三个参数只能选择其中之一,也可以什么都不选。Variable是一些字符串,这些字符串指定要从集合中检索的项目或作为方法与属性的输入。第11章B/S结构程序设计基础1.Request对象的属性对象的属性Request对象只有一个属性TotalBytes,这是一个只读属性,表示从客户端所接收数据的字节大小。在动态网页中,人们所关注的是
26、客户端传递的具体信息而非整个字符串的长度,因此本属性很少使用。语法格式如下:字节长度=Request.TotalBytes第11章B/S结构程序设计基础2.Request对象的方法对象的方法Request对象只提供一种方法BinaryRead,该方法以二进制方式读取客户端用POST方式所传递的数据。其语法格式如下:Variant 数组=Request.BinaryRead(Count)其中,参数Count是一个整型数据,表示每次读取数据的字节大小,范围介于0到Request对象的TotalBytes属性所取得的字节大小之间。如果程序中已经引用Request.Form集合,就不能使用本方法了。反
27、之,如果已经使用了BinaryRead方法,就不能访问Request.Form集合了。第11章B/S结构程序设计基础3.Request对象的数据集合对象的数据集合Request对象将用户通过HTTP传送信息保存在几个集合中,其语法格式如下:Request.Collection(variable)其中,collection指定Request对象的数据集合,variable指定变量名。Request对象的数据集合如表11-3 所示。第11章B/S结构程序设计基础表表11-3 Request对象的数据集合对象的数据集合集 合功 能ClientCertificateCookiesFormQuerySt
28、ringServerVariables取得客户端的身份权限数据取得存储于客户端的Cookies数据取得客户端利用POST方式所传递的数据取得客户端利用HTTP查询字符串所传递的数据和GET方式所传递的数据取得Web服务器端的环境变量信息第11章B/S结构程序设计基础例例11-3 应用Reponse和Request两个对象设计用户登录程序。通常用户登录需要对数据库进行操作,这些内容在本书后面章节中会详细加以介绍。本实例包括3个ASP程序。(1)登录页面(userlogin.asp)的代码如下:用户登录 请输入用户名和密码第11章B/S结构程序设计基础 用户名:INPUT type=INPUT n
29、ame=Username size=10 value=密 码第11章B/S结构程序设计基础 第11章B/S结构程序设计基础 在程序中,利用服务器脚本获取其他网页所传递的两个QueyrString参数:username和msg,这两个参数的值会反映用户登录的不同情况。其中,username表示用户名,msg表示登录后的提示信息。第11章B/S结构程序设计基础(2)用户验证。当用户填写了登录信息后,将提交给userdeal.asp文件进行处理。在该文件中,将对文件名和密码进行验证,并根据验证结果进行相应的处理。程序代码如下:第11章B/S结构程序设计基础(3)main.asp
30、页面。当用户输入不同的信息时,处理方式会有所不同。当输入信息不正确时,将返回userlogin.asp 页面,并给出具体提示信息。如果用户通过了登录验证,将转向main.asp页面,代码如下:%user=Request.QueryString(user)Response.Write 欢迎&user&访问本网站!%不同登录情况的显示效果如图11-17所示。第11章B/S结构程序设计基础图11-17 不同登录情况的显示效果第11章B/S结构程序设计基础11.3.3 Session对象对象Session对象是ASP技术中非常重要的对象,是实现用户会话管理的重要手段,是编写有关Web应用程序的常用工具
31、。Session指的是用户从到达某个站点直到离开为止的一段时间内,服务器分配给用户的一个存储信息的全局变量的集合,这些变量可以是自动生成的,也可以是编程者在服务端脚本程序中定义的。与Application对象不同,即使有很多用户同时访问一个Web服务器的同一个ASP程序,他们的Session对象的内容亦是不同的。第11章B/S结构程序设计基础1.Session对象的集合对象的集合Session对象的集合包括Contents和StaticObjects。1)Contents集合Contents集合是ASP程序利用Session对象所定义的所有变量的集合。与StaticObjects集合相比,Co
32、ntents集合中的Session不使用标记进行定义,其语法格式如下:Session.Content(Key)其中,Key指明了Session变量的名称,由于Contents集合是Session所默认的集合,也可使用下面的代码访问Contents集合:Session(key)第11章B/S结构程序设计基础2)StaticObjects集合StaticObjects集合包含在Global.asa文件中使用标记创建的所有Session级对象和变量。Global.asa文件对于网站应用程序来说是一个非常重要的文件,可以在该文件中指定事件脚本,并声明具有会话和应用程序作用域的对象,有关该文件的详细内容
33、,可参考相关资料。标记是一个HTML标记,不能将其放在标记内。利用标记创建对象的一般语法为第11章B/S结构程序设计基础其中,SCOPE说明该对象的使用范围,在Global.asa文件中有两个取值:Application或Session,当指定为Session时,就创建了一个Session对象,ID用于指定创建对象实例时的名字;PROGID是与类标识相关的标识;CLASSID用于指定COM类对象的唯一标识。第11章B/S结构程序设计基础2.Session对象的属性对象的属性Session对象所具有的属性如表11-4所示。表表11-4 Session对象的属性对象的属性属性功能CodePageL
34、CIDSessionIDTimeOut用于指定在浏览器页面中显示内容时所使用的代码页,代码页与字符集相对应设置现场标识。现场是与用户语言相关的一组用户首选项信息,决定如何格式化日期和时间、项目以及如何按字母排序和如何比较字符串等返回用户的Session标识指定Session的超时时间第11章B/S结构程序设计基础3.Session对象的方法对象的方法Session对象的方法见表11-5。表表11-5 Session对象的方法对象的方法方法名功能AbandonContents.Remove(item)Contents.RemoveAll完成目前的网页之后便结束Session对象从Contents
35、集合内删除item所指定的变量,item可以是字符串或整数,若item为整数,那么这个整数所代表的是索引值删除Contents集合内的所有变量第11章B/S结构程序设计基础4.Session对象的事件对象的事件Session对象有两个对象:Session_OnEnd和Session_OnStart。这两个事件的代码必须放在Global.asa文件中,其语法如下:sub Session_Onstart事件的处理程序代码End Subsub Session_OnEnd事件的处理程序代码End Sub第11章B/S结构程序设计基础例例11-4 使用Session对象编写计数器,程序代码如下:sess
36、ion应用举例session变量您是第次来访!打开浏览器,执行程序,显示“您是第1次来访!”,如图11-18所示。单击“刷新”按钮,可以看到来访次数增加。重新打开浏览器,再次执行该程序,仍然显示“您是第1次来访!”。这是因为每个浏览器都有自己的Session对象。第11章B/S结构程序设计基础图11-18 使用Session对象编写的计数器程序第11章B/S结构程序设计基础11.3.4 Application对象对象Application对象是Web应用程序级的一个对象,Web应用程序是指Web站点某个虚拟目录及其下的子目录所包含的网页和脚本程序的集合,通常由相互关联的.html文件、.asp
37、文件和Global.asa文件组成。每个Web站点可以设置多个虚拟目录,也就是说,每个Web站点上可以有多个Web应用程序。第11章B/S结构程序设计基础Application所包含的数据可被应用程序级的所有用户使用,并且可以在网站运行期间持久保存,因此Application对象特别适合在应用程序的不同用户之间传递信息。例如,利用Application对象可以统计网站的在线人数、创建多用户游戏及多用户聊天室等,其功能类似于一般程序设计语言中的“全局变量”。Application对象和Session对象有很多相似之处,它们的功能都是在不同的ASP页面之间共享信息。两者的区别主要有以下几点:第11
38、章B/S结构程序设计基础(1)应用范围不同。Application对象针对应用程序的所有用户,可以被多个用户共享。从一个用户那里接收到的Application变量可以传递给其他用户。而Session对象则是针对单一用户的,用户无法访问其他用户的Session变量。(2)存活时间不同。由于Application变量可由多个用户共享,因此不会因为某个用户甚至全部用户的离开而消失,一旦建立了Application变量,它就会一直存在,直到网站关闭。而Session变量会随着用户离开网站而被自动删除。第11章B/S结构程序设计基础Application对象的语法格式为Application.colle
39、ction|method其中,collection、method分别表示Application对象的集合和方法,这两个参数只能选择其中之一。Application对象包含许多的集合、方法和事件,但是它没有属性,这点与其他的ASP内置对象有很大的区别。第11章B/S结构程序设计基础1.Application对象的集合对象的集合Application对象有两个集合:Contents集合和StaticObjects集合。Contents集合允许Web应用程序访问所有未使用标记所创建的Application变量和对象。语法格式如下:Application.Contents(Key)其中,Key指明了A
40、pplication变量的名称。由于Contents集合是Application所默认的集合,也可以使用下面的代码访问Contents集合。第11章B/S结构程序设计基础Application(Key)StaticObjects集合可以获取在Global.asa文件中以标记建立的对象和变量,使用时其语法格式如下:Application.StaticObjects(Key)其中,(Key)指定对象变量的名称。第11章B/S结构程序设计基础2.Application对象的方法对象的方法由于Application对象中的变量可以被多个用户访问,当多个用户同时修改一个Application变量时可能出
41、现数据不一致的错误。Application对象提供了Lock和Unlock两种方法来保证多个用户无法同时改变某一个Application变量。Lock方法锁定Application对象,这时只允许当前用户存取Application变量而禁止其他用户操作。也就是说,在同一时刻只有一个用户可以对Application变量进行操作,保证了数据的一致性和完整性。第11章B/S结构程序设计基础Unlock方法用于解除用户对Application对象的锁定,允许其他用户对Application变量进行修改。如果用户没有明确地调用Unlock方法,则服务器将在ASP文件结束或超时后解锁,其语法格式如下:Ap
42、plication.LockApplication.UnLock3.Application对象的事件对象的事件Application对象有两个事件:Application_OnEnd和Application_OnStar。这两个事件的处理过程在Global.asa文件中创建。第11章B/S结构程序设计基础OnStar事件对应于Application对象的开始事件,只在第一个用户第一次请求应用程序时发生一次,在随后的其他请求过程中不再激活,主要用于变量初始化、创建对象和执行指定代码。OnEnd事件对应于Application对象的结束事件,在Web服务器被关闭时才发生,同样也只发生一次。当它被触
43、发时,应用程序的所有变量也被相应地取消。例例11-5 使用Application对象编写计数器程序,如图11-19所示。第11章B/S结构程序设计基础图11-19 使用Application对象编写的计数器程序第11章B/S结构程序设计基础程序代码如下:applicaiton应用举例Application变量您是第位来客说明:(1)多次打开浏览器,运行程序,可以看到Application变量值的改变。第11章B/S结构程序设计基础(2)Application对象的生命周期是在服务器运行期间,因此当虚拟服务器关机后Application变量将会丢失。想保留变量的值,需要用到文件系统的概念,此内容
44、可参考有关资料。第11章B/S结构程序设计基础11.3.5 Server对象对象在ASP中,当处理Web服务器上的特定任务,特别是一些与服务器的环境和处理活动有关的任务时,需要用到Server对象。Server对象通过属性和方法来访问Web服务器,从而实现对数据、网页、外部对象、组件的管理。其语法格式为Server.property|method其中,property和method分别表示Server对象的属性和方法,这两个参数只能选择其中之一。第11章B/S结构程序设计基础1.Server对象的属性对象的属性Server对象只有ScriptTimeout一个属性,用于设置ASP脚本所允许的最
45、长执行时间。如果在指定的时间内脚本没有执行完毕,系统将停止其执行,并且显示超时错误。其相应的语法如下:Server.ScriptTimeou=NumSeconds其中,NumSeconds是以秒为单位,缺省时间是90秒。该设置时间的语句必须出现在ASP脚本之前,否则将不起作用。第11章B/S结构程序设计基础2.Server对象的方法对象的方法Server对象常用的方法有以下两种:(1)CreateObject方法。CreateObject方法是Server对象中最重要、最常用的方法,用于创建一个已经在服务器上注册的服务器组件(ActiveX控件)实例,包括所有的ASP内置的组件和第三方提供的A
46、ctiveX组件。组件只有在创建了实例以后才可以使用,这些组件扩展了ASP的功能。其语法格式如下:第11章B/S结构程序设计基础Server.CreateObject(progID)其中,progID是指定的组件的标识,其格式为出版商名.组件名.版本号例如,创建一个ADODB组件的实例,可以使用下述代码:第11章B/S结构程序设计基础(2)MapPath方法。MapPath方法可以将所指定的相对路径或虚拟路径转换为服务器上相应的物理路径,当需要物理路径来操作服务器上的目录或文件时,常用本方法。其语法格式如下:Server.MapPath(path)其中,path用于指定相对路径或虚拟路径。如果
47、Path以字符“”或“/”开始,说明Path是一个完整路径(由网站的根目录开始);如果Path不以字符“”或“/”开始,说明Path所指定的路径是相对于当前ASP文件所在的路径。第11章B/S结构程序设计基础例例11-6 应用Server对象的MapPath方法转换路径,代码格式如下:Server对象的MapPath方法转换路径 Server对象的MapPath方法转换路径%第11章B/S结构程序设计基础 Response.write 服务器的根目录是:Response.write&Server.MapPath(/)&Response.write 当前目录的上层目录是:Response.wri
48、te&Server.MapPath(./)&Response.write 当前目录是:Response.write&Server.MapPath(./)&Response.write 当前的文件是:第11章B/S结构程序设计基础 Response.write&Server.MapPath(mappath.asp)&%其运行结果如图11-20所示。第11章B/S结构程序设计基础图11-20 使用MapPath方法转换路径第11章B/S结构程序设计基础(3)HTMLEncode方法。HTMLEncode方法用于对指定的字符串进行HTML编码,从而使该字符串以所需的形式显示出来。其语法格式如下:Se
49、rver.HTMLEncode(HtmlString)其中,HtmlString是需要进行编码的字符串。第11章B/S结构程序设计基础当ASP程序向客户端浏览器输出HTML标记时,浏览器就将其自动解释为HMTL标记,并按照标记所指定的格式显示在浏览器上。如果想在浏览器中原样输出HMTL标记符,即浏览器不对这些标记进行解释,可以使用本方法。例例11-7 使用HTMLEncode方法在网页中显示HTML语言的标签。程序执行结果如图11-21所示。第11章B/S结构程序设计基础图11-21 使用HTMLEncode方法第11章B/S结构程序设计基础程序代码如下:%Response.Write 表单的
50、基本格式:Response.Write Server.HTMLEncode()&Response.Write.Response.Write Server.HTMLEncode()&%第11章B/S结构程序设计基础(4)URLEncode方法URLEncode方法将所指定的字符串进行URL编码,其语法格式如下:Server.URLEncode(string)其中,string指定要编码的字符串。当字符串数据以URL的形式传递到服务器时,在字符串中不允许出现空格或其他特殊字符(如“&”、“#”等)。如果确实需要传送这些特殊字符,可以用Server.URLEncode方法对这些字符串进行URL编码。