第七节: ASP 技术

47
第第第ASP 第第 A S P 第 M i c r o s o f t 第第第 We b 第第第第第第第第 第第 I I S 第 第第第 第第第第第第 第第第第第第第第 第第第第第第第 ,,, C G I 第第第第第第第

description

第七节: ASP 技术. A S P 是 M i c r o s o f t 提供的一种 We b 应用程序解决方案,它同 I I S 高度集成,既易于编写,执行效率也较高,能够有效地避免 C G I 技术带来的不足。. 1. ASP 概述. 1)所谓 A S P , 是 Active Server Pages 的首字母缩写,其中文含义是“活动服务器页面”,通常我们也将它简称为“活动页面”或“动态页面”。 2) A S P 是一种服务器端的脚本编写环境,用户不需要了解过多的语言知识,只需学习相对较简单的脚本,就可以完成服务器端的多种操作。. - PowerPoint PPT Presentation

Transcript of 第七节: ASP 技术

Page 1: 第七节: ASP 技术

第七节: ASP 技术A S P 是 M i c r o s o f t 提供的一种

We b 应用程序解决方案,它同 I I S 高度集成,既易于编写,执行效率也较高,能够有效地避免 C G I 技术带来的不足。

Page 2: 第七节: ASP 技术

1 . ASP 概述1) 所谓 A S P ,是 Active Server Pages 的首字母缩写,其中文含义是“活动服务器页面”,通常我们也将它简称为“活动页面”或“动态页面”。2) A S P 是一种服务器端的脚本编写环境,用户不需要了解过多的语言知识,只需学习相对较简单的脚本,就可以完成服务器端的多种操作。

Page 3: 第七节: ASP 技术

3) 在 I I S 的强力支持下,利用 A S P 技术,可以为 We b 页面添加交互内容,构建动态网页,甚至可以调用 A c t i v e X 组件来执行任务,例如连接到数据库或进行商务计算等,以生成功能强大的完整的 We b 应用程序。

Page 4: 第七节: ASP 技术

2 . ASP 程序设计基础1 ) ASP 页面:A. A S P 页面实际上就是嵌入了 A S P 脚本的 H T M L 页面,可以是 H T M L 标记、文本和脚本命令的任意组合。B. 在 A S P 页面中,脚本是在服务器上运行,而不是在客户端运行的,浏览器所显示的We b 页,是在 We b 服务器上生成的, We b 服务器已经完成了所有脚本的处理过程,并将标准的 H T M L 代码传输到浏览器上。

Page 5: 第七节: ASP 技术

2) 认识脚本A. 所谓脚本( S c r i p t ),指的是一系列的命令和指令。它与 H T M L 标记的主要区别在于,脚本可以完成数据的运算和执行操作,而 H T M L 标记只能实现对文本的简单格式化,或是对图形、视频及音频文件的读取。

Page 6: 第七节: ASP 技术

B. 在 A S P 技术中,实际上可以使用三种类型的脚本语言:A S P 脚本、 V B S c r i p t 脚本和 J a v a S c r i p t 脚本。C. A S P 脚本同后两种脚本在概念上有着根本的不同,它只能运行于服务器端,而后两种脚本不仅能够用于编写服务器端脚本,也可以编写客户端脚本。

Page 7: 第七节: ASP 技术

D. 所以通常我们将 A S P 脚本称为“ A S P 指令”或“ A S P 脚本命令”,而将后两种脚本称为“脚 A S P 技术中使用的是 V B S c r i p t 脚本和 J s c r i p t 脚本,而不是我们常说的 V B S c r i p t 脚本和 J a v a S c r i p t 脚本。实际上,J s c r i p t 脚本同 J a v a S c r i p t 脚本的差别微乎其微,最重要的差别可能在于出品公司不同而已。 J s c r i p t 脚本由 M i c r o s o f t 开发,而J a v a S c r i p t 脚本由 N e t s c a p e 开发。

Page 8: 第七节: ASP 技术

3) 使用变量A 变量的声明和赋值对于不同的脚本程序,声明变量的方法各不相同。在 V B S c r i p t 中,可以用 D i m 、 P u b l i c 或 P r i v a t e 等语句进行变量的声明和命名。

Page 9: 第七节: ASP 技术

例如,下面的代码定义了一个名为 U s e r N a m e 的变量:<% Dim UserName %>

在 J s c r i p t 中,要声明变量,可以使用 v a r 语句,例如,要声明一个名为 U s e r N a m e 的变量,可以使用如下方法:

Page 10: 第七节: ASP 技术

<% var UserName; %>

< %

var MyName;

MyName = " 周明涛 " ;

% >

<% Response.Write(MyName); %>

<%= MyName %>

<% MyName = " 周明涛 "; %>

Page 11: 第七节: ASP 技术

B 变量作用域a) 所谓变量的作用域,指的就是变量的存活期。在脚本中只能访问“存活”的变量,而不能使用已经“死去”的变量。b) 如果一个变量在整个 A S P 页面的范围内都是存活的,我们就将这种变量称为“全局变量”;c) 如果一个变量仅仅在 A S P 页面的部分区域存活,例如仅在一个函数中存活,我们就将这种变量称为局部变量。

Page 12: 第七节: ASP 技术

d) 对于全局变量来说,它可以被页面上任意位置的脚本所访问,而对于局部变量来说,它只能被位于其存活范围内的脚本所访问。e) 在 J s c r i p t 中,局部变量的作用域主要由大括号({})所包含的区域决定,函数体就是一个用大括号包容的区域。

Page 13: 第七节: ASP 技术

f) 如果希望该变量在另外的 A S P 页面有效,也即将变量值从一个页面传递到另一个页面,就必须为变量赋予所谓的“会话作用域”或“应用程序作用域”,也即创建“会话作用域变量”或“应用程序作用域变量”。g) 所谓“会话作用域变量”(有时候也简称为“会话变量”),指的是在一个会话过程中有效的变量。所谓“会话”( S e s s i o n ),指的是用户同服务器信息的交互,它主要是针对用户而言,每个利用浏览器访问站点的用户都会自动生成一个会话。因此,会话作用域变量只针对某个特定的用户有效,不影响其他用户的程序运行。

Page 14: 第七节: ASP 技术

h) 对单个用户来说,会话变量是存储信息的最佳途径,例如,通常可以用会话变量来存储用户的身份、姓名或用户标识等专属于特定个人的信息,以将该人同其他人区分开来。i) 所谓应用程序作用域变量(有时候也简称为应用程序变量),指的是在所有会话过程中有效的变量,也就是说,该变量在整个站点的运行过程中对所有的用户都有效。也可以将应用程序变量看成是在整个应用程序运行起始时间中都有效的,可以被所有用户同时使用的全局变量。

Page 15: 第七节: ASP 技术

j) 通常可以用应用程序变量处理那些可以所有用户修改的内容,例如访问页面的人数等等。k) 在 A S P 中提供了两个内置的对象来帮助您存储会话变量和应用程序变量。其中 Session 对象用于存储会话变量, A p p l i c a t i o n 对象用于存储应用程序变量。

Page 16: 第七节: ASP 技术

C 使用过程和函数如果希望将一组操作指令组合起来执行以完成某些特定的任务,就可以将它们定义为所谓的“过程”( p r o c e d u r e ),在需要执行这些指令的地方调用过程,就可以完成相应的任务。

Page 17: 第七节: ASP 技术

A) 过程和函数的区别如果粗略地为过程分类,则可以将之分为“子过程”和“函数过程”两大类,子过程是不返回值的过程,通常使用 S u b 来定义,而函数过程是返回值的过程,通常用 F u n c t i o n 来定义。对于 J s c r i p t 来说,过程同函数的差别就不那么突出了,基本上可以将过程等同于函数。因为在 J s c r i p t 中,函数是否返回值仅仅取决于是否在函数中包含 r e t u r n 语句,在定义函数的方法上没有什么差别。

Page 18: 第七节: ASP 技术

B) 定义 V B S c r i p t 过程 

(1) 定义子过程Sub 子过程名 (参数 )

子过程代码End Sub

Page 19: 第七节: ASP 技术

(2) 定义函数过程Function 函数过程名 (参数 )函数过程代码End FunctionFunction ShowYourName ()ShowYourName = InputBox(" 请输 入您的姓名: ", 1)End FunctionMsgBox "您好, " & ShowYourName

Page 20: 第七节: ASP 技术

C) 定义 J s c r i p t 函数对于 J s c r i p t 来说,函数和过程是一样的,要定义这类过程,可以采用如下的语法结构:function 函数名 (参数 ){函数代码}如果希望函数返回值,可以在函数中使用 r e t u r n 语句。

Page 21: 第七节: ASP 技术

D) 在 A S P 文档中定义函数在文档中定义函数,可以使用 < s c r i p t > 和 < / s c r i p t > 标记,例如,下面的语句定义了一个在服务器端运行的 J s c r i p t 函数:<script runat =server language=Jscript >函数代码< / s c r i p t >

Page 22: 第七节: ASP 技术

< s c r i p t > 标记中的 l a n g u a g e 属性用于指定过程中使用的脚本语言,如果函数中使用的脚本语言同页面的主脚本语言一致,那么也可以省略 < s c r i p t > 标记中的 l a n g u a g e 属性。在 < s c r i p t > 标记上中, r u n a t 属性值必须设置为 s e r v e r 才能保证脚本被服务器所处理,如果省略了该属性,则脚本会被作为客户端脚本,由浏览器来运行。

Page 23: 第七节: ASP 技术

您可以将函数的定义放在调用函数的 . a s p 文件中,如果希望在多个 . a s p 文件中使用该函数,可以将函数放在一个共享的 . a s p 文件中,然后通过 # i n c l u d e 指令(也即服务器端包含特性),将它包含在其他调用该函数的 . a s p 中,函数被多个 . a s p 页面所共用,也可以将通用函数放在一个共享的 .asp 文件中。另外一种方法是把函数打包在 A c t i v e X 组件中,不过这需要相当的传统语言的编程经验。

Page 24: 第七节: ASP 技术

E) 调用过程或函数要调用过程或函数,只需在需要的地方命令中包含过程名或函数名即可。对于 V B S c r i p t 来说,要调用函数,可以使用 C a l l 关键字。如果调用的函数需要括号,变量则必须放在括号内。如果希望省略 C a l l 关键字,则也必须省略变量表外的括号。如果用 C a l l 语法调用任何内建的或用户自定义的函数,函数的返回值将被丢弃。对于 J s c r i p t 来说,直接书写函数名称(以及参数)即可完成对函数的调用。

Page 25: 第七节: ASP 技术

D 使用组件和对象

A c t i v e X 组件是建立强大的 We b 应用程序的关键。组件能够提供用于在脚本中执行任务的对象。

在 A S P 中提供了多种内置的对象,利用这些对象可以很方便地完成很多常见任务。

Page 26: 第七节: ASP 技术

A) 关于组件

a) 所谓 A c t i v e X 组件( C o m p o u n d ),实际上就是一个文件(通常是动态链接库 . d l l 或可执行文件 . e x e ),不过在该文件包含执行某项或一组任务的代码而已。b) 利用组件可以像搭积木那样快速构成一个应用程序,而不用自己去编写这些代码。c) 组件对象模型( Compound Object Model , C O M )是目前M i c r o s o f t 开发环境的战略基石。

Page 27: 第七节: ASP 技术

d) 组件是可以重复使用的。在 We b 服务器上安装了组件后,就可以从 A S P 脚本、 I S A P I 应用程序、服务器上的其他组件或由另一种 C O M 兼容语言编写的程序中调用该组件。e) 在编写 We b 动态页面时,也可以直接利用组件来完成某些功能,从而减少工作量,因为只需要知道如何访问组件提供的对象即可。

Page 28: 第七节: ASP 技术

f) 可以使用任何支持组件对象模型的语言来编写组件,如 C 、 C + + 、 J a v a 或 Visual Basic 等。g) 因为组件需要在服务器上运行,所以在使用这些传统语言进行编程时需要注意某些限制,例如不能使用图形用户接口元素,如 Visual Basic 的 M s g B o x 函数或 C + + 中的 M e s s a g e B o x 函数。

Page 29: 第七节: ASP 技术

B) 组件的对象a) 要执行组件中的代码,可以通过所谓的对象( O b j e c t )、方法( M e t h o d )和属性( P r o p e r t y )来完成。b) 所谓对象,指的是用于代表组件的元素。要使用组件提供的对象,必须首先创建对象的实例,并且为这个新的实例分配变量名。

Page 30: 第七节: ASP 技术

c) 通常我们可以使用 A S P 的 S e r v e r. C r e a t e O b j e c t 方法来创建对象实例,然后再利用变量赋值的方法为对象的实例命名。d) 在创建对象实例时,必须为 C r e a t e O b j e c t 方法提供实例的注册名称( P R O G I D )。

Page 31: 第七节: ASP 技术

例如,在下面的例子里,我们创建一个 A D O 对象中的 R e c o r d s e t 对象,该对象的 P R O G I D 是“ A D O D B . R e c o r d s e t ” ,这时我们可以使用如下的代码:对于 V B S c r i p t :<% Set rs = Server.CreateObject("ADODB.Recordset ") %>对于 J S c r i p t :<% var rs = Server.CreateObject("ADODB.Recordset ") %>

Page 32: 第七节: ASP 技术

要注意的是,在创对象时,不能使用脚本语言中自带的对象创建命令,如 V B S c r i p t 中的 C r e a t e O b j e c t 命令或 J S c r i p t 中的 N e w 命令。在创建 A S P 组件对象时,必须使用 A S P 的 S e r v e r. C r e a t e O b j e c t 方法,否则 A S P 将无法跟踪脚本语言中对象的使用。

Page 33: 第七节: ASP 技术

使用 H T M L 中的 < o b j e c t > 标记也可以创建对象实例。这时,您需要将 r u n a t 属性值设置为 S e r v e r ,为 I D 属性设置对象实例名称,以及为 P R O G I D 属性指定注册名,例 如 , 在 下 面 的 例子中 , 我 们创建 了 Ad Rotator 对象的一个实例,该实例的名称为 M y A d ,注册名为 M S W C . A d R o t a t o r :<OBJECT RUNAT=Server ID=MyAd PROGID="MSWC.AdRotator"></OBJECT>

Page 34: 第七节: ASP 技术

有时候, 可 以 用 所 谓 的注册号码 ( C L S I D )来替代注册名,下面就是一个利用注册号码创建 Ad Rotator 对象实例的例子:<O B J E C T R U N A T =S e r v e r I D =M y A d C L A S S I D ="C l s i d :1 6 2 1 F 7 C 0 -6 0 A C -1 1</OBJECT>大多数情况下,建议用户都使用 S e r v e r. C r e a t e O b j e c t 方法来构建对象实例,这样比较简单,也便于理解。

Page 35: 第七节: ASP 技术

C) 对象的方法a) 所谓方法,指的是对象可以进行的动作。方法通常都带有参数,以限定动作将如何进行。b) 在大多数情况下,方法是动作,而属性是性质。使用方法将导致针对对象的某些事情发生,而使用属性则会返回对象的信息,或者引起对象的某个性质的改变。

Page 36: 第七节: ASP 技术

c) 一般来说,对方法的使用可以遵循如下的语言规则:对象 . 方法参数R e s p o n s e . Wr i t e ,实际上这就是对对象方法的一种应用,其中 R e s p o n s e 是 A S P 的内置对象,而 Wr i t e 则是该对象的一个方法。

Page 37: 第七节: ASP 技术

D) 对象的属性所谓属性,指的是对象的一个特性或者该对象行为的一个方面。一般来说,对象的属性可以采用如下的语言规则来表示:对象 .属性要更改某个对象的特征,可以通过修改其属性值来实现。

Page 38: 第七节: ASP 技术

例如, R e c o r d s e t 对象中有 P a g e S i z e 属性,用于指定记录集中页面的大小。如果我们希望在一页上显示 3 条记录,就可以说利用如下的代码:<% rs.pageSize = 3 %>可以使用 A S P 输出指令来显示某些属性的当前值。例如,如果浏览器仍然与服务器连接,下面的命令将返回 t r u e :<%= Response.IsClientConnected %>

Page 39: 第七节: ASP 技术

E) 使用 ASP 内建对象ASP 提供执行大多数常见任务的内

置对象,对于 A S P 内置的对象,不需要创建对象的实例,就可以直接使用它们。我们会在本章后面介绍这些对象。

与使用其他对象不同,使用这些 A S P 对象时不需要利用 C r e a t e O b j e c t 方法来构建对象的实例,而是可以直接使用 .

Page 40: 第七节: ASP 技术

ASP 内置对象 A p p l i c a t i o n 用于存储应用程序作用域变量,也即可以在整个应用程序范围内有效的全局变量,该变量可以被应用程序中所有的用户所共享O b j e c t C o n t e x t 该对象主要用于创建事务 We b 页。利用该对象,可以提交或撤消由 A S P 脚本所初始化的事务

Page 41: 第七节: ASP 技术
Page 42: 第七节: ASP 技术

R e q u e s t 该对象主要用于获取任何用 H T T P 请求传递的信息,包括从 H T M L 表单中通过 P O S T 方法或 G E T 方法所传递的参数、 c o o k i e 以及用户认证等。 R e q u e s t 对象使您能够访问发送给服务器的二进制数据,如上载的文件R e s p o n s e 该对象主要用于控制发送给浏览器的信息。可以直接将真正可显示的信息发送给浏览器,也可以将相应的命令内容发送给浏览器。例如,可以或将浏览器重新定向到另一个页面,或是设置 c o o k i e 的值

Page 43: 第七节: ASP 技术

S e r v e r 该对象提供关于 We b 服务器上的信息,可以用于对服务器上的方法和属性进行访问。利用该对象的 C r e a t e O b j e c t 方法,可以创建 A c t i v e X 组件的实例;还可以使用该对象中的另一些方法来构建 U R L 或 H T M L 编码字符串,以将虚拟的路径映射成物理路径 .

Page 44: 第七节: ASP 技术

S e s s i o n 该对象主要用于构建会话作用域变量,以保存特定用户会话时所需的信息。当用户在应用程序的页面之间跳转时,存储在该对象中的变量不会清除,只要用户正在访问应用程序中的页面,则这些变量始终存在。另外,也可以使用该对象强制结束一个会话,或是设置空闲会话的超时期限。

Page 45: 第七节: ASP 技术

3. ASP 技术的特点   1. 无需编译  ASP 脚本集成于HTML当中 , 容易生成 ,无需编译或链接即可直接解释执行。    2. 易于生成 使用常规文本编辑器( 如 WINDOWS 下的记事本 ),即可进行 *.asp 页面的设计。若从工作效率来考虑 ,不妨选用具有可视化编辑能力的 Visual InterDev 。

Page 46: 第七节: ASP 技术

   3. 独立于浏览器 用户端只要使用可解释常规 HTML 码的浏览器 , 即可浏览 ASP 所设计的主页。 ASP 脚本是在站点服务器端执行的 , 用户端的浏览器不需要支持它。因此 ,若不通过从服务器下载来观察 *.asp 主页 , 在浏览器端见不到正确的页面内容。    4. 面向对象 在 ASP 脚本中可以方便地引用系统组件和 ASP 的内置组件 ,还能通过定制 ActiveX Server Component(ActiveX 服 务 器组件 ) 来扩充功能。

Page 47: 第七节: ASP 技术

   5. 与任何 ActiveX scripting 语言兼容 除了可使用 VBScript 和 JScript 语言进行设计外 ,还可通过 Plug-in 的方式 , 使用由第三方所提供的其它 scripting 语言。    6. 源程序码不会外漏  ASP 脚本在服务器上执行 , 传到用户浏览器的只是 ASP 执行结果所生成的常规 HTML 码 , 这样可保证辛辛苦苦编写出来的程序代码不会被他人盗取。