资源预览内容
第1页 / 共179页
第2页 / 共179页
第3页 / 共179页
第4页 / 共179页
第5页 / 共179页
第6页 / 共179页
第7页 / 共179页
第8页 / 共179页
第9页 / 共179页
第10页 / 共179页
亲,该文档总共179页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第3 3部分部分 电子商务应用程序开发电子商务应用程序开发第第9章章 Web应用程序概述本章主要介绍应用程序概述本章主要介绍9.1 什么是什么是Web应用程序应用程序9.2 Web应用程序的工作方式应用程序的工作方式9.3 VBScript脚本语言简介脚本语言简介9.4 ASP应用服务器技术基础应用服务器技术基础9.5 数据库基础数据库基础9.6 IIS Web服务器介绍服务器介绍9.7 本章摘要与重点回顾本章摘要与重点回顾运用前面章节所述的方法,已经可以建立一个完整的运用前面章节所述的方法,已经可以建立一个完整的网站,并为访问者提供静态的信息。但是,这样一个网站,并为访问者提供静态的信息。但是,这样一个网站只能提供信息,其性质等同于一个出版物,不能网站只能提供信息,其性质等同于一个出版物,不能称为一个真正的称为一个真正的Web应用,这样的静态网站是不能用应用,这样的静态网站是不能用于电子商务活动的,电子商务活动要求网站提供与使于电子商务活动的,电子商务活动要求网站提供与使用者交互的手段。那么,什么是用者交互的手段。那么,什么是Web应用程序呢?应用程序呢?9.1 什么是什么是Web应用程序应用程序Web应用程序是一组应用程序是一组Web页面,这些页面,这些Web页面与访问页面与访问者交互,与其他者交互,与其他Web页面交互,并与页面交互,并与Web服务器上访服务器上访问的各种资源(例如数据库)交互,来完成一个特定问的各种资源(例如数据库)交互,来完成一个特定的功能。所谓交互,是指以提问、回答的方式交换需的功能。所谓交互,是指以提问、回答的方式交换需要的信息。要的信息。Web应用程序是以大量运用动态页面为特应用程序是以大量运用动态页面为特征的。动态页面是与静态页面相对应的概念。静态页征的。动态页面是与静态页面相对应的概念。静态页面的内容已完全确定,面的内容已完全确定,Web服务器在用户请求该页时服务器在用户请求该页时不做任何改变地将该页发给用户。动态页面的部分或不做任何改变地将该页发给用户。动态页面的部分或全部内容是不确定的,用户最终看到的动态页面所呈全部内容是不确定的,用户最终看到的动态页面所呈现出来的内容只在用户向现出来的内容只在用户向Web服务器请求该页时才能服务器请求该页时才能确定。确定。利用利用Web应用程序,用户可以方便地完成信息的采集、应用程序,用户可以方便地完成信息的采集、保存、快速查询和分析。网上商店、网上问卷、用户保存、快速查询和分析。网上商店、网上问卷、用户反馈表、电子图书馆、搜索引擎等都是反馈表、电子图书馆、搜索引擎等都是Web应用程序应用程序的生动实例。的生动实例。图图9-1是是Macromedia官方站点上的唱片店实例。官方站点上的唱片店实例。唱片店的商品目录(唱片店的商品目录(Catalog)是动态页面的很好的是动态页面的很好的例子,用户看到商品目录页面在不同的日期、不同的例子,用户看到商品目录页面在不同的日期、不同的时刻都可能不同。用户每次请求该页面时,时刻都可能不同。用户每次请求该页面时,Web服务服务器都会根据当时商品数据库中的实际内容,来生成当器都会根据当时商品数据库中的实际内容,来生成当时有效的商品目录页面。时有效的商品目录页面。查阅有关唱片店查阅有关唱片店Web应用程序实例的信息,可输入下应用程序实例的信息,可输入下列网址:列网址: http:/www.macromedia.com/desdev/mx/dreamweaver/articles/record_store.html图图9-1唱片店实例唱片店实例9.2.1静态页面的处理流程静态页面的处理流程静态页面的内容在页面设计者设计时就完全确定了,静态页面的内容在页面设计者设计时就完全确定了,它由一系列静态的它由一系列静态的HTML标签元素组成。标签元素组成。Web服务器服务器上保存的静态页面传到用户端时是不变的。下面是一上保存的静态页面传到用户端时是不变的。下面是一个静态页面的例子:个静态页面的例子: 9.2 Web应用程序的工作方式应用程序的工作方式静态页面实例静态页面实例静态页面实例静态页面实例源码传到用户端不会有变化源码传到用户端不会有变化处理静态页面的工作由处理静态页面的工作由Web服务器完全承担。当用户服务器完全承担。当用户单击网页上的超链接,选择浏览器中的书签或直接在单击网页上的超链接,选择浏览器中的书签或直接在浏览器的地址栏中输入浏览器的地址栏中输入URL地址来请求一个静态页地址来请求一个静态页面时,浏览器会向面时,浏览器会向Web服务器发送对该页面的请求;服务器发送对该页面的请求; Web服务器接收到该请求后,会根据请求所指出的页服务器接收到该请求后,会根据请求所指出的页面地址,根据服务器上虚拟目录和实目录的对应关系面地址,根据服务器上虚拟目录和实目录的对应关系找到该页面文件;找到该页面文件; 然后然后Web服务器把该页面文件通服务器把该页面文件通过过HTTP协议原封不动地传给用户端的浏览器,其处协议原封不动地传给用户端的浏览器,其处理流程如图理流程如图9-2所示。所示。图图9-2静态页面的处理流程静态页面的处理流程简单来说,静态页面的处理流程如下:简单来说,静态页面的处理流程如下: (1) 浏览器发出对静态页面的请求。浏览器发出对静态页面的请求。 (2) Web服务器寻找该页面。服务器寻找该页面。 (3) Web服务器将该页面返回给浏览器。服务器将该页面返回给浏览器。对对Web应用程序而言,处理流程就没有这么简单。由应用程序而言,处理流程就没有这么简单。由于对动态页面有部分的页面内容会在请求时生成,所于对动态页面有部分的页面内容会在请求时生成,所以处理上增加一些层次。动态页面是在静态页面的基以处理上增加一些层次。动态页面是在静态页面的基础上添加服务器端脚本或标签编写而成的。当础上添加服务器端脚本或标签编写而成的。当Web服服务器接收到对动态页面的请求,找到该页面后,并不务器接收到对动态页面的请求,找到该页面后,并不马上传回用户,而是先把页面传给一个专门负责处理马上传回用户,而是先把页面传给一个专门负责处理动态元素的处理层次来生成最终传回用户端的页面内动态元素的处理层次来生成最终传回用户端的页面内容。这个处理层次被称为应用服务器。容。这个处理层次被称为应用服务器。9.2.2 简单动态页面的处理流程简单动态页面的处理流程应用服务器执行动态页面中的服务器端脚本或标签,应用服务器执行动态页面中的服务器端脚本或标签,执行的动作包括对服务器端可访问的资源的操作(例执行的动作包括对服务器端可访问的资源的操作(例如文件操作、数据库操作、会话信息等)和生成结果。如文件操作、数据库操作、会话信息等)和生成结果。生成结果是把原来页面中的服务器端脚本或标签替换生成结果是把原来页面中的服务器端脚本或标签替换成一系列静态的页面元素,生成什么页面由服务器端成一系列静态的页面元素,生成什么页面由服务器端脚本或标签控制。因此,应用服务器返回给脚本或标签控制。因此,应用服务器返回给Web服务服务器的是一个静态页面,再由器的是一个静态页面,再由Web服务器将这个静态的服务器将这个静态的结果页面传给用户。对简单的动态页面,不涉及外部结果页面传给用户。对简单的动态页面,不涉及外部资源访问,处理流程仅增加应用服务器这一个层次。资源访问,处理流程仅增加应用服务器这一个层次。图图9-3是这个流程的示意图。是这个流程的示意图。图图9-3简单动态页面的处理流程简单动态页面的处理流程该流程概述如下:该流程概述如下: (1) 浏览器发出对动态页面的请求;浏览器发出对动态页面的请求; (2) Web服务器找到该页面,传给应用服务器;服务器找到该页面,传给应用服务器; (3) 应用服务器扫描页面,执行代码,生成结果;应用服务器扫描页面,执行代码,生成结果; (4) 应用服务器把结果页面返回给应用服务器把结果页面返回给Web服务器;服务器; (5) Web服务器发回该结果页面给浏览器。服务器发回该结果页面给浏览器。下面是一个下面是一个ASP动态页面的例子:动态页面的例子: 简单动态页面实例简单动态页面实例应用服务器会将上面的服务器端脚本替换掉应用服务器会将上面的服务器端脚本替换掉在用户端浏览器的某一次执行看到的是如图在用户端浏览器的某一次执行看到的是如图9-4所示所示的结果页面。的结果页面。 如果在用户端浏览器查看该页面的源代码,可以看到如果在用户端浏览器查看该页面的源代码,可以看到服务器端脚本服务器端脚本已经被替换成该函数的已经被替换成该函数的执行结果:执行结果: 2002822 10:29:36。由于脚本在服务器上而不是在客户端运行,传送到浏由于脚本在服务器上而不是在客户端运行,传送到浏览器上的览器上的 Web 页是在页是在 Web 服务器上生成的,所以不服务器上生成的,所以不必担心浏览器能否处理脚本,必担心浏览器能否处理脚本,Web 服务器已经完成服务器已经完成了所有脚本的处理,并将标准的了所有脚本的处理,并将标准的 HTML 传输给浏览传输给浏览器。由于只有脚本的结果返回到浏览器,所以服务器器。由于只有脚本的结果返回到浏览器,所以服务器端脚本不易复制,用户看不到当前正在浏览的页面创端脚本不易复制,用户看不到当前正在浏览的页面创建时的脚本命令。建时的脚本命令。图图9-4简单动态页面的结果实例简单动态页面的结果实例当需要访问外部资源时,当需要访问外部资源时,Web应用程序的处理流程会应用程序的处理流程会增加更多的处理层次。这种情况下,动态页面的服务增加更多的处理层次。这种情况下,动态页面的服务器脚本中将包含访问外部资源的代码,可能对外部资器脚本中将包含访问外部资源的代码,可能对外部资源作检索、更新、添删等操作,并可把操作结果或者源作检索、更新、添删等操作,并可把操作结果或者抽取的外部资源数据编排好,生成替换服务器脚本的抽取的外部资源数据编排好,生成替换服务器脚本的静态内容。外部资源的最典型的例子是数据库,但并静态内容。外部资源的最典型的例子是数据库,但并不只限于数据库,文件系统、企业应用网关,如企业不只限于数据库,文件系统、企业应用网关,如企业资源计划(资源计划(ERP)/客户关系管理(客户关系管理(CRM)/供应链管供应链管理(理(SCM)、)、传统主机应用网关(传统主机应用网关(IBM的交易处理的交易处理中间件(中间件(CICS)等都是典型的外部资源。等都是典型的外部资源。 9.2.3 复杂动态页面的处理流程复杂动态页面的处理流程图图9-5复杂动态页面的处理流程复杂动态页面的处理流程以数据库作为外部资源为例,当以数据库作为外部资源为例,当Web服务器接收到对服务器接收到对动态页面的请求,找到该页面后,把页面传给应用服动态页面的请求,找到该页面后,把页面传给应用服务器;务器; 应用服务器执行动态页面中的服务器端脚本应用服务器执行动态页面中的服务器端脚本或标签,当遇到访问数据库的代码时,应用服务器发或标签,当遇到访问数据库的代码时,应用服务器发送代码中的送代码中的SQL命令给数据库服务器;命令给数据库服务器; 数据库服务数据库服务器执行器执行SQL命令,把结果所得的数据集返回给应用服命令,把结果所得的数据集返回给应用服务器;务器; 应用服务器执行脚本中的后续代码,生成替应用服务器执行脚本中的后续代码,生成替换脚本的静态内容,生成过程中如何利用数据库服务换脚本的静态内容,生成过程中如何利用数据库服务器返回的数据集由脚本代码控制;器返回的数据集由脚本代码控制; 应用服务器将最应用服务器将最终生成的静态页面返回给终生成的静态页面返回给Web服务器;服务器; 再由再由Web服服务器将这个静态的结果页面传给用户,图务器将这个静态的结果页面传给用户,图9-5是这一是这一过程的示意图。过程的示意图。Web应用程序的一般处理流程概括如下:应用程序的一般处理流程概括如下: (1) 浏览器发出对动态页面的请求;浏览器发出对动态页面的请求; (2) Web服务器找到该页面,传给应用服务器;服务器找到该页面,传给应用服务器; (3) 应用服务器扫描页面,执行代码;应用服务器扫描页面,执行代码; (4) 遇外部资源访问代码,应用服务器发送资源访遇外部资源访问代码,应用服务器发送资源访问命令给资源服务器;问命令给资源服务器; (5) 资源服务器执行资源访问命令,返回结果数据资源服务器执行资源访问命令,返回结果数据集;集; (6) 应用服务器执行余下的代码,插入数据到结果应用服务器执行余下的代码,插入数据到结果页面;页面; (7) 应用服务器把结果页面返回给应用服务器把结果页面返回给Web服务器;服务器; (8) Web服务器发回该结果页面给浏览器。服务器发回该结果页面给浏览器。VBScript脚本语言是一种介于脚本语言是一种介于HTML语言和语言和Visual Basic高级语言之间的一种语言,也可以称为简化的高级语言之间的一种语言,也可以称为简化的Visual Basic语言。它接近于高级语言,但却比高级语言。它接近于高级语言,但却比高级语言简单易学,当然其功能也没有高级语言那么强。语言简单易学,当然其功能也没有高级语言那么强。ASP本身并不是一种脚本语言,在本身并不是一种脚本语言,在ASP程序中常用的程序中常用的脚本语言有脚本语言有VBScript和和JavaScript等语言。等语言。VBScript脚本语言直接来源于脚本语言直接来源于Visual Basic语言,并且继承了语言,并且继承了VB的简单易学的特点。的简单易学的特点。9.3 VBScript脚本语言简介脚本语言简介VBScript脚本程序既可以在客户端浏览器中执行,也脚本程序既可以在客户端浏览器中执行,也可以在服务器端执行,一般可以在服务器端执行,一般ASP程序中的程序中的VBScript语语言是放在服务器端执行的。言是放在服务器端执行的。下面简单介绍下面简单介绍VBScript脚本语言的语法。脚本语言的语法。当当VBScript代码放在服务器端执行时有代码放在服务器端执行时有2种语法格式。种语法格式。语法格式语法格式1:语法格式语法格式2:VBScript代码代码9.3.1 VBScript代码的基本语法格式代码的基本语法格式有时,为了某种需要,可能也会将有时,为了某种需要,可能也会将VBScript代码放在代码放在客户端执行,此时的语法格式如下:客户端执行,此时的语法格式如下: VBScript代码代码在在Visual Basic、C+等高级语言中,有整数、字符、浮等高级语言中,有整数、字符、浮点数等不同的数据类型,但在点数等不同的数据类型,但在VBScript中,只有一种数中,只有一种数据类型,称为据类型,称为Variant,也叫做变体类型。也叫做变体类型。Variant是一种是一种特殊的数据类型,根据不同的使用方式,它可以包含不特殊的数据类型,根据不同的使用方式,它可以包含不同的数据类别信息。同的数据类别信息。Variant变量中保存的数据类型称为变量中保存的数据类型称为变量的子类型。变量的子类型。例例9.1Variable=2003VBScript会将它当成整数对待会将它当成整数对待Variable=2003VBScript会将它当成字符串对待会将它当成字符串对待Variable=中国上海中国上海VBScript会将它当成字符串对待会将它当成字符串对待9.3.2 VBScript的数据类型的数据类型Variable=20.03VBScript会将它当成实数对待会将它当成实数对待从例从例9.1可以看出,可以看出,VBScript会根据赋值自动确定数会根据赋值自动确定数据变量的数据子类型。据变量的数据子类型。注意:在注意:在ASP中中VBScript用的标点符号都是在英文状用的标点符号都是在英文状态下输入的。态下输入的。VBScript也会根据代码的上下文自动转换数据的子类也会根据代码的上下文自动转换数据的子类型。型。例例9.2Variable_1=2003 这里这里Variable_1作为一个字符串作为一个字符串变量来工作变量来工作Variable_2=Variable_1+3这时这时VBScript就会自动将就会自动将Variable_1转换成整数变量,然后参与运算转换成整数变量,然后参与运算一般情况下,一般情况下,Variant变量会自动转换其代表的数据变量会自动转换其代表的数据子类型,但有时候,也会遇到一些数据类型不匹配造子类型,但有时候,也会遇到一些数据类型不匹配造成的错误。这时,可以使用成的错误。这时,可以使用VBScript的转换函数来强的转换函数来强制转换数据的子类型。表制转换数据的子类型。表9-1列出列出Variant的数据子类的数据子类型。型。表表9-1 Variant的数据子类型的数据子类型子类型说明子类型说明String变长字符串类型变长字符串类型Byte其值是其值是0255之间的无符号整数之间的无符号整数Integer其值是其值是-32 76832 767之之间的带符号的整数间的带符号的整数Long取值范围是取值范围是-2 147 483 6482 147 483 647之间的长整型整数之间的长整型整数Single包含单精度浮点包含单精度浮点数数Double其值是双精度浮点数其值是双精度浮点数Date(Time)其值代表某其值代表某个日期和时间的数字个日期和时间的数字Boolean其值是其值是True和和FalseCurrency取值范围是取值范围是-922 337 203 685477.580 8922 337 203 685 477.580 7Empty变量未初变量未初始化时,如果代码中将其作为数字,其值就是始化时,如果代码中将其作为数字,其值就是0; 如如果代码中将其作为字符串,其值就是一个零长度字符果代码中将其作为字符串,其值就是一个零长度字符串(串()Null不包含任何有效数据的变量不包含任何有效数据的变量Object包含包含一个对象一个对象9.3.3VBScript的常量的常量常量是在整个脚本中保持不变的量。常量可以代表字常量是在整个脚本中保持不变的量。常量可以代表字符串、数字等常数,常量一经声明,其值将不能再更符串、数字等常数,常量一经声明,其值将不能再更改。声明常量的意义就在于可以在程序的任何部分使改。声明常量的意义就在于可以在程序的任何部分使用该常量来代表特定的数值,从而方便程序的编写。用该常量来代表特定的数值,从而方便程序的编写。用用Const语句在语句在VBScript中创建常量。中创建常量。例例9.3Const PI=3.1415926 表示数值型常数表示数值型常数Const Val=100 表示数值型常数表示数值型常数Const char1=中国中国 表示字符串型常数表示字符串型常数Const char2=100 表示字符串型常数表示字符串型常数Const birthday=#2003112# 表示日期或时间常数表示日期或时间常数表表9-2是用于连接常量和变量构成表达式的运算符。是用于连接常量和变量构成表达式的运算符。算术运算符比较运算符逻辑运算符描述符号描述符号算术运算符比较运算符逻辑运算符描述符号描述符号描述符号求幂等于描述符号求幂等于=逻辑非逻辑非Not负号负号-不等于不等于逻辑与逻辑与And乘乘*小于小于逻辑异或逻辑异或Xor整除整除小于等于小于等于=逻辑隐逻辑隐含含Imp加加+对象引用比较对象引用比较Is 减减-字符串连接字符串连接&VBScript继承了继承了Visual Basic的所有类别的运算符,的所有类别的运算符,包括算术运算符、比较运算符、逻辑运算符和连接运包括算术运算符、比较运算符、逻辑运算符和连接运算符。算符。其中,算术运算符用于连接运算表达式;其中,算术运算符用于连接运算表达式; 比较运算比较运算符用于比较数值或对象,其返回值为符用于比较数值或对象,其返回值为True或或False,比较运算常用于如比较运算常用于如“If A=B Then”之类的条件表之类的条件表达式中;达式中; 连接运算符连接运算符 & 用于连接两个字符串;用于连接两个字符串; 而逻而逻辑运算符主要用于连接条件表达式,表示各个条件之辑运算符主要用于连接条件表达式,表示各个条件之间的关系,其返回值也是间的关系,其返回值也是True和和False,例如在逻辑例如在逻辑语句语句“If a=30 And b=50”中,使用了中,使用了And运算符,运算符,只有当两个条件都满足时,其返回值才是只有当两个条件都满足时,其返回值才是True。例例9.4在在VBScript 中,变量是不用先声明就可以直接使用中,变量是不用先声明就可以直接使用的。然而,在编程时应该养成声明变量的良好习惯,的。然而,在编程时应该养成声明变量的良好习惯,因为这样有助于防止错误发生。声明一个变量,明确因为这样有助于防止错误发生。声明一个变量,明确地告诉服务器有一个特定名称的变量,这样就可以在地告诉服务器有一个特定名称的变量,这样就可以在脚本中引用该变量。在脚本中引用该变量。在VBScript中声明一个变量可以中声明一个变量可以使用使用Dim语句,如下所示:语句,如下所示: Dim MystringMystring=This is my string 从上述中也可以看出,从上述中也可以看出,VBScript变量的赋值也与许多变量的赋值也与许多高级语言相同,变量放在等号的左边,赋值语句放在高级语言相同,变量放在等号的左边,赋值语句放在等号的右边,并且赋值语句也可以是表达式形等号的右边,并且赋值语句也可以是表达式形9.3.4VBScript的变量的变量式。像许多高级语言一样,式。像许多高级语言一样,VBScript变量根据作用域变量根据作用域的不同也可分为过程级变量和全局级变量。的不同也可分为过程级变量和全局级变量。变量的作用域可以根据需要由声明其位置决定,变量变量的作用域可以根据需要由声明其位置决定,变量声明的位置也决定哪些脚本命令可以访问何种变量。声明的位置也决定哪些脚本命令可以访问何种变量。在过程内部声明的变量具有局部作用域。每执行一次在过程内部声明的变量具有局部作用域。每执行一次过程,变量就被创建一次,然后消亡。而过程外部的过程,变量就被创建一次,然后消亡。而过程外部的任何命令都不能访问它。在过程外部声明的变量具有任何命令都不能访问它。在过程外部声明的变量具有全局作用域,其值能被全局作用域,其值能被 ASP 页上的任何脚本命令访页上的任何脚本命令访问和修改。问和修改。然而,全局变量仅在单个然而,全局变量仅在单个ASP页中可用,要使它在单页中可用,要使它在单个个ASP页之外可用,就必须把变量定义在页之外可用,就必须把变量定义在Session对象对象下或下或Application对象下,这样变量对一个用户所请求对象下,这样变量对一个用户所请求的的ASP应用程序中的所有页都是可用的。应用程序中的所有页都是可用的。例例9.5数组的命名、声明、赋值和使用与前面介绍的变量基数组的命名、声明、赋值和使用与前面介绍的变量基本上是一样的,不同的是要确定数组中的项目数。本上是一样的,不同的是要确定数组中的项目数。 9.3.5 VBScript的数组的数组例例9.6VBScript中的数组从中的数组从0开始计数,所以上面定义的数开始计数,所以上面定义的数组组a(3)有有4个变量。也可以根据需要声明多维数组,个变量。也可以根据需要声明多维数组,下面的例子将定义一个下面的例子将定义一个3行行4列的数组。列的数组。例例9.7还可以声明一个动态数组,声明数组时可以不确定数还可以声明一个动态数组,声明数组时可以不确定数组项目数,使用该数组时再确定数组的大小。组项目数,使用该数组时再确定数组的大小。例例9.8合理使用函数可以简化程序,提高效率。合理使用函数可以简化程序,提高效率。VBScript继继承了承了Visual Basic中的一些函数。下面介绍一些常用中的一些函数。下面介绍一些常用的函数。的函数。1. 转换函数转换函数在在VBScript的数据类型中介绍的数据类型中介绍Variant变量,一般情变量,一般情况下会将其代表的数据子类型转换成合适的数据类型。况下会将其代表的数据子类型转换成合适的数据类型。但有时也会产生数据类型不匹配的错误,此时可用但有时也会产生数据类型不匹配的错误,此时可用VBScript的转换函数来强制转换数据子类型。数据转的转换函数来强制转换数据子类型。数据转换函数见表换函数见表9-3。9.3.6 VBScript的函数的函数函数功能函数功能CStr(Variant)将变量将变量Variant转化为字符串转化为字符串类型类型CDate(Variant)将变量将变量Variant转化为日期类型转化为日期类型CInt(Variant)将变量将变量Variant转化为整数类型转化为整数类型CLng(Variant)将变量将变量Variant转化为长整数类型转化为长整数类型CSng(Variant)将变量将变量Variant转化为转化为Single类型类型CDbl(Variant)将变量将变量Variant转化为转化为Double类型类型CBool(Variant)将变量将变量Variant转化为布尔类型转化为布尔类型在实际应用中经常会用到各种转换函数来强制转换数在实际应用中经常会用到各种转换函数来强制转换数据子类型。下面例据子类型。下面例9-9中的中的CStr就是将就是将Num由整数子由整数子类型强制转换为字符串子类型。类型强制转换为字符串子类型。例例9.92. 输入输出函数输入输出函数输入输出函数只能运行于客户端,可以在客户端产生输入输出函数只能运行于客户端,可以在客户端产生弹出窗口,与用户进行交互活动。这两个函数作用很弹出窗口,与用户进行交互活动。这两个函数作用很大,一些简单的用户信息输入、验证若放在客户端完大,一些简单的用户信息输入、验证若放在客户端完成,就可以既加快程序的运行又减轻服务器的负荷。成,就可以既加快程序的运行又减轻服务器的负荷。输入、输出函数的语法格式见表输入、输出函数的语法格式见表9-4。函数语法格式输出函数函数语法格式输出函数MsgBoxMsgBox(prompt ,button,title)输入函数输入函数InputBoxInputBox(prompt ,title,default)输入、输出函数中参数的意义如下:输入、输出函数中参数的意义如下: prompt显示窗口中的文字。显示窗口中的文字。title可选项,显示窗口标题中的文字。可选项,显示窗口标题中的文字。button可选项,用来指定窗口的外观和按钮的可选项,用来指定窗口的外观和按钮的类型。类型。default可选项,用来指定窗口中文本输入框内可选项,用来指定窗口中文本输入框内的默认字符串。的默认字符串。例例9.10客户端用户名输入和确认。客户端用户名输入和确认。程序代码如下:程序代码如下:输入、输出函数应用实例输入、输出函数应用实例 程序运行结果如图程序运行结果如图9-6、图、图9-7所示。所示。图图9-6【输入用户名】对话框【输入用户名】对话框图图9-7【用户确认】对话框【用户确认】对话框3. 字符串函数字符串函数在网站开发时常常需要处理用户注册时输入的用户名、在网站开发时常常需要处理用户注册时输入的用户名、密码等,在留言板中的留言标题、内容、留言人等信密码等,在留言板中的留言标题、内容、留言人等信息,完成这些工作都要用到字符串函数对字符串截头息,完成这些工作都要用到字符串函数对字符串截头去尾、大小写转换等。常用字符串函数及功能如表去尾、大小写转换等。常用字符串函数及功能如表9-5所示。所示。例例9.11字符串函数的应用。字符串函数的应用。程序代码如下:程序代码如下: 显示显示User_name的内容的内容 显示显示char的内容的内容4. 日期和时间函数日期和时间函数在网站的某些页面上经常需要显示来访者访问网站的在网站的某些页面上经常需要显示来访者访问网站的日期和时间,或记载留言者留言的日期和时间,这就日期和时间,或记载留言者留言的日期和时间,这就需要在代码中用到需要在代码中用到VBScript的日期和时间函数。常用的日期和时间函数。常用的日期和时间函数及功能如表的日期和时间函数及功能如表9-6所示,日期或时间所示,日期或时间间隔因子如表间隔因子如表9-7所示。所示。函数语法功能函数语法功能NowNow()取得系统当前的日期和时间取得系统当前的日期和时间Date Date()取得系统当前的日期取得系统当前的日期Time Time()取得取得系统当前的时间系统当前的时间MonthMonth(date)取得取得date给定日给定日期的月份续表函数语法功能期的月份续表函数语法功能DayDay(date)取得取得date给给定日期是几号定日期是几号WeekDayWeekDay (date)取得取得date给定给定日期是星期几日期是星期几YearYear(date)取得取得date给定日期的年给定日期的年份份DateDiffDateDiff(Var,Var1,Var2)Var: 日期或时间间隔因子日期或时间间隔因子Var1: 第一个日期或时间第一个日期或时间 Var2: 第二个日期或时间,应该比第二个日期或时间,应该比Var1晚计算两个晚计算两个日期或时间的间隔日期或时间的间隔DateAddDatcAdd(Var4,Var5,Var6) Var4: 日期或时间间隔因子日期或时间间隔因子Var5: 日期或时间间隔倍数日期或时间间隔倍数Var6: 日期或时间的基准对两个日期或时间作加法日期或时间的基准对两个日期或时间作加法 FormatDateTimeFormateDateTime(Date,vbShortDate)FormateDateTime(Date,vbLongDate)FormateDateTime(Time,vbShortTime) FormateDateTime(Time,vbLongTime)显示短日期格显示短日期格式式显示长日期格式显示长日期格式显示短时间格式显示短时间格式显示长时间格式显示长时间格式表表9-7日期或时间间隔因子日期或时间间隔因子间隔因子间隔因子YyyyMDWwHS说明说明 年月日星期小时秒年月日星期小时秒例例9.12日期或时间间隔因子的用法。日期或时间间隔因子的用法。DateDiff(d,Date(),9102002) 返回距离返回距离2002年年9月月10日日50周年校庆还有几天?周年校庆还有几天?DateAdd(“ww”,2,Date() 返回两个星期后的返回两个星期后的今天是几号?今天是几号?例例9.13日期和时间函数的应用。日期和时间函数的应用。程序代码如下:程序代码如下:日期和时间函数应用实例日期和时间函数应用实例 为回车为回车 以下以下4句为显示数组句为显示数组d(i)的内容的内容程序运行结果如图程序运行结果如图9-8所示。所示。图图9-8日期和时间应用实例日期和时间应用实例5. 检验函数检验函数在登录某些网站的聊天室、在登录某些网站的聊天室、BBS论坛时,一般网站都论坛时,一般网站都会要求用户先注册,填写诸如用名、密码等信息。这会要求用户先注册,填写诸如用名、密码等信息。这些信息会作为字符串读入到些信息会作为字符串读入到ASP程序中,而且在多数程序中,而且在多数情况下,为了预防某些访问者填写无用或非法信息,情况下,为了预防某些访问者填写无用或非法信息,ASP程序必须对用户填写的内容进行检验,如某些必程序必须对用户填写的内容进行检验,如某些必填项是否填写了,输入项的格式是否正确等。此时,填项是否填写了,输入项的格式是否正确等。此时,就会用到检验函数,常用的检验函数如表就会用到检验函数,常用的检验函数如表9-8所示。所示。检验函数常常会和条件语句结合起来应用,应用实例检验函数常常会和条件语句结合起来应用,应用实例在在9.3.8中再作叙述。中再作叙述。函数功能函数功能VarType(Variant)检查变量检查变量Variant的值,函的值,函数值为该变量的数据类型数值为该变量的数据类型IsEmpty( Variant) 检查变量检查变量Variant的值,如果的值,如果Variant是是Empty,则函数值为则函数值为TruelsNull(Variant)检查变量检查变量Variant的值,如果的值,如果Variant是是Null,则函数值为则函数值为TruelsObject(Variant)检检查变量查变量Variant的值,如果的值,如果Variant是对象类型,则函是对象类型,则函数值为数值为TruelsNumeric(Variant)检查变量检查变量Variant的值,的值,如果如果Variant是数字类型,则函数值为是数字类型,则函数值为TrueIsArray(Variant)检查变量检查变量Variant的值,如果的值,如果Variant是数组类型,则函数值为是数组类型,则函数值为TruelsDate(Variant)检查变量检查变量Variant的值,如果的值,如果Variant是日期类型,则是日期类型,则函数值为函数值为True6. 常用数学函数常用数学函数常用数学函数常常会和条件、循环语句结合起来应用,常用数学函数常常会和条件、循环语句结合起来应用,应用实例在应用实例在9.3.9中再作叙述。中再作叙述。函数语法功能函数语法功能AbsAbs(number) 返回返回number的绝对的绝对值值SqrSqr(number)返回返回number的平方根的平方根 Intlnt(number)返回不大于返回不大于number的最大的整数的最大的整数CosCos(number)返回返回number的余弦值的余弦值SinSin(number)返回返回number的正弦值的正弦值LogLog(number) 返回返回number的对数值的对数值TanTan(number)返回返回number的正切值的正切值RndRnd()返回返回一个一个0到到1之间的随机数之间的随机数9.3.7VBScript的过程的过程过程是一组能执行指定任务且具有返回值的脚本命令。过程是一组能执行指定任务且具有返回值的脚本命令。为了使程序可重复利用和简洁明了,在脚本中可以反为了使程序可重复利用和简洁明了,在脚本中可以反复用过程的名字来调用它们。过程有两种,复用过程的名字来调用它们。过程有两种,一种是一种是Sub子程序,另一种是子程序,另一种是Function函数。与许多函数。与许多高级语言相同,两者的区别在于:高级语言相同,两者的区别在于: Sub子程序只执行子程序只执行程序而不返回值,而程序而不返回值,而Function函数可以将执行代码后函数可以将执行代码后的结果返回给请求程序。的结果返回给请求程序。子程序的命名规则与变量名的命名规则相同。过程定子程序的命名规则与变量名的命名规则相同。过程定义可出现在义可出现在 和和 标记内部且必须标记内部且必须遵循声明脚本语言的规则。用遵循声明脚本语言的规则。用 HTML 标记标记时,必须使用两个属性来保证服务器端能够处理脚本。时,必须使用两个属性来保证服务器端能够处理脚本。使用使用 标记的语法格式如下:标记的语法格式如下: 过程的内容过程的内容这里的这里的 RUNAT=SERVER 属性通知属性通知 Web 服务器在服服务器在服务器上处理脚本。若不设置该属性,脚本将由客户端务器上处理脚本。若不设置该属性,脚本将由客户端浏览器处理。浏览器处理。LANGUAGE 属性决定此脚本块所用的属性决定此脚本块所用的脚本语言。脚本语言。除了除了和和外,服外,服务器端脚本也可以用一对务器端脚本也可以用一对括起来,括起来,Dreamweaver MX采用的是后一种方式。采用的是后一种方式。1. Sub子程序子程序Sub子程序名子程序名(参数参数1,参数,参数2,)End Sub或或Sub子程序名子程序名()End Sub其中,其中,“参数参数1,参数,参数2,”是指由调用过程传递的是指由调用过程传递的常数、变量或表达式。利用这些参数可以传递数据。常数、变量或表达式。利用这些参数可以传递数据。如果如果Sub过程无任何参数,则过程无任何参数,则Sub语句必须使用空括语句必须使用空括号。号。Sub过程的调用有两种方式。过程的调用有两种方式。使用使用Call语句:语句:Call子程序名子程序名(参数参数1,参数,参数2,)不使用不使用Call语句:语句:子程序名子程序名 参数参数1,参数,参数2,例例9.14显示欢迎某用户光临电子商务网站的信息显示欢迎某用户光临电子商务网站的信息,并并显示访问的日期和时间,其编程说明如下。显示访问的日期和时间,其编程说明如下。程序中的程序中的User_name是实际参数,而子程序中的是实际参数,而子程序中的name是形式参数,实际参数和形式参数可以同名,是形式参数,实际参数和形式参数可以同名,也可以不同名。程序中的也可以不同名。程序中的User_name是实际参数已经是实际参数已经作了声明,子程序中的形式参数作了声明,子程序中的形式参数name不能再作声明。不能再作声明。子程序中用到的子程序中用到的Response.Write char3语句是输出变语句是输出变量的值。量的值。其程序代码如下:其程序代码如下:Sub子程序应用实例子程序应用实例 显示显示Output的值的值程序运行结果如图程序运行结果如图9-9所示。所示。图图9-9Sub子程序运行结果子程序运行结果2. Function函数函数Function函数的语法格式如下:函数的语法格式如下:Function 函数名(参数函数名(参数1,参数,参数2,)End Function 或或Function 函数名()函数名()End FunctionFunction函数中的函数中的“参数参数1,参数,参数2,”是指由调用是指由调用过程传递的常数、变量或表达式。若过程传递的常数、变量或表达式。若Function函数无函数无任何参数,则任何参数,则Function函数必须使用空括号。与函数必须使用空括号。与Sub子程序不同的是,子程序不同的是,Function函数通过函数名返回一个函数通过函数名返回一个值,该值是在过程的语句中赋值给函数名的,值,该值是在过程的语句中赋值给函数名的,Function函数返回值的数据类型是函数返回值的数据类型是Variant。Function过程调用方式是直接引用函数名,实现函数过程调用方式是直接引用函数名,实现函数的调用,而且函数名必须用在变量赋值语句的右边或的调用,而且函数名必须用在变量赋值语句的右边或表达式中。表达式中。例例9.15已知三角形三条边已知三角形三条边a、b、c,求三角形面积,求三角形面积,其编程说明如下。其编程说明如下。本例题是用海伦公式求三角形面积。本例题是用海伦公式求三角形面积。Function过程中过程中的的a、b、c为形式参数,其值由实际参数给出,在过为形式参数,其值由实际参数给出,在过程中不能再定义。过程中的程中不能再定义。过程中的s1是局部变量,可声明后是局部变量,可声明后使用。因为使用。因为VBScript对变量可不声明就使用,故局部对变量可不声明就使用,故局部变量变量s1不声明程序也能调试通过。不声明程序也能调试通过。程序代码如下:程序代码如下:Function函数应用实例函数应用实例一个网站必须有对用户输入的信息进行判断的程序,一个网站必须有对用户输入的信息进行判断的程序,如用户注册登录时,判断用户填写的信息是否齐全、如用户注册登录时,判断用户填写的信息是否齐全、密码是否正确等,此时就需要用条件语句来完成判别密码是否正确等,此时就需要用条件语句来完成判别工作。工作。在在VBScript中的条件控制语句有中的条件控制语句有4种形式。种形式。9.3.8 VBScript的条件语句的条件语句1. IfThenEnd If语句语句语法格式:语法格式: If条件语句条件语句 Then 语句组语句组End If功能:功能: 若条件语句为若条件语句为True,则执行下面的语句,否则执行下面的语句,否则跳出该条件语句。则跳出该条件语句。2. IfThenElseEnd If语句语句语法格式:语法格式: If条件语句条件语句 Then 语句组语句组1Else语句组语句组2End If功能:功能: 若条件语句为若条件语句为True,则执行下面的语句组则执行下面的语句组1,否则执行语句组否则执行语句组2。3. IfThenElse语句嵌套使用语句嵌套使用语法格式:语法格式: If条件语句条件语句1 Then 语句组语句组1Else If 条件语句条件语句2 Then语句组语句组2Else语句组语句组 n+1End If功能:功能: 若条件语句若条件语句1为为True,则执行下面的语句组则执行下面的语句组1,然后跳出,然后跳出If语句;语句; 否则,若条件语句组否则,若条件语句组2为为True,则执行下面的语句则执行下面的语句2,然后跳出,然后跳出If语句;语句; ; 若条若条件都不符合,执行语句组件都不符合,执行语句组n+1。4. Select Case结构结构Select Case结构提供了结构提供了IfThenElse If结构的一个结构的一个变通形式,可以从多个语句块中选择执行其中的一个。变通形式,可以从多个语句块中选择执行其中的一个。Select Case语句提供的功能与语句提供的功能与IfThenElse 语句类语句类似,但是可以使代码更加简练易读。似,但是可以使代码更加简练易读。语法格式:语法格式: Select Case 表达式表达式Case 结果结果1语句语句1Case 结果结果2语句语句2Case 结果结果i语句语句iCase 结果结果n语句语句nCase Else语句语句n+1End Select功能:功能: 先对表达式进行运算,这个运算可以是数学先对表达式进行运算,这个运算可以是数学运算或字符串运算。然后将运算结果依次与结果运算或字符串运算。然后将运算结果依次与结果1到到结果结果n比较,当找到与计算结果相等的结果比较,当找到与计算结果相等的结果i时就执行时就执行语句语句i,执行完毕就跳出执行完毕就跳出Select Case判别语句。当运判别语句。当运算结果与所有的结果都不相等时,就执行算结果与所有的结果都不相等时,就执行Case Else后面的语句后面的语句n+1,然后跳出然后跳出Select Case判别语句。判别语句。例例9.16求分段函数值求分段函数值Y=2X+15,X502X-19,X50程序代码如下:程序代码如下:求分段函数的应用实例求分段函数的应用实例=50 Theny=2*x+15 Response.Write 当当X=&CStr(x)&时,函数值时,函数值Y=&CStr(y)Elsey=2*x-19Response.Write 当当X=&CStr(x)&时,函数值时,函数值Y=&CStr(y)End If%VBScript的循环语句常用于重复执行一组语句,例如,的循环语句常用于重复执行一组语句,例如,求累加或阶乘,或重复从数据库中一次读出或写入多求累加或阶乘,或重复从数据库中一次读出或写入多条记录。条记录。VBScript中的循环语句有中的循环语句有4种常见的形式。种常见的形式。1. ForNext循环语句循环语句ForNext循环语句是一种强制型循环语句,其语法循环语句是一种强制型循环语句,其语法格式与功能如下所述。格式与功能如下所述。9.3.9 VBScript的循环语句的循环语句语法格式:语法格式: For 循环变量循环变量 = 初值初值To 循环终值循环终值Step 步长步长语句组语句组Next功能:功能: 循环执行的次数由循环变量、循环终值和步循环执行的次数由循环变量、循环终值和步长决定,循环变量在循环体中增加或减少,每次执行长决定,循环变量在循环体中增加或减少,每次执行循环体中的语句后,循环变量的值便与循环终值比较,循环体中的语句后,循环变量的值便与循环终值比较,当循环变量的值大于或小于循环终值便退出循环,否当循环变量的值大于或小于循环终值便退出循环,否则继续执行循环体中的语句。则继续执行循环体中的语句。Step步长是可选参数,步长可以为正、负、整数和小步长是可选参数,步长可以为正、负、整数和小数,缺省时步长为数,缺省时步长为1。例例9.17产生产生10个随机数,取整后判别其奇偶性,用个随机数,取整后判别其奇偶性,用exa9.asp为名保存文件。为名保存文件。程序代码如下:程序代码如下:判别随机数的奇偶性的应用实例判别随机数的奇偶性的应用实例 设置背景颜色设置背景颜色2. DoLoop循环语句循环语句DoLoop循环语句是一种条件型循环语句,当(或循环语句是一种条件型循环语句,当(或直到)条件为直到)条件为True之前重复执行循环语句组。之前重复执行循环语句组。语法格式语法格式1: Do While 条件条件1执行语句组执行语句组Loop功能:功能: 这是条件入口型循环,当条件这是条件入口型循环,当条件1为为 True时,进时,进入循环执行语句,然后执行入循环执行语句,然后执行Loop语句转到循环入口语句转到循环入口判别条件;判别条件; 当条件当条件1为为 False时,跳出循环。时,跳出循环。语法格式语法格式2: Do 执行语句组执行语句组 Loop While 条件条件2功能:功能: 这是条件出口型循环,先是无条件地进入循这是条件出口型循环,先是无条件地进入循环中执行一次之后,再判别条件环中执行一次之后,再判别条件2是否为是否为True,如果如果为为True,则进入循环执行语句,否则跳出循环。则进入循环执行语句,否则跳出循环。语法格式语法格式3: Do Until 条件条件3执行语句组执行语句组Loop功能:功能: 这也是条件入口型循环,重复执行循环执行这也是条件入口型循环,重复执行循环执行语句,直到条件语句,直到条件3为为True时跳出循环。时跳出循环。语法格式语法格式4: Do 执行语句组执行语句组 Loop Until 条件条件4功能:功能: 这也是条件出口型循环,重复执行循环执行这也是条件出口型循环,重复执行循环执行语句,直到条件语句,直到条件4为为True时跳出循环。时跳出循环。3. WhileWend循环语句循环语句WhileWend循环语句是另一种形式的循环语句,其循环语句是另一种形式的循环语句,其功能与功能与DoLoop语句的功能基本相似。语句的功能基本相似。语法格式:语法格式: While 条件条件执行语句组执行语句组Wend功能:功能: 当条件为当条件为True时,循环体中的语句才会被执时,循环体中的语句才会被执行,直到条件为行,直到条件为False时,跳出循环。时,跳出循环。例例9.18 求求0到到100之间奇数之和。之间奇数之和。第一种循环结构的程序代码如下:第一种循环结构的程序代码如下:求求0到到100之间奇数之和的应用实例一之间奇数之和的应用实例一 %Dim x,yy=0For x=1 To 100 将步长设为将步长设为2,可不用条件语句,可不用条件语句If Int(x/2)x/2 Then y=y+x End IfNextResponse.Write 0到到100之间奇数之和等于之间奇数之和等于&CStr(y)%第第2种循环结构的程序代码如下:种循环结构的程序代码如下:求求0到到100之间奇数之和的应用实例二之间奇数之和的应用实例二%Dim x,yx=1y=0Do While x这道题还可以用这道题还可以用DoLoop循环语句的其他语法格式。循环语句的其他语法格式。第第3种循环结构的程序代码如下:种循环结构的程序代码如下:求求0到到100之间奇数之和的应用实例三之间奇数之和的应用实例三%Dim x,yx=1y=0While x例例9.19求求s=1! + 2! + 3! + + 10!以下给出这个例子的以下给出这个例子的2种解法,仔细体会双重循环结种解法,仔细体会双重循环结构的用法。构的用法。第第1种解法的程序代码如下:种解法的程序代码如下:求阶乘和累加的循环应用实例一求阶乘和累加的循环应用实例一 第第2种解法的程序代码如下:种解法的程序代码如下:求阶乘和累加的循环应用实例二求阶乘和累加的循环应用实例二 4. For EachInNext循环语句循环语句这种循环方式比较特别,假如有一个集合或数组,这这种循环方式比较特别,假如有一个集合或数组,这个循环就对集合或数组中的每一个元素执行一次循环个循环就对集合或数组中的每一个元素执行一次循环体中的语句,这种功能在实际应用中非常有用。体中的语句,这种功能在实际应用中非常有用。语法格式:语法格式: For Each 元素元素 In 集合或数组名集合或数组名语句组语句组Next功能:功能: 如果集合或数组中至少有一个元素,就会进如果集合或数组中至少有一个元素,就会进入入 For Each循环体中执行语句。一旦进入循环,便循环体中执行语句。一旦进入循环,便首先对集合或数组中第一个元素执行循环中的所有语首先对集合或数组中第一个元素执行循环中的所有语句。只要集合或数组中还有其他的元素,就会对每个句。只要集合或数组中还有其他的元素,就会对每个元素执行循环体中的语句。当集合或数组中没有其他元素执行循环体中的语句。当集合或数组中没有其他元素时退出循环语句,执行下面的语句。元素时退出循环语句,执行下面的语句。例例9.20累加数组中的数,然后输出结果。累加数组中的数,然后输出结果。程序代码如下:程序代码如下:循环语句应用实例循环语句应用实例上述程序代码中的数组如果是一个变长度数组,不管上述程序代码中的数组如果是一个变长度数组,不管数组中有多少个元素,都不会影响循环语句执行,这数组中有多少个元素,都不会影响循环语句执行,这种循环语句给编程带来方便,可以提高程序的通用性。种循环语句给编程带来方便,可以提高程序的通用性。上述程序累加结果是上述程序累加结果是106。5. 强行退出循环语句强行退出循环语句在一般情况下,都是根据条件判断推出循环,若根据在一般情况下,都是根据条件判断推出循环,若根据需要要强行退出循环体,在需要要强行退出循环体,在ForNext循环结构中可循环结构中可用语句用语句Exit For来完成此项功能,在来完成此项功能,在DoLoop循环结循环结构中可用语句构中可用语句Exit Do来完成此项功能。来完成此项功能。例例9.2110000 Then 若若Sum大于大于10000,则强行退出,则强行退出循环循环Exit ForEnd IfNext%如前几节所述,如前几节所述,Web应用程序的工作流程中最关键的应用程序的工作流程中最关键的部件之一就是应用服务器。部件之一就是应用服务器。Dreamweaver MX支持所支持所有最新的应用服务器技术,支持用直接手写或利用可有最新的应用服务器技术,支持用直接手写或利用可视化对象和行为来快速开发数据库驱动的动态视化对象和行为来快速开发数据库驱动的动态Web应应用程序。用程序。Dreamweaver的服务器代码库支持所有主流的服务器代码库支持所有主流的应用服务器技术,包括的应用服务器技术,包括ColdFusion、ASP、ASP.NET、JSP和和PHP,使得在一个开发环境上开发使得在一个开发环境上开发集成多种类型的站点和后端技术成为可能。集成多种类型的站点和后端技术成为可能。表表9-10列出了列出了Dreamweaver支持的应用服务器技术和支持的应用服务器技术和相应的主流应用服务器产品。相应的主流应用服务器产品。9.4 ASP应用服务器技术基础应用服务器技术基础服务器端技术服务器端技术 应用服务器产品应用服务器产品 ColdFusion Macromedia ColdFusion MX ASP.NET Microsoft IIS 5上安装上安装 .NET Framework 包包ASP Microsoft IIS or PWS、Sun ONE ASP(原原Sun Chili!Soft ASP)JSP Macromedia JRun、IBM WebSphere、Apache Tomcat、BEA WebLogicPHP PHP server 本书主要以本书主要以ASP为主,讲解为主,讲解Dreamweaver MX下的下的Web应用程序开发,应用程序开发,ASP的使用者众多,的使用者众多,Dreamweaver对对ASP的支持比较成熟,用它开发简单的支持比较成熟,用它开发简单的的ASP Web应用程序几乎不用编程。应用程序几乎不用编程。Microsoft Active Server Pages(ASP)是一种基于脚是一种基于脚本语言的应用服务器技术。网页设计者只要将一些简本语言的应用服务器技术。网页设计者只要将一些简单的指令嵌入到单的指令嵌入到 HTML 文件中,就能实现动态网页文件中,就能实现动态网页的功能,而不必再用完整的编程语言或者单独编译程的功能,而不必再用完整的编程语言或者单独编译程序来创建交互式网页。对更复杂的任务可以便捷地使序来创建交互式网页。对更复杂的任务可以便捷地使用用ActiveX组件来执行,比如连接数据库以存储和检组件来执行,比如连接数据库以存储和检索信息等。索信息等。只要安装了符合只要安装了符合ActiveX脚本标准的相应脚本引擎,脚本标准的相应脚本引擎,就可以在就可以在ASP页中使用任何一种脚本语言。页中使用任何一种脚本语言。ASP带有带有Microsoft Visual Basic Scripting Edition(VBScript)和和Microsoft JScript的脚本引擎。的脚本引擎。9.4.1 ASP介绍介绍PERL、REXX和和Python的的ActiveX脚本引擎可以从第脚本引擎可以从第三方开发商处获得。三方开发商处获得。基于基于ASP技术的页面,以技术的页面,以.asp为文件名后缀。为文件名后缀。ASP提供了内建对象,这些对象使用户更容易收集通提供了内建对象,这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户过浏览器请求发送的信息、响应浏览器以及存储用户信息(如用户首选项),以下简要说明一些常用的信息(如用户首选项),以下简要说明一些常用的ASP对象。对象。Microsoft Active Server Pages(ASP)是是一种基于脚本语言的应用服务器技术。网页设计者只一种基于脚本语言的应用服务器技术。网页设计者只要将一些简单的指令嵌入到要将一些简单的指令嵌入到 HTML 文件中,就能实文件中,就能实现动态网页的功能,而不必再用完整的编程语言或者现动态网页的功能,而不必再用完整的编程语言或者单独编译程序来创建交互式网页。对更复杂的任务可单独编译程序来创建交互式网页。对更复杂的任务可以便捷地使用以便捷地使用ActiveX组件来执行,比如连接数据库组件来执行,比如连接数据库以存储和检索信息等。以存储和检索信息等。只要安装了符合只要安装了符合ActiveX脚本标准的相应脚本引擎,脚本标准的相应脚本引擎,就可以在就可以在ASP页中使用任何一种脚本语言。页中使用任何一种脚本语言。ASP带有带有Microsoft Visual Basic Scripting Edition(VBScript)和和Microsoft JScript的脚本引擎。的脚本引擎。PERL、REXX和和Python的的ActiveX脚本引擎可以从第脚本引擎可以从第三方开发商处获得。三方开发商处获得。基于基于ASP技术的页面,以技术的页面,以.asp为文件名后缀。为文件名后缀。ASP提供了内建对象,这些对象使用户更容易收集通提供了内建对象,这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户过浏览器请求发送的信息、响应浏览器以及存储用户信息(如用户首选项),以下简要说明一些常用的信息(如用户首选项),以下简要说明一些常用的ASP对象。对象。在网站应用过程中,服务器端和客户端交流信息是最在网站应用过程中,服务器端和客户端交流信息是最常见的。事实上,如留言板、常见的。事实上,如留言板、BBS论坛、网上商店等论坛、网上商店等都经常需要从客户端获得用户输入的信息都经常需要从客户端获得用户输入的信息(比如用户比如用户的注册、客户的订单等的注册、客户的订单等)。客户端通过浏览器在表单。客户端通过浏览器在表单里输入信息后,怎样才能传到服务器的数据库里保存里输入信息后,怎样才能传到服务器的数据库里保存呢呢?过去采用过去采用CGI处理,很麻烦。而处理,很麻烦。而ASP提供了一个提供了一个非常简单好用的内部对象非常简单好用的内部对象Request,利用这个对象就利用这个对象就可以使服务器轻松地取得客户端的信息。可以使服务器轻松地取得客户端的信息。9.4.2 Request对象对象使用使用Request对象可以访问任何用对象可以访问任何用HTTP请求传递的请求传递的信息,典型的信息是从信息,典型的信息是从HTML表单中用表单中用POST 方法或方法或GET方法传递的。方法传递的。Request对象还能够访问发送给服对象还能够访问发送给服务器的二进制数据,如上载的文件。务器的二进制数据,如上载的文件。用用Request对象可以获取对象可以获取5类客户端的信息,即类客户端的信息,即QueryString、Form、Cookies、Server Variables、ClientCertificate。其中主要的是,其中主要的是,Form获取获取HTTP请求中以请求中以POST方式提交的表单元素的值;方式提交的表单元素的值; QueryString获取获取HTTP中以中以GET方式提交的表单字方式提交的表单字符串中变量的值;符串中变量的值; Server Variables获取预定的环境获取预定的环境变量的值。在本节中介绍最常用的获取方法:变量的值。在本节中介绍最常用的获取方法: QueryString获取方法和获取方法和Form获取方法。获取方法。1. Form获取方法获取方法语法格式:语法格式: Request.获取方法(参数)获取方法(参数)例例9.22在登录到一个商务网站时,经常要求填写用户名、密在登录到一个商务网站时,经常要求填写用户名、密码等一些信息,这其实就是用码等一些信息,这其实就是用HTML提供的提供的FORM表单实现的。填写完毕后,单击【确定】或【提交】表单实现的。填写完毕后,单击【确定】或【提交】按钮就可以将输入的信息传送到服务器上,然后可以按钮就可以将输入的信息传送到服务器上,然后可以调用相应的程序来处理那些信息。调用相应的程序来处理那些信息。在在HTML中完整的中完整的FORM语法格式如下:语法格式如下: form元素元素FORM的语法格式虽然很复杂,但最常用的也就是的语法格式虽然很复杂,但最常用的也就是action、method和和name。在在ASP中获取中获取FORM表单表单中的信息就是用中的信息就是用Form获取方法来实现的。获取方法来实现的。在用在用Form获取方法获取信息时,获取方法获取信息时,method方法一定要方法一定要用用post,也可以不写,不写时则默认为也可以不写,不写时则默认为post。FORM表单和表单和Form获取方法的区别在于,前者是获取方法的区别在于,前者是HTML提提供的表单,并不属于供的表单,并不属于ASP,后者是特指后者是特指ASP的的Request对象获取信息的一种方法。两者的关系就是对象获取信息的一种方法。两者的关系就是ASP用用Form获取方法来获取获取方法来获取FORM表单中的信息。表单中的信息。2. QueryString获取方法获取方法从一个网页向另一个网页传递信息时,可以利用从一个网页向另一个网页传递信息时,可以利用Form获取方法获取表单的信息,还可以利用获取方法获取表单的信息,还可以利用QueryString获取方法取回标识在获取方法取回标识在URL后面所有返回后面所有返回的变量及其值。的变量及其值。例例9.23当客户端送出如下请求时,当客户端送出如下请求时,Request.QueryString将会得到将会得到name和和gender两个变两个变量的值。量的值。URL用用?分隔网址和信息串,用分隔网址和信息串,用&连接各参数。其中连接各参数。其中name和和gender是表单元素或变量的名字。是表单元素或变量的名字。在在Dreamweaver MX中制作输出信息的静态网页已经中制作输出信息的静态网页已经是很容易的事了,而是很容易的事了,而ASP生成动态网页,要根据客户生成动态网页,要根据客户端的不同请求输出相应的信息,这就要靠端的不同请求输出相应的信息,这就要靠Response对对象来完成向客户端输出信息的功能。在前面象来完成向客户端输出信息的功能。在前面9.3节中节中已经介绍过用已经介绍过用Response对象输出动态网页的信息。下对象输出动态网页的信息。下面再对面再对Response对象作些解释。对象作些解释。ASP的内建对象的内建对象Response控制给客户端送出信息的方控制给客户端送出信息的方法有下面法有下面3种:种: Write直接送出信息给客户端;直接送出信息给客户端;Redirect引导客户端至另一个引导客户端至另一个URL位置;位置;Cookies设置设置Cookies值。值。9.4.3 Response对象对象可以使用的属性有两个:可以使用的属性有两个: Buffer设置为缓冲信息;设置为缓冲信息;ContentType控制送出的文件类型。控制送出的文件类型。在本节中只介绍最常用的在本节中只介绍最常用的Write和和Redirect方法。方法。在在Response对象中,对象中,Write方法可以说是最普遍、最方法可以说是最普遍、最常用的方法,它可以把信息从服务器端直接送到客户常用的方法,它可以把信息从服务器端直接送到客户端,实际上就是在客户端动态显示信息。端,实际上就是在客户端动态显示信息。Response对象的输出显示方式如下:对象的输出显示方式如下: Response.Write 变量数据或字符串;变量数据或字符串;Response.Redirect 网址变量或字符串。网址变量或字符串。例例9.24上面程序中的上面程序中的user_name是一个变量,表示用户名。是一个变量,表示用户名。前面一节中的例子里还用到类似于前面一节中的例子里还用到类似于的输出信息用法,其实这是的输出信息用法,其实这是Write方法的省略用法。方法的省略用法。例如:例如: 在浏览网站时,当用户单击某超链接时可以从一个页在浏览网站时,当用户单击某超链接时可以从一个页面转到另一个页面,有时也希望能自动引导用户到另面转到另一个页面,有时也希望能自动引导用户到另一个页面,例如进行网上考试时,当考试结束时间到一个页面,例如进行网上考试时,当考试结束时间到了,自动引导用户到另一个页面。了,自动引导用户到另一个页面。例例9.25要点提示要点提示:Response.Redirect的用法较简单,一般情况下,的用法较简单,一般情况下,Response.Redirect语句应该放在语句应该放在ASP文件的开头。若文件的开头。若希望将该语句放在希望将该语句放在ASP文件的任意地方使用,就必须文件的任意地方使用,就必须在在ASP文件的开头加上文件的开头加上这句话。这句话。使用使用 Application对象可以使所有用户一起使用该对对象可以使所有用户一起使用该对象,达到共享信息的目的。最典型的是聊天室,大家象,达到共享信息的目的。最典型的是聊天室,大家的发言都存放到一个的发言都存放到一个Application对象中,彼此就可以对象中,彼此就可以看到发言的内容了。也就是说,如果用户看到发言的内容了。也就是说,如果用户A和用户和用户B同时访问给定的同时访问给定的Web应用,他们访问到的应用,他们访问到的Application对象的内容完全一致。对象的内容完全一致。Application对象没有有效期限对象没有有效期限制,直到应用程序停止前它是一直存在的。制,直到应用程序停止前它是一直存在的。9.4.4 Application对象对象基于基于ASP的应用程序同所有的的应用程序同所有的.asp文件一样,是在一文件一样,是在一个虚拟目录及其子目录中定义的。由于多个用户可以个虚拟目录及其子目录中定义的。由于多个用户可以共享共享Application对象,所以必须要用对象,所以必须要用Lock和和Unlock方法来确保多个用户无法同时改变某一属性。方法来确保多个用户无法同时改变某一属性。如果设计者不熟悉编程,可以把如果设计者不熟悉编程,可以把Application对象看作对象看作一个应用程序的数据共享的一个级别,在一个应用程序的数据共享的一个级别,在Application级别定义的数据,对整个应用程序中的所有页面有效级别定义的数据,对整个应用程序中的所有页面有效且对所有访问该应用的用户都有效。且对所有访问该应用的用户都有效。ASP的内建对象的内建对象Application对象也有它的方法和事件。对象也有它的方法和事件。Application对象的方法有两个:对象的方法有两个: Lock锁定锁定Application对象;对象;Unlock解除锁定的解除锁定的Application对象。对象。Application对象事件有两个对象事件有两个:Application_OnStartApplication “开始前开始前”就就调用该程序;调用该程序;Application_OnEndApplication “结束后结束后”才才调用该程序。调用该程序。Application对象的语法格式如下:对象的语法格式如下: Application(Application名字名字)=变量或字符串信息变量或字符串信息例例9.26在在WWW页面中,利用超链接可以很方便地从一个页页面中,利用超链接可以很方便地从一个页面转到另一个页面。但是,这样会带来一个问题:面转到另一个页面。但是,这样会带来一个问题: 怎样记载客户的信息呢怎样记载客户的信息呢?如果客户在首页输入了自己如果客户在首页输入了自己的用户名和密码,在其他页面还需要使用该用户名,的用户名和密码,在其他页面还需要使用该用户名,那么用什么记住用户名信息呢那么用什么记住用户名信息呢?Session对象可以存储每一位用户客户端的信息。当对象可以存储每一位用户客户端的信息。当用户在网页与网页之间跳转时,存储在用户在网页与网页之间跳转时,存储在Session对象对象中的信息一般不会丢失。中的信息一般不会丢失。ASP服务器系默认的信息保服务器系默认的信息保留时间一般为留时间一般为20分钟,如果客户端超出分钟,如果客户端超出20分钟不再向分钟不再向服务器提出请求或刷新服务器提出请求或刷新Web页面,该页面,该Session信息就会信息就会自动结束。自动结束。9.4.5 Session对象对象但是与但是与Application对象存储的信息不同,对象存储的信息不同,Session对对象存储的信息只对单个用户有效,与用户一一对应。象存储的信息只对单个用户有效,与用户一一对应。用户用户A的的Session对象和用户对象和用户B的的Session对象不一样,对象不一样,因此存储的信息也不同。因此存储的信息也不同。当用户请求来自应用程序的当用户请求来自应用程序的Web页时,如果该用户还页时,如果该用户还没有会话,则没有会话,则Web服务器将自动创建一个服务器将自动创建一个Session对象,对象,Session对象有它的有效期,当会话过期或被放弃后,对象有它的有效期,当会话过期或被放弃后,服务器将终止该会话。在服务器将终止该会话。在Web服务器中可以设置会话服务器中可以设置会话过期的时限,没有收到来自用户的请求超过一定时限过期的时限,没有收到来自用户的请求超过一定时限后,服务器将终止与该用户的会话,后,服务器将终止与该用户的会话,Session对象中对象中的所有变量随之释放。的所有变量随之释放。Session对象也有它的属性、方法事件和数据集合。对象也有它的属性、方法事件和数据集合。Session的属性有两个的属性有两个:SessionID存储用户存储用户的的SessionID;TimeoutSession的有效期长度。的有效期长度。Session的方法只有一个:的方法只有一个: Abandon清除清除Session对象。对象。Session事件有两个事件有两个:Session_OnStartSession “开始前开始前”就调用该程就调用该程序;序;Session_OnEndSession “结束后结束后”才调用该程才调用该程序。序。在本节中主要介绍利用在本节中主要介绍利用Session存储信息和存储信息和Timeout、Abandon的使用。的使用。Session对象的语法格式如下:对象的语法格式如下: Session(Session名字名字)=变量或字符串信息变量或字符串信息例例9.27Session的用法:的用法: 在在input.asp中给中给Session赋值,赋值,当单击超链接当单击超链接“显示欢迎信息显示欢迎信息”转到转到success.asp,并并显示显示Session中的信息。中的信息。input.asp的代码如下:的代码如下: Session用法举例用法举例Dim Use_name,sex,ageUser_ name=卓群卓群 字符串直接赋值给变量字符串直接赋值给变量Sex=男男Session( name)=User_name 给给Session赋值赋值Seasion(age)=ageResponse.Write 显示欢迎信息显示欢迎信息 % success.asp的代码如下:的代码如下: 显示显示Session中的信息中的信息 注意:注意: 会话状态仅在支持会话状态仅在支持cookie的浏览器中保留。在的浏览器中保留。在以后的章节中介绍以后的章节中介绍Session对象的应用。对象的应用。使用使用ASP Request对象,可以创建一个简单且功能强对象,可以创建一个简单且功能强大的脚本来收集和处理大的脚本来收集和处理HTML表单数据。表单数据。HTML表表单是收集单是收集Web信息最常用的方法,是在信息最常用的方法,是在Web页上提供页上提供用户界面控件的特殊的用户界面控件的特殊的HTML标记的排列。文本框、标记的排列。文本框、按钮和复选框都是典型的控件,按钮和复选框都是典型的控件, 这些控件使用户和这些控件使用户和Web页实现交互,并且将信息提交给页实现交互,并且将信息提交给Web服务器。服务器。图图9-10是表单的一个简单实例。在表单中,要求用户是表单的一个简单实例。在表单中,要求用户输入姓名、性别,按输入姓名、性别,按Submit按钮可以将这些信息提按钮可以将这些信息提交给交给Web服务器。服务器。9.4.6 表单传递数据表单传递数据图图9-10表单的示意图表单的示意图图图9-11表单的【属性】面板表单的【属性】面板在图在图9-11中显示中显示Dreamweaver MX对表单的属性设置。对表单的属性设置。向向Web服务器提交信息时,用户的服务器提交信息时,用户的Web浏览器请求用浏览器请求用 【动作】文本框所指定的【动作】文本框所指定的.asp文件处理提交的信息文件处理提交的信息(该属性可以填入一个完整的(该属性可以填入一个完整的URL指向指向.asp文件)。文件)。.asp文件包含了处理表格值(如显示结果表或从数据文件包含了处理表格值(如显示结果表或从数据库查询信息)的脚本。库查询信息)的脚本。一个一个HTML表单可以将信息传给另一个表单可以将信息传给另一个.asp文件,也文件,也可以将信息传给自身,即包含该表单的可以将信息传给自身,即包含该表单的.asp文件自身。文件自身。这种情况下,在【动作】文本框中什么都不填。这一这种情况下,在【动作】文本框中什么都不填。这一过程经常用于验证表单输入信息的合法性。过程经常用于验证表单输入信息的合法性。那么如何在接受信息的那么如何在接受信息的.asp文件中获得表单的输入呢文件中获得表单的输入呢?这取决于表单的提交方式。客户的信息通过表单的输这取决于表单的提交方式。客户的信息通过表单的输入标签读入浏览器后,可通过传输介质传送到服务器入标签读入浏览器后,可通过传输介质传送到服务器中。这一过程称作信息提交或上传。信息提交的方式中。这一过程称作信息提交或上传。信息提交的方式有两种,一种是将信息置于【动作】文本框中引用的有两种,一种是将信息置于【动作】文本框中引用的网址后面,形成一个特殊格式的网址后面,形成一个特殊格式的URL一起提交给服一起提交给服务器,这种方式称为务器,这种方式称为GET方式;方式; 另一种是等待服务另一种是等待服务器自己来取,这种方式称为器自己来取,这种方式称为POST方式。方式。在图在图9-11所示的表单【属性】面板中,【方法】属性所示的表单【属性】面板中,【方法】属性选择了选择了POST方式。方式。POST方式可以上传较大的数据方式可以上传较大的数据量;量; 而而GET上传的数据量较小,仅能传送上传的数据量较小,仅能传送2KB左右左右(受到(受到URL长度的限制)的数据量。因此,长度的限制)的数据量。因此,Dreamweaver MX默认选择的提交方式是默认选择的提交方式是POST方式。方式。上一节中提到的上一节中提到的ASP Request 对象提供了两种获取方对象提供了两种获取方法,分别对应两种提交方式,在很大程度上简化了抽法,分别对应两种提交方式,在很大程度上简化了抽取附加在取附加在 URL 请求上的各表单项信息的任务。请求上的各表单项信息的任务。QueryString获取方法作为跟在获取方法作为跟在GET方式请求的方式请求的 URL 的问号后面的文本传递给的问号后面的文本传递给 Web 服务器的值。通过使服务器的值。通过使用用 HTTP GET 方法或手工将表单的值添加到方法或手工将表单的值添加到 URL,表单的值可以被附加在请求的表单的值可以被附加在请求的 URL 之后。之后。例如,如果先前的表单示例使用例如,如果先前的表单示例使用 GET 方法方法 (METHOD = GET), 且用户输入且用户输入“杨过杨过”和和“男男”,那么下面,那么下面的的 URL 请求将被发送给服务器:请求将被发送给服务器: http:/www.demo.com/process.asp?name=杨过杨过&gender=男男URL用用?分隔网址和信息串,用分隔网址和信息串,用&分隔各项。其中分隔各项。其中name和和gender是表单元素的名字。是表单元素的名字。当使用当使用HTTP GET方法向方法向Web服务器传递长而复杂的服务器传递长而复杂的表格值时,将可能丢失信息。大多数的表格值时,将可能丢失信息。大多数的Web服务器倾服务器倾向于严格控制向于严格控制URL查询字符串的长度,以便用查询字符串的长度,以便用GET方法传送的冗长的表单值被截断。如果需要从表单发方法传送的冗长的表单值被截断。如果需要从表单发送大量信息到送大量信息到Web服务器,就必须使用服务器,就必须使用HTTP POST方法。此法用于在方法。此法用于在HTTP请求正文中发送表单数据,请求正文中发送表单数据,而且发送的字符的个数可以无限多。而且发送的字符的个数可以无限多。ASP Request对对象的象的Form集合用于抽取用集合用于抽取用POST方法发送的值。方法发送的值。应用服务器访问的最典型的一种外部资源就是数据库。应用服务器访问的最典型的一种外部资源就是数据库。关键的商业应用的开发必定要用到数据库的海量处理关键的商业应用的开发必定要用到数据库的海量处理数据的能力,以及事务处理的能力。数据的能力,以及事务处理的能力。所谓数据库,就是一些关于某个特定主题或目的的相所谓数据库,就是一些关于某个特定主题或目的的相关信息的集合。关信息的集合。目前最流行的是关系模型的数据库。关系模型下,数目前最流行的是关系模型的数据库。关系模型下,数据库用表来表示,表是数据库的核心。数据库中的表据库用表来表示,表是数据库的核心。数据库中的表和现实生活中的表格很像。和现实生活中的表格很像。9.5 数据库基础数据库基础SQL(Structured Query Language)即为结构化查即为结构化查询语言。询语言。SQL语言的主要功能就是同各种数据库建立语言的主要功能就是同各种数据库建立联系,进行沟通。按照联系,进行沟通。按照ANSI(美国国家标准协会)美国国家标准协会)的规定,的规定,SQL被定为关系型数据库管理系统的标准语被定为关系型数据库管理系统的标准语言。言。SQL语句可以用来执行各种各样的操作,例如更语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如绝大多数流行的关系型数据库管理系统,如Oracle、DB2、Sybase、Microsoft SQL Server、Access等都等都采用了采用了SQL语言标准。语言标准。9.5.1 SQL语言概述语言概述SQL语句的种类数目之多是惊人的。使用语句的种类数目之多是惊人的。使用SQL语言可语言可以执行下述功能:以执行下述功能: 从一个简单的表查询,到创建表从一个简单的表查询,到创建表和存储过程,到设定用户权限。但是构成和存储过程,到设定用户权限。但是构成SQL语句的语句的核心内容还是如何从数据库中插入、更新和查询数据。核心内容还是如何从数据库中插入、更新和查询数据。基于这个目的,应该了解的最重要的基于这个目的,应该了解的最重要的SQL语句如表语句如表9-11所示。所示。 这几个语句是这几个语句是SQL中语法最复杂、使用最频繁的语句。中语法最复杂、使用最频繁的语句。下面将介绍这几个下面将介绍这几个SQL语句,要开发网站的应用程序,语句,要开发网站的应用程序,这几个这几个SQL语句是必须掌握的。但是,如果读者一时语句是必须掌握的。但是,如果读者一时记不住这些语法,也没有关系,在以后的章节里会看记不住这些语法,也没有关系,在以后的章节里会看到,到,Dreamweaver MX提供的设计工具能够帮助设计提供的设计工具能够帮助设计者自动生成简单的者自动生成简单的SQL语句。语句。SELECT语句是语句是SQL提供的数据查询语句,它功能丰提供的数据查询语句,它功能丰富、使用灵活,其一般语法格式如下:富、使用灵活,其一般语法格式如下:SELECT ALL|DISTINCT,FROM,WHEREGROUP BY ,HAVING ORDER BY ASCDESC, ASCDESC9.5.2 SELECT语句语句语句的参数说明如表语句的参数说明如表9-12所示。所示。关键词说明关键词说明SELECT指明要检索的数据的列指明要检索的数据的列FROM指指明从哪明从哪(几几)个表中进行检索个表中进行检索WHERE指明返回数据必指明返回数据必须满足的标准须满足的标准GROUP BY指明返回的列数据通过某指明返回的列数据通过某些条件来形成组些条件来形成组HAVING指明返回的集合必须满足的指明返回的集合必须满足的标准标准ORDER BY指明返回的行的排序顺序指明返回的行的排序顺序例例9.28对如图对如图9-12所示的所示的publication表,请用表,请用SQL语语句分别查询该表中所有完整的记录、句分别查询该表中所有完整的记录、Name和和Price这这两个字段的记录、两个字段的记录、Price小于小于30元的记录,并将该表元的记录,并将该表中满足上述条件的记录按中满足上述条件的记录按Name字段排序。字段排序。图图9-12publication表的示意图表的示意图最简单的最简单的SELECT语句是:语句是: SELECT * FROM publication这个简单的查询结果得出的内容为这个简单的查询结果得出的内容为publication表中的表中的所有完整的记录。所有完整的记录。*代表所有的列。代表所有的列。如果只想选择书名和价格这两列,可以在如果只想选择书名和价格这两列,可以在SELECT后后指明需要的列名:指明需要的列名: SELECT Name, Price FROM publication如果想进一步缩小返回的结果范围,可以添加如果想进一步缩小返回的结果范围,可以添加WHERE子句,用返回符合子句,用返回符合WHERE后条件的记录:后条件的记录:SELECT Name, Price FROM publication WHERE Price 30.00实际使用中,实际使用中,WHERE子句可以使用多个列作为约束子句可以使用多个列作为约束内容,通过内容,通过AND、OR以实现多个约束。以实现多个约束。如果觉得返回的记录太凌乱,可以添加如果觉得返回的记录太凌乱,可以添加ORDER BY子句来对记录排序:子句来对记录排序: SELECT Name, Price FROM publication WHERE Price 30.00 ORDER BY Name这样返回的结果就按照这样返回的结果就按照Name排序了。排序了。要点提示要点提示:可以使用可以使用Dreamweaver MX中的记录集定义对话框来中的记录集定义对话框来练习和测试练习和测试SELECT语句的使用效果。语句的使用效果。语法:语法:INSERT INTO 表名表名 (列名列名1,列名列名2,列名列名n) VALUES (值值1,值值2,值值n)语句的参数说明如表语句的参数说明如表913所示。所示。表表913Insert语句的参数说明语句的参数说明关键词说明关键词说明INSERT INTO指明插入数据到哪个表,指明插入数据到哪个表,在列名序列中,列出需要指定值的列名在列名序列中,列出需要指定值的列名VALUES按照按照列名的顺序,给出相应的值列名的顺序,给出相应的值简单来说,当向数据库表格中添加新记录时,在关键简单来说,当向数据库表格中添加新记录时,在关键词词INSERT INTO后面输入所要添加的表格名称,后面输入所要添加的表格名称,9.5.3 INSERT语句语句然后在括号中列出将要添加新值的列的名称。最后,然后在括号中列出将要添加新值的列的名称。最后,在关键词在关键词VALUES的后面按照前面输入的列的顺序对的后面按照前面输入的列的顺序对应地输入所有要添加的记录值。应地输入所有要添加的记录值。以下是向以下是向publication表插入一条新纪录的例子:表插入一条新纪录的例子:INSERT INTO publication (Name, ISBNNO, PubDate, Press, Price) VALUES (新求精德语强化教新求精德语强化教程程,ISBN7560819680,199881,同济同济大学出版社大学出版社,56.00)SQL语言使用语言使用UPDATE语句更新或修改满足规定条件语句更新或修改满足规定条件的现有记录。的现有记录。UPDATE 表名表名 SET 列名列名1 = 值值1 , 列名列名2 = 值值2,列名,列名n = 值值n WHERE 表达式表达式语句的参数说明如表语句的参数说明如表9-14所示。所示。关键词说明关键词说明UPDATE指明对哪个表更新数据指明对哪个表更新数据SET列出列出需要更新的列名和值对需要更新的列名和值对WHERE指明哪些记录需要更指明哪些记录需要更新,只有满足新,只有满足WHERE条件的记录才被更新例条件的记录才被更新例9.29可可以用以下语句把名为以用以下语句把名为“新求精德语强化教程新求精德语强化教程”的书涨的书涨价价10元:元: 9.5.4 UPDATE语句语句UPDATE publication SET Price = Price + 10 WHERE Name = 新求精德语强化教程新求精德语强化教程使用使用UPDATE语句时,关键的是,要精确地设定好用语句时,关键的是,要精确地设定好用于进行判断的于进行判断的WHERE条件从句,否则会错误地改掉条件从句,否则会错误地改掉不想改的记录。不想改的记录。SQL语言使用语言使用DELETE语句删除数据库表格中的行或语句删除数据库表格中的行或记录。记录。DELETE FROM 表名表名 WHERE 条件表达式条件表达式语句的参数说明如表语句的参数说明如表9-15所示。所示。关键词说明关键词说明DELETE FROM指明从哪个表删除数据指明从哪个表删除数据WHERE指明哪些记录需要被删除,只有满足指明哪些记录需要被删除,只有满足WHERE条件的记录才被删除条件的记录才被删除9.5.5 DELETE语句语句简单来说,当需要删除某一行或某个记录时,在简单来说,当需要删除某一行或某个记录时,在DELETE FROM关键词之后输入表格名称,然后在关键词之后输入表格名称,然后在WHERE从句中设定删除记录的判断条件。从句中设定删除记录的判断条件。注意:注意: 如果用户在使用如果用户在使用DELETE语句时不设定语句时不设定WHERE从句,则表格中的所有记录将全部被删除。从句,则表格中的所有记录将全部被删除。例例9.30可以用以下语句把名为可以用以下语句把名为“新求精德语强化教程新求精德语强化教程”的书从表中删除:的书从表中删除: DELETE FROM publication WHERE Name = 新求新求精德语强化教程精德语强化教程本节将介绍适合实验用的数据库产品。由于用本节将介绍适合实验用的数据库产品。由于用Dreamweaver MX进行进行Web应用开发的过程中,使用应用开发的过程中,使用的都是标准的数据库访问接口,因此数据库之间的差的都是标准的数据库访问接口,因此数据库之间的差异对开发者来说不那么重要。本节对产品仅作简单的异对开发者来说不那么重要。本节对产品仅作简单的介绍。介绍。9.5.6 实验数据库介绍实验数据库介绍1. 桌面数据库的代表桌面数据库的代表Microsoft Access称称Access是一个桌面数据库,是因为它的目标用户是是一个桌面数据库,是因为它的目标用户是单机的个人用户或者小型的工作组,它的数据库的物单机的个人用户或者小型的工作组,它的数据库的物理存储是文件系统中的一个普通文件,数据库的访问理存储是文件系统中的一个普通文件,数据库的访问方式也局限于同一台机器,不提供基于方式也局限于同一台机器,不提供基于Client/Server方式的多用户并发访问能力。因此,方式的多用户并发访问能力。因此,Access主要用于主要用于单用户桌面环境下,和小型办公室通过文件共享方式单用户桌面环境下,和小型办公室通过文件共享方式协作。协作。当然,对于极小型的网站和极小规模的应用,对并发当然,对于极小型的网站和极小规模的应用,对并发性要求较低,对性能要求不高的环境下,性要求较低,对性能要求不高的环境下,Access可以可以用作用作Web服务器端的数据库。服务器端的数据库。对对Access熟悉的人多,容易快速上手。由于自带丰富熟悉的人多,容易快速上手。由于自带丰富的客户端界面和使用向导,用的客户端界面和使用向导,用Access建立和修改数据建立和修改数据库结构,输入和修改数据都很方便。除了不能做分布库结构,输入和修改数据都很方便。除了不能做分布式部署和性能上的局限性外,式部署和性能上的局限性外,Access具备数据库的完具备数据库的完整功能,支持标准的整功能,支持标准的SQL语言。语言。Microsoft还曾经专还曾经专门为门为Access和和VB提供过基于提供过基于Jet引擎的引擎的DAO数据访问数据访问对象,其对对象,其对Access作为桌面数据库应用工具的重视程作为桌面数据库应用工具的重视程度可见一般。用度可见一般。用Access作为作为Web应用程序开发练习中应用程序开发练习中的实验数据库,是一种不错的选择。的实验数据库,是一种不错的选择。2. Microsoft SQL ServerMicrosoft一直没有停止过占领中高端企业市场的努一直没有停止过占领中高端企业市场的努力,力,SQL Server 2000代表着下一代代表着下一代Microsoft.NET Enterprise Servers(企业分布式服务器)数据库的发企业分布式服务器)数据库的发展趋势。展趋势。SQL Server 2000是为创建可伸缩电子商务、是为创建可伸缩电子商务、在线商务和数据仓储解决方案而设计的真正意义上的在线商务和数据仓储解决方案而设计的真正意义上的关系型数据库管理与分析系统。关系型数据库管理与分析系统。SQL Server 2000提供了以提供了以Web标准为基础的扩展数标准为基础的扩展数据库编程功能。丰富的据库编程功能。丰富的XML和和Internet标准,支持使标准,支持使用内置的存储过程以用内置的存储过程以XML格式轻松存储和检索数据。格式轻松存储和检索数据。还可以使用还可以使用XML更新程序容易地插入、更新和删除更新程序容易地插入、更新和删除数据。数据。SQL Server 2000可以轻松地通过可以轻松地通过Web访问数据。可访问数据。可以使用以使用HTTP来向数据库发送查询,对数据库中存储来向数据库发送查询,对数据库中存储的文档执行全文搜索,以及通过的文档执行全文搜索,以及通过Web进行自然语言查进行自然语言查询。询。 SQL Server 2000具有强大而灵活的基于具有强大而灵活的基于Web的分析的分析功能。它的分析服务功能被扩展到了功能。它的分析服务功能被扩展到了Internet。可以可以通过通过Web浏览器来访问和控制多维数据。浏览器来访问和控制多维数据。 使用使用SQL Server 2000可以获得良好的可伸缩性和可可以获得良好的可伸缩性和可靠性。通过向上伸缩和向外扩展的能力,靠性。通过向上伸缩和向外扩展的能力,SQL Server满足了苛刻的电子商务和企业应用程序要求。满足了苛刻的电子商务和企业应用程序要求。SQL Server 2000可以向上伸缩,利用对称多处理器可以向上伸缩,利用对称多处理器(SMP)系统。系统。SQL Server Enterprise Edition最多可以最多可以使用使用32个处理器和个处理器和64 GB RAM。 通过增强的故障转移群集、日志传送和新增的备份策通过增强的故障转移群集、日志传送和新增的备份策略,略,SQL Server 2000达到了较高的可用性。达到了较高的可用性。 SQL Server已成为颇受众多客户关系管理(已成为颇受众多客户关系管理(CRM)应用程序、商务智能(应用程序、商务智能(BI)应用程序、企业资源计划应用程序、企业资源计划(ERP)应用程序以及其他在线商务应用程序厂商和应用程序以及其他在线商务应用程序厂商和客户所青睐的数据产品,这要归功于该产品在对称多客户所青睐的数据产品,这要归功于该产品在对称多处理(处理(SMP)硬件方面所具有的可伸缩性和较低的硬件方面所具有的可伸缩性和较低的数据库维护需求。数据库维护需求。SQL Server 2000不仅支持集中化不仅支持集中化数据库管理功能,而且还最大程度地实现了管理与优数据库管理功能,而且还最大程度地实现了管理与优化工作的自动化,从而减轻了有关管理人员的负担。化工作的自动化,从而减轻了有关管理人员的负担。SQL Server 2000还推出了一组复杂的新安全特性:还推出了一组复杂的新安全特性: 强大而灵活的基于角色的服务器、数据库和应用程序强大而灵活的基于角色的服务器、数据库和应用程序配置安全性;配置安全性; 集成的安全性审核工具可以跟踪集成的安全性审核工具可以跟踪18个个不同的安全事件及其子事件;不同的安全事件及其子事件; 精密的文件和网络加精密的文件和网络加密支持,包括密支持,包括SSL(安全套接字层)、安全套接字层)、Kerberos及委及委托。托。SQL Server 2000已经通过美国政府已经通过美国政府C2级安全性级安全性认证。认证。因此,因此,SQL Server更适合于开发投入实际运营的较更适合于开发投入实际运营的较大规模的网络应用程序。如果学习本书的目的是想开大规模的网络应用程序。如果学习本书的目的是想开发一个实际意义上的用户众多的较大规模的网站,建发一个实际意义上的用户众多的较大规模的网站,建议读者学习议读者学习SQL Server。本书也采用本书也采用SQL Server作作为后台数据库,以期尽量真实地模拟现实的开发环境。为后台数据库,以期尽量真实地模拟现实的开发环境。数据库产品很多,但实际上只有数据库管理员才需要数据库产品很多,但实际上只有数据库管理员才需要学习各种数据库产品的特性,开发者只要知道数据访学习各种数据库产品的特性,开发者只要知道数据访问的基本模型、基本的问的基本模型、基本的SQL语言和数据库基本概念就语言和数据库基本概念就可以进行大多数开发工作了。这要归功于标准的数据可以进行大多数开发工作了。这要归功于标准的数据库访问接口。库访问接口。9.5.7 ODBC与与ADO 1. 什么是什么是ODBC ODBC(Open Database Connectivity,开放的数据开放的数据库连接)是微软推出的一种工业标准,一种开放的独库连接)是微软推出的一种工业标准,一种开放的独立于厂商的立于厂商的API应用程序接口,可以跨平台访问各种应用程序接口,可以跨平台访问各种个人计算机、小型机以及主机系统上的数据库。个人计算机、小型机以及主机系统上的数据库。ODBC作为一个工业标准,绝大多数数据库厂商、大作为一个工业标准,绝大多数数据库厂商、大多数应用软件和工具软件厂商都为自己的产品提供了多数应用软件和工具软件厂商都为自己的产品提供了ODBC接口或提供了接口或提供了ODBC支持,其中包括常用的支持,其中包括常用的SQL Server、ORACAL、DB2等,当然也包括等,当然也包括Access。数据库驱动程序使用数据库驱动程序使用DSN(Data Source Name,数据数据源名源名)定位和标识特定的定位和标识特定的ODBC兼容数据库,将信息兼容数据库,将信息从从Web应用程序传递给数据库。典型情况下,应用程序传递给数据库。典型情况下,DSN包包含数据库配置、用户安全性和定位信息。通过含数据库配置、用户安全性和定位信息。通过ODBC可以选择希望创建的可以选择希望创建的DSN的类型:的类型: 用户、系统或文用户、系统或文件。件。那么什么是那么什么是DSN呢?呢?DSN是是“应用程序用以请求一个应用程序用以请求一个连到连到ODBC数据源的连接数据源的连接(Conncetion)的名字的名字”,换,换句话说,它是一个代表句话说,它是一个代表ODBC连接的符号。它隐藏了连接的符号。它隐藏了诸如数据库名、位置、数据库驱动程序、用户名、密诸如数据库名、位置、数据库驱动程序、用户名、密码等细节。因此,当建立一个数据库连接时,开发者码等细节。因此,当建立一个数据库连接时,开发者无须考虑数据库在哪儿,叫什么名字等细节,只要知无须考虑数据库在哪儿,叫什么名字等细节,只要知道管理员给出的在道管理员给出的在ODBC中的中的DSN即可。即可。DSN分以下分以下3种类型。种类型。文件文件DSN: 这种这种DSN的细节存储在指定文件中。的细节存储在指定文件中。系统系统DSN: 这种这种DSN可以被登录到系统中的任何可以被登录到系统中的任何用户使用。用户使用。 用户用户DSN: 这是为特定用户建立的这是为特定用户建立的DSN。只有建只有建立这个立这个DSN的用户才能看到并使用它。的用户才能看到并使用它。后两种情况中,后两种情况中,DSN的细节都储存在的细节都储存在Windows系统的系统的注册表中。注册表中。2. ADO模型概述模型概述ODBC对开发者来说相当复杂,为方便使用,微软公对开发者来说相当复杂,为方便使用,微软公司推出过一系列建立在司推出过一系列建立在ODBC之上的数据访问对象,之上的数据访问对象,用以适应各种不同的数据访问需求。用以适应各种不同的数据访问需求。ADO(ActiveX Data Objects)是微软公司推出的取代是微软公司推出的取代DAO和和RDO等各自不同的一系列数据访问对象的统等各自不同的一系列数据访问对象的统一的数据访问对象技术。一的数据访问对象技术。OLE DB是一个建立在是一个建立在ODBC上低层的数据访问接口,上低层的数据访问接口,用它可以访问各种数据源。用它可以访问各种数据源。OLE DB可以看作是一种数据驱动程序,每一种被访可以看作是一种数据驱动程序,每一种被访问的数据类型,都对应一种问的数据类型,都对应一种OLE DB Provider,这个这个Provider提供对这种数据的驱动。提供对这种数据的驱动。ADO将数据访问抽象为将数据访问抽象为3个主要的部分:个主要的部分: 连接连接(Connection)、)、命令(命令(Command)和记录集和记录集(RecordSet)。)。要建立一次数据库访问,首先要创建一个要建立一次数据库访问,首先要创建一个Connection对象,然后用基于这个对象,然后用基于这个Connection对象的对象的RecordSet对象来完成对数据库的操作。对象来完成对数据库的操作。因为因为ADO最终是通过最终是通过ODBC来对数据库进行访问的,来对数据库进行访问的,所以在使用所以在使用ADO之前要先在之前要先在ODBC中添加相应的数中添加相应的数据库驱动程序,并创建相应的据库驱动程序,并创建相应的DSN。Web应用程序的运行当然离不开应用程序的运行当然离不开Web服务器。服务器。Web服服务器的能力直接影响到务器的能力直接影响到Web应用程序的执行效率、并应用程序的执行效率、并发访问量等关键因素。本节将介绍当今主流的发访问量等关键因素。本节将介绍当今主流的Web服服务器产品。务器产品。根据根据Netcraft Web Server Survey 2002年年6月的调查,月的调查,Apache、Microsoft、Zeus和和iPlanet是这个市场的领是这个市场的领导者。基于开放式源代码的导者。基于开放式源代码的Apache Web Server拥有拥有约约57的的Web服务器市场份额,而服务器市场份额,而Microsoft IIS则具则具备备31的市场占有率,的市场占有率,Zeus Web Server和和iPlanet Web Server(现在的现在的Sun ONE Web Server)各占各占2.11%和和1.33%的份额。除微软公司以外,的份额。除微软公司以外,9.6 IIS Web服务器介绍服务器介绍其余各主要服务器的使用都有所减少。微软公司表示,其余各主要服务器的使用都有所减少。微软公司表示,使用使用IIS的顶级电子商务站点数量明显超越其他竞争的顶级电子商务站点数量明显超越其他竞争性产品,而性产品,而“财富财富500强强”企业中企业中IIS的应用数量也大的应用数量也大大多于大多于Apache。IIS(Internet Information Server)作为作为Microsoft Windows 2000和和Windows XP系列产品的重要组成部系列产品的重要组成部分,支持分,支持Web、FTP、SMTP、NNTP、Media等各种等各种服务,功能强大且管理简单,完全适用与搭建中小型服务,功能强大且管理简单,完全适用与搭建中小型规模的网站,是全面提供规模的网站,是全面提供Internet和和Intranet服务的最服务的最受欢迎的选择之一。受欢迎的选择之一。有很多功能使得有很多功能使得IIS可以更好、更可靠地执行。为了可以更好、更可靠地执行。为了更快速、更方便地重新启动更快速、更方便地重新启动IIS,IIS 5.0的可靠的可靠重新启动功能,可以使管理员不必重新启动计算机即重新启动功能,可以使管理员不必重新启动计算机即可重新启动可重新启动Web服务。为改进可靠性,服务。为改进可靠性,“应用程序保应用程序保护护”功能提供一种可以在与功能提供一种可以在与Web服务分开的池中运行服务分开的池中运行应用程序的能力。应用程序的能力。IIS 5.0中的中的“CPU限制限制”和和“套接套接字共用字共用”功能也能够改进可靠性。对于应用程序开发功能也能够改进可靠性。对于应用程序开发人员来说,人员来说,Web站点的性能可以通过某些新功能来改站点的性能可以通过某些新功能来改进,如无脚本进,如无脚本ASP(Microsoft Active Server Pages) 处处理、理、ASP自调以及性能增强的自调以及性能增强的ASP对象。对象。 IIS 5.0易于安装和维护。其中的许多功能都支持这种易于安装和维护。其中的许多功能都支持这种不断增加的易维护要求,包括简化的安装过程、新安不断增加的易维护要求,包括简化的安装过程、新安全任务向导、解释各进程使用的时间的能力、灵活的全任务向导、解释各进程使用的时间的能力、灵活的远程管理等。远程管理等。 IIS 5.0增加了对重要行业标准安全协议的支持,包括增加了对重要行业标准安全协议的支持,包括摘要式身份验证、摘要式身份验证、Server Gated Cryptography、Kerberos v5身份验证协议、传输层安全和身份验证协议、传输层安全和Fortezza。另外,其中的另外,其中的3个新任务向导,使得管理员可以更方个新任务向导,使得管理员可以更方便地管理站点的安全设置。便地管理站点的安全设置。 因为因为IIS 5.0建立在建立在Windows 2000 Server的新技术的的新技术的基础上,从而扩展了基础上,从而扩展了Web服务器的应用程序开发环境。服务器的应用程序开发环境。这些新技术包括这些新技术包括Active Directory以及扩展的组件对象以及扩展的组件对象模型模型(COM+)。另外,还有对另外,还有对IIS Active Server Pages的的增强,如无脚本增强,如无脚本ASP处理,以及改进的流控制和错误处理,以及改进的流控制和错误处理,让开发人员编写更有效的以处理,让开发人员编写更有效的以Web为中心的应用为中心的应用程序。程序。 对服务提供商而言,对服务提供商而言,IIS 5.0支持更大的吞吐量和更多支持更大的吞吐量和更多的站点。使用的站点。使用IIS 5.0,一个一个Web服务器提供的站点远服务器提供的站点远多于多于IIS 4.0的限制(的限制(250个)。尽管随着站点数量的个)。尽管随着站点数量的增加性能将会下降,但大多数硬件配置可以提供增加性能将会下降,但大多数硬件配置可以提供5000个个Web站点并每天处理超过站点并每天处理超过1700万个请求(使用万个请求(使用4个个CPU和和4 GB内存配置,每天处理内存配置,每天处理3080万万4620万个万个请求)。请求)。要点提示要点提示:如果有条件,实验环境就应该选择可以投入实际应用如果有条件,实验环境就应该选择可以投入实际应用的的IIS,而不是其他小型化的个人用的而不是其他小型化的个人用的Web服务器。服务器。首先,因为学习本书的目的,一定是想要做实际的开首先,因为学习本书的目的,一定是想要做实际的开发,因此,不如直接接触实际应用中的产品;发,因此,不如直接接触实际应用中的产品; 其次,其次,用用IIS建立网站已经简单到并不比那些小型化建立网站已经简单到并不比那些小型化“玩具玩具”Web服务器复杂多少。服务器复杂多少。作为电子商务网站的基础,本章介绍了作为电子商务网站的基础,本章介绍了Web应用程序应用程序的基本概念和的基本概念和3种工作流程:种工作流程: 静态页面的处理流程;静态页面的处理流程;简单动态页面的处理流程;简单动态页面的处理流程;复杂动态页面的处理流程。复杂动态页面的处理流程。Web应用程序的工作流程中最关键的部件之一就是应应用程序的工作流程中最关键的部件之一就是应用服务器。本章介绍了用服务器。本章介绍了Dreamweaver MX对应用服务对应用服务器技术的支持,并重点介绍了最常用的器技术的支持,并重点介绍了最常用的ASP技术的基技术的基础知识。在础知识。在ASP的内建对象中,最重要的是的内建对象中,最重要的是Application对象、对象、Request对象和对象和Session对象。请注对象。请注意它们的区别和应用。意它们的区别和应用。9.7 本章摘要与重点回顾本章摘要与重点回顾本章还详细解释了表单传递数据的方式,在后面的章本章还详细解释了表单传递数据的方式,在后面的章节将介绍应用的实例,理解和掌握这一点非常重要,节将介绍应用的实例,理解和掌握这一点非常重要,页面与页面之间的沟通除了通过内建对象共享一部分页面与页面之间的沟通除了通过内建对象共享一部分信息,其他信息传递就全靠它了。了解一点信息,其他信息传递就全靠它了。了解一点VBScript脚本语言的语法,对于深入理解脚本语言的语法,对于深入理解Dreamweaver MX应应用开发的原理是很有帮助的。用开发的原理是很有帮助的。数据库是电子商务应用的另一个关键部件。与数据库数据库是电子商务应用的另一个关键部件。与数据库交互,用的是标准的交互,用的是标准的SQL语言,从这个意义上讲,数语言,从这个意义上讲,数据库可以看作是一个据库可以看作是一个SQL命令的执行器。如何让应用命令的执行器。如何让应用程序能够与数据库进行程序能够与数据库进行SQL语言的交流呢?需要通过语言的交流呢?需要通过配置配置DSN来配置来配置ODBC,并使用并使用ADO技术。技术。在在Dreamweaver MX中使用中使用ADO技术,使得开发者技术,使得开发者只需要关心只需要关心SQL语句如何编写,而不需要关心数据库语句如何编写,而不需要关心数据库的其他细节。的其他细节。作为当今主流的一大作为当今主流的一大Web服务器,包含在服务器,包含在Windows 2000里的里的IIS 5.0拥有一些吸引人的企业级拥有一些吸引人的企业级Web服务器服务器的特性,并且容易使用,非常适用于模拟实际环境的的特性,并且容易使用,非常适用于模拟实际环境的实验。实验。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号