470 likes | 654 Views
第七节: 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 是一种服务器端的脚本编写环境,用户不需要了解过多的语言知识,只需学习相对较简单的脚本,就可以完成服务器端的多种操作。.
E N D
第七节: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 是一种服务器端的脚本编写环境,用户不需要了解过多的语言知识,只需学习相对较简单的脚本,就可以完成服务器端的多种操作。
3) 在I I S 的强力支持下,利用A S P 技术,可以为We b 页面添加交互内容,构建动态网页,甚至可以调用A c t i v e X 组件来执行任务,例如连接到数据库或进行商务计算等,以生成功能强大的完整的We b 应用程序。
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 代码传输到浏览器上。
2) 认识脚本 • A. 所谓脚本(S c r i p t ),指的是一系列的命令和指令。它与H T M L 标记的主要区别在于,脚本可以完成数据的运算和执行操作,而H T M L 标记只能实现对文本的简单格式化,或是对图形、视频及音频文件的读取。
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 脚本同后两种脚本在概念上有着根本的不同,它只能运行于服务器端,而后两种脚本不仅能够用于编写服务器端脚本,也可以编写客户端脚本。
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开发。
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 等语句进行变量的声明和命名。
例如,下面的代码定义了一个名为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 的变量,可以使用如下方法:
<% var UserName; %> • < % • var MyName; • MyName = "周明涛" ; • % > • <% Response.Write(MyName); %> • <%= MyName %> • <% MyName = "周明涛"; %>
B 变量作用域 • a) 所谓变量的作用域,指的就是变量的存活期。在脚本中只能访问“存活”的变量,而不能使用已经“死去”的变量。 • b) 如果一个变量在整个A S P 页面的范围内都是存活的,我们就将这种变量称为“全局变量”; • c) 如果一个变量仅仅在A S P 页面的部分区域存活,例如仅在一个函数中存活,我们就将这种变量称为局部变量。
d) 对于全局变量来说,它可以被页面上任意位置的脚本所访问,而对于局部变量来说,它只能被位于其存活范围内的脚本所访问。d) 对于全局变量来说,它可以被页面上任意位置的脚本所访问,而对于局部变量来说,它只能被位于其存活范围内的脚本所访问。 • e) 在J s c r i p t 中,局部变量的作用域主要由大括号({})所包含的区域决定,函数体就是一个用大括号包容的区域。
f) 如果希望该变量在另外的A S P 页面有效,也即将变量值从一个页面传递到另一个页面,就必须为变量赋予所谓的“会话作用域”或“应用程序作用域”,也即创建“会话作用域变量”或“应用程序作用域变量”。 • g) 所谓“会话作用域变量”(有时候也简称为“会话变量”),指的是在一个会话过程中有效的变量。所谓“会话”(S e s s i o n ),指的是用户同服务器信息的交互,它主要是针对用户而言,每个利用浏览器访问站点的用户都会自动生成一个会话。因此,会话作用域变量只针对某个特定的用户有效,不影响其他用户的程序运行。
h) 对单个用户来说,会话变量是存储信息的最佳途径,例如,通常可以用会话变量来存储用户的身份、姓名或用户标识等专属于特定个人的信息,以将该人同其他人区分开来。h) 对单个用户来说,会话变量是存储信息的最佳途径,例如,通常可以用会话变量来存储用户的身份、姓名或用户标识等专属于特定个人的信息,以将该人同其他人区分开来。 • i) 所谓应用程序作用域变量(有时候也简称为应用程序变量),指的是在所有会话过程中有效的变量,也就是说,该变量在整个站点的运行过程中对所有的用户都有效。也可以将应用程序变量看成是在整个应用程序运行起始时间中都有效的,可以被所有用户同时使用的全局变量。
j) 通常可以用应用程序变量处理那些可以所有用户修改的内容,例如访问页面的人数等等。j) 通常可以用应用程序变量处理那些可以所有用户修改的内容,例如访问页面的人数等等。 • k) 在A S P 中提供了两个内置的对象来帮助您存储会话变量和应用程序变量。其中Session 对象用于存储会话变量,A p p l i c a t i o n 对象用于存储应用程序变量。
C 使用过程和函数 • 如果希望将一组操作指令组合起来执行以完成某些特定的任务,就可以将它们定义为所谓的“过程”(p r o c e d u r e ),在需要执行这些指令的地方调用过程,就可以完成相应的任务。
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 语句,在定义函数的方法上没有什么差别。
B) 定义V B S c r i p t 过程 • (1) 定义子过程 • Sub 子过程名(参数) • 子过程代码 • End Sub
(2) 定义函数过程 • Function 函数过程名(参数) • 函数过程代码 • End Function • Function ShowYourName () • ShowYourName = InputBox("请输入您的姓名:", 1) • End Function • MsgBox "您好," & ShowYourName
C) 定义J s c r i p t 函数 • 对于J s c r i p t 来说,函数和过程是一样的,要定义这类过程,可以采用如下的语法结构: • function 函数名(参数) • { • 函数代码 • } • 如果希望函数返回值,可以在函数中使用r e t u r n 语句。
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 >
< 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 才能保证脚本被服务器所处理,如果省略了该属性,则脚本会被作为客户端脚本,由浏览器来运行。
您可以将函数的定义放在调用函数的. 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 组件中,不过这需要相当的传统语言的编程经验。
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 来说,直接书写函数名称(以及参数)即可完成对函数的调用。
D 使用组件和对象 • A c t i v e X 组件是建立强大的We b 应用程序的关键。组件能够提供用于在脚本中执行任务的对象。 • 在A S P 中提供了多种内置的对象,利用这些对象可以很方便地完成很多常见任务。
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 开发环境的战略基石。
d) 组件是可以重复使用的。在We b 服务器上安装了组件后,就可以从A S P 脚本、I S A P I 应用程序、服务器上的其他组件或由另一种C O M 兼容语言编写的程序中调用该组件。 • e) 在编写We b 动态页面时,也可以直接利用组件来完成某些功能,从而减少工作量,因为只需要知道如何访问组件提供的对象即可。
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 函数。
B) 组件的对象 • a) 要执行组件中的代码,可以通过所谓的对象(O b j e c t )、方法(M e t h o d )和属性(P r o p e r t y )来完成。 • b) 所谓对象,指的是用于代表组件的元素。要使用组件提供的对象,必须首先创建对象的实例,并且为这个新的实例分配变量名。
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 )。
例如,在下面的例子里,我们创建一个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 ") %>
要注意的是,在创对象时,不能使用脚本语言中自带的对象创建命令,如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 将无法跟踪脚本语言中对象的使用。
使用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>
有时候,可以用所谓的注册号码(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 方法来构建对象实例,这样比较简单,也便于理解。
C) 对象的方法 • a) 所谓方法,指的是对象可以进行的动作。方法通常都带有参数,以限定动作将如何进行。 • b) 在大多数情况下,方法是动作,而属性是性质。使用方法将导致针对对象的某些事情发生,而使用属性则会返回对象的信息,或者引起对象的某个性质的改变。
c) 一般来说,对方法的使用可以遵循如下的语言规则: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 则是该对象的一个方法。
D) 对象的属性 • 所谓属性,指的是对象的一个特性或者该对象行为的一个方面。一般来说,对象的属性可以采用如下的语言规则来表示: • 对象.属性 • 要更改某个对象的特征,可以通过修改其属性值来实现。
例如,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 %>
E) 使用ASP 内建对象 • ASP 提供执行大多数常见任务的内置对象,对于A S P 内置的对象,不需要创建对象的实例,就可以直接使用它们。我们会在本章后面介绍这些对象。 • 与使用其他对象不同,使用这些A S P 对象时不需要利用C r e a t e O b j e c t 方法来构建对象的实例,而是可以直接使用.
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 脚本所初始化的事务
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 的值
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 编码字符串,以将虚拟的路径映射成物理路径.
S e s s i o n 该对象主要用于构建会话作用域变量,以保存特定用户会话时所需的信息。当用户在应用程序的页面之间跳转时,存储在该对象中的变量不会清除,只要用户正在访问应用程序中的页面,则这些变量始终存在。另外,也可以使用该对象强制结束一个会话,或是设置空闲会话的超时期限。
3. ASP技术的特点 • 1. 无需编译 ASP脚本集成于HTML当中,容易生成,无需编译或链接即可直接解释执行。 • 2. 易于生成 使用常规文本编辑器(如WINDOWS下的记事本),即可进行*.asp页面的设计。若从工作效率来考虑,不妨选用具有可视化编辑能力的Visual InterDev。
3. 独立于浏览器 用户端只要使用可解释常规HTML码的浏览器, 即可浏览ASP所设计的主页。ASP脚本是在站点服务器端执行的,用户端的浏览器不需要支持它。因此,若不通过从服务器下载来观察*.asp 主页,在浏览器端见不到正确的页面内容。 • 4. 面向对象 在ASP脚本中可以方便地引用系统组件和ASP的内置组件,还能通过定制 ActiveX Server Component(ActiveX服务器组件)来扩充功能。
5. 与任何ActiveX scripting 语言兼容 除了可使用VBScript 和JScript语言进行设计外,还可通过Plug-in的方式,使用由第三方所提供的其它scripting 语言。 • 6. 源程序码不会外漏 ASP脚本在服务器上执行,传到用户浏览器的只是ASP执行结果所生成的常规HTML码,这样可保证辛辛苦苦编写出来的程序代码不会被他人盗取。