打印本文 打印本文  关闭窗口 关闭窗口
ASP中文简明教程
作者:佚名 文章来源:网络 点击数: 更新时间:2005/9/18 18:18:51
户资格是包含用户身份信息的数字身份证,它的作用与传统的诸如护照或驾驶执照等身份证明相同。用户通常从委托的第三方组织获得客户资格,第三方组织在发放资格证之前确认用户的身份信息。(通常,这类组织要求姓名、地址、电话号码及所在组织名称;此类信息的详细程度随给予的身份等级而异。)

每当用户试图登录到需要资格验证的应用程序时,用户的 Web 浏览器会自动向服务器发送用户资格。如果 Web 服务器的 Secure Sockets Layer (SSL) 资格映射特性配置正确,那么服务器就可以在许可用户对 ASP 应用程序访问之前对其身份进行确认。

用于处理资格证明的 ASP 脚本

作为 ASP 应用程序开发人员,您可以编写脚本来检查资格是否存在并读取资格字段。例如,您可以从资格证明中访问用户名字段和公司名字段。Active Server Pages 在 Request 对象的 ClientCertificate 集合中保存资格信息。详细信息,请参阅 ASP 内建对象。

必须将 Web 服务器配置为接受或需要客户资格,然后才能通过 ASP 处理客户资格;否则,ClientCertificate 集合将为空。

 

--------------------------------------------------------------------------------

创建事务性脚本

商业应用程序常常需要具有在事务内部运行脚本和组件的能力。事务是一种服务器操作,即使该操作包括很多步骤(例如,定货、查看存货、付帐等),也只能整体返回操作是成功还是失败。用户可以创建在事务内部运行的 ASP 脚本,如果脚本的任何一部分失败,整个事务都将会终止。

ASP 事务处理是以 Microsoft? Transaction Server (MTS) 为基础的。Microsoft? Transaction Server (MTS) 是一个事务处理系统,用于开发、配置和管理高性能、可分级的、有鲁棒性的企业 Internet 和 Intranet 服务器应用程序。Transaction Server 为开发分布式的,基于组件的应用程序提供了一个应用程序设计模型。它也为配置和管理这些应用程序提供了一个运行环境。

创建事务性脚本的功能内置在 Internet Information Server 和 Personal Web Server 中。如果您安装了 Microsoft Transaction Server,就可以将组件打包,以使组件在事务内部运行。有关组件打包的详细信息,请参阅 创建 MTS 包。

关于事务

事务是整体成功或失败的操作。事务处理用于对数据库进行可靠地更新。在对数据库进行许多相关更改或同时更新多个数据库时,要保证所有更改都被正确执行。如果这些更改中的任何一个失败,都需要恢复数据库表的原始状态。

如果没有 MTS,您就需要编写脚本和组件,手工跟踪请求的更改情况,以便在某些更改失败时恢复数据。使用 MTS,您只需简单的将您的脚本和组件声明为“需要事务”并让 MTS 处理事务的一致性。事务处理只适用于数据库访问;MTS 不能对文件系统或其他的非事务性资源的更改进行恢复操作。应用程序所访问的数据库必须为 MTS 所支持。目前,MTS 支持 SQL Server 及任何支持 XA 协议(由 X/Open 协会制定)的服务器。MTS 将继续扩展对其他数据库的支持。

事务不能跨越多个 ASP 页。如果一个事务需要来自多个组件的对象,则须将使用这些对象的操作组合在一个 ASP 页中。例如,假定有一个组件用于更新工资单数据库,还有一个组件用于更新人力资源数据库中的员工记录。为了记录一个员工的新的工资信息,您需要编写这样一个脚本,该脚本在一个事务环境中调用这两个组件,一个用于更新工资单数据库,另一个用于更新人力资源数据库中的员工等级。

声明事务性脚本

在将一个页声明为事务性时,此页中的任何脚本命令和对象都运行在同一个事务环境中。Transaction Server 处理生成事务的细节并决定事务成功(提交)或失败(终止)。要将某个页声明为事务性,可在页首添加 @TRANSACTION 指令:

value 参数可以是下列之一:

值 意义

Requires_New 启动一个新的事务。

Required 启动一个新的事务。

Supported 不启动事务。

Not_Supported 不启动事务。

@TRANSACTION 指令必须在一页中的第一行,否则将产生错误。必须将该指令添加到需要在事务下运行的每一页中。当脚本处理结束时,当前事务即告结束。

大多数应用程序只有一些特定的操作需要事务环境。例如,一个航空公司的站点可能只需要事务性脚本处理购票和安排座位,而其他所有脚本则无须事务环境即可安全运行。因为事务只须用于需要事务处理的页即可,不要将应用程序的 Global.asa 文件声明为事务性。

如果事务被终止,Transaction Server 将恢复对支持事务的资源的任何更改。目前,仅数据库服务器完全支持事务,因为数据库中的数据对于企业应用是最为关键的。Transaction Server 不对硬盘上的文件、会话和应用程序的变量、集合等的改变进行恢复。然而您可以如下文主题所述,通过编写事务事件来编写恢复变量和集合的脚本。在某些时候,您的脚本也可以显式的提交或终止一个事务,如向文件写数据失败时。

提交或终止脚本

因为 Transaction Server 跟踪事务处理,所以它决定事务是完全成功还是失败。脚本可以通过调用 ObjectContext.SetAbort 显式地声明终止一个事务。 例如,当一个事务在从一个组件收到错误消息、违反商业规范时(例如,帐户余额小于 0)或读写文件等非事务性操作失败时,脚本就需要终止该事务。如果页在事务完成之前超时,也必须终止事务。

编写事务事件

脚本本身不能决定事务是成功还是失败。但是,可以编写提交或终止事务时被调用的事件。例如,假设有一个确认银行帐户的脚本,并且您需要针对事务的不同状态将不同的页返回给用户,那么就可以使用 OnTransactionCommit 和 OnTransactionAbort 事件来编写对用户的不同响应。

Welcome to the online banking service

 

Thank you. Your transaction is being processed.

"

Response.Write ""

Response.Write "Thank you. Your account has been credited."

Response.Write ""

Response.Write ""

Response.Flush()

end sub

%>

"

Response.Write ""

Response.Write "We are unable to complete your transaction."

Response.Write ""

Response.Write ""

Response.Flush()

End sub

%>

在 MTS 资源管理器中登记一个组件

为了参与一个事务,组件必须在 MTS 包中登记,而且必须被配置为需要事务。例如,如果您的脚本是通过调用两个组件来处理订单的,一个更新库存数据库,另一个更新付款数据库。那么,这两个组件就要在同一个事务环境中运行。Transaction Server 保证如果任意一个组件失败,那么将不会有数据库被更新。某些组件不需要事务;例如,Ad Rotator 组件。

注册和配置事务性组件可使用 MTS 资源管理器。必须将事务的属性设置为需要事务或需要新事务。事务组件必须在 MTS 包中注册。不要将组件放在 IIS 内部进程包中,而应该创建自己的包。通常,应将所有的组件放在一个组件库中。组件库的组件可被多个 ASP 应用程序使用并以 ASP 应用程序进程运行。使用 MTS 资源管理器可创建新的包并将包的 Activation 属性设置为 Library。

也可以在 Server 包中注册事务性组件。Server 包通常以服务器上的一个独立的进程运行。如果希望使用基于职能组的安全性检查或希望您的组件可被远程计算机上的应用程序访问,可对事务性组件使用 Server 包。

要使用 MTS 资源管理器,必须安装 Microsoft Transaction Server。有关注册组件和选择包类型的详细信息,请参阅 创建 MTS 包。

对象作用域

一般情况下,不要将从 MTS 组件中创建的对象存储在 ASP Application 或 Session 对象中。 MTS 对象在事务完成后消失。因为 Session 对象和 Application 对象是为在不同 ASP 页之间使用的对象实例设计的,所以不要用它们保存在事务结束时即被释放的对象。

ASP 脚本是已声名的事务的根,即起始点。任何事务性 ASP 页所使用的 MTS 对象都被认为是事务的一部分。当事务完成后,在页中使用的 MTS 对象将消失,其中包括存储在 Session 或 Application 对象中的对象。在此之后,从另一个事务性页中调用会话作用域或应用程序作用域对象的尝试都将失败。

事务排队

从一个远程服务器对数据库的更新可能因为网络延迟或故障而导致事务延迟或终止。因为事务的所有部分都必须提交,所以应用程序将可能挂起,等待远程服务器的提交或终止消息,也可能由于无法发送数据库更新而导致事务被放弃。

对于必须同时完成的更新,正确的做法是在事务的所有参与者都能够提交之前,终止事务或推迟完成事务。例如,航空公司的定票程序应该同时完成对客户的银行帐号计入借方和对航空公司的银行帐户计入贷方。如果一个更新属于事务整体的一部分,但可能晚于其他更新,您可能不希望让客户等待整个更新过程的完成。例如,机票预定事务可能也要向食品供应商发送食品订单或更新客户的旅程津贴。这些操作虽然也必须完成,但可以晚一些。

Microsoft Message Queue Server 使您能够将一个或一组更新捆绑到一个事务性消息中送给远程服务器。Message Queue Server 保证更新将被发送给远程服务器,即使目前网络不可用。您的应用将收到一个提交消息,从而可以继续处理事务。

有关在 ASP 应用程序中使用消息队列的示例,请参阅 开发人员范例。要查看这些示例,必须安装 SDK 文档。

有关 Microsoft Message Queue Server 的详细信息,请参阅 Microsoft Message Queue Server。

 

--------------------------------------------------------------------------------

模块 1:创建 ASP 页

请选择本课的脚本语言

在本模块中,通过创建自己的 ASP 页(.asp 文件),您将学习一些 ASP 的基本知识。在这些课程中用到的示例文件,可以在 localhost Web 服务器的 Tutorial 目录 (C:\WINNT\Help\iis\htm\tutorial) 中找到。请将您创建的文件也保存到 Tutorial 目录中。

要点 要保存并查看您在本模块中的工作结果,必须在 localhost Web 服务器上对 /iishelp/iis/htm/tutorial 虚拟目录具有“写 (Write)”和“改编 Web 服务器 (Script Web server)”权限,当然必须已经安装了 Active Server Pages。详细信息,请参阅 设置 Web 服务器权限。

第一课:创建一个简单的 ASP 页

学习 ASP 页的最佳途径是动手编写自己的 ASP 页。创建 ASP 页其实很简单,只要使用文本编辑器将脚本命令插入到 HTML 页中就行了。将这个主页以 .asp 为文件扩展名保存,ASP 服务器就知道处理其中的脚本命令了。若要查看脚本的结果,只要使用 HTTP 协议在 Web 浏览器中请求查看该页就行了。也就是键入 http://localhost/iishelp/iis/htm/tutorial/filename.asp。 在本课中,您将创建流行的“Hello World!”脚本,方法是从教程中将 HTML 和 ASP 脚本命令复制到文本编辑器中。当您在文本编辑器中保存文件后,就能用浏览器查看脚本的输出效果了。

下面的 HTML 创建一个简单的主页,其中只有以大字体显示的文字“Hello World!”:

Hello World!

如果您想将这段文字重复几次,并且每次字体越来越大。一种方法是重复字体标记和 HTML 文本,每次重复分别给出不同的字体大小。当浏览器打开这个 HTML 页的时候,这行文字将被显示好几次。

另一种方法是,使用 ASP 来生成相同的内容,不过方式将更加灵活。

创建并保存主页

启动文本编辑器(如“记事本”)或字处理软件(如 Microsoft? Word)。在屏幕上调整一下编辑器窗口和浏览器窗口,以便能够同时看到它们。

将下列 HTML 标记复制并粘贴到文件的开头:

注意 第一个标记是一个特殊的 ASP 标记,用来将您的默认脚本语言设置为 VBScript。一定要将该标记添加到您所有 .asp 文件的第一行。

 

将文件以 Hello.asp 保存到 localhost Web 服务器的 Tutorial 目录 (C:\WINNT\Help\iis\htm\tutorial) 中。如果您使用的是字处理软件(包括“写字板”),请确保以纯文本方式保存该文件。ASP 页必须以 .asp 作后缀才能正常工作。

如果在此之前,另一个用户已经创建了 Hello.asp 文件并且学完了教程的这一部分,您就可以覆盖旧的 Hello.asp 文件了。

 

在 标记后另起新行,将下列脚本命令复制并粘贴过去:

脚本命令用 符号括起来,这两个符号通常叫做 起止符)。起止符中的文字将作为脚本命令处理。右侧起止符以后的任何文字都将作为 HTML 文本显示在浏览器中。上面这段脚本命令开始了一个 VBScript 循环,用于控制显示“Hello World”的次数。循环的第一次,计数器变量 (i) 被设置为 3。循环的第二次,计数器被设置为 4。循环将继续下去,直到计数器大于 7 为止。

按下回车键,然后复制并粘贴下列行:

>

在每次循环中,字体大小都设置为计数器变量 (i) 的当前值。因此,文字第一次显示的时候,字体大小是 3。第二次,字体大小是 4。最后一次,字体大小是 7。注意脚本命令是可以包含在 HTML 标记中的。

按下回车键,然后复制并粘贴下列行:

Hello World!

VBScript 的 Next 命令重复循环,直到计数器大于 7 为止。

完整的 Hello.asp 文件还必须包含以下文字:

>

Hello World!

保存文件。注意要以纯文本格式保存,并且文件名后缀必须是 .asp。

在某些文本编辑器中,当您在“保存”对话框中选择“纯文本”格式时,编辑器会自动将文件名后缀更改为 .txt。如果出现了这种情况,需要先将 .txt 后缀改为 .asp,然后再单击“保存”按钮。

退出文本编辑器。因为当 HTML 页被文本编辑器打开时,浏览器可能无法再访问它。

若要查看您的工作成果,请将您的浏览器导向 http://localhost/iishelp/iis/htm/tutorial/hello.asp。(此后若要返回本教程,只要在浏览器中单击“上一页”或“Back”按钮即可。)

您将看到一个主页显示了 5 次“Hello World”,每次的字体都越来越大。

 

祝贺您!您已经完成了您的第一个 ASP 主页。正象您已经学过的内容一样,创建 ASP 主页的过程就是如此简单。您可以使用任何文本编辑器来创建 HTML 内容,将 ASP 脚本命令写在

起止符之间,然后将文件以 .asp 后缀名保存。若要测试 ASP 页并看一看结果,只要在浏览器中请求该主页即可(若该主页已经被打开,只要刷新即可)。

第二课: 创建 HTML 表格

Intranet 和 Internet 服务器应用程序的一个常用功能,是处理浏览器提交的表格。以前,您需要编一个程序来处理表格提交的数据。有了 ASP,您可以将 VBScript 脚本直接嵌入到 HTML 文件中来处理表格。ASP 服务器将处理脚本命令并将结果返回给浏览器。

在本课中,您将创建一个 ASP 主页,用来处理用户通过 HTML 表格提交的数据。

若要查看 .asp 文件是如何工作的,请首先填写下面的表格。使用 Tab 键可以在表格中移动。然后单击 提交 按钮,将您的数据发送到 Web 服务器并交给 ASP 处理。

 

--------------------------------------------------------------------------------

表格样本

请提供下列信息,然后单击“提交”:

 

名字:

姓氏:

称呼: 先生 女士

 

创建表格

我们已经创建了一个表格来询问用户信息,您可以在 Tutorial 目录 (/iishelp/iis/htm/tutorial) 下的 Form.htm 文件中找到它:

Order

示范订购表格

请提供以下信息,然后单击“提交”:

姓氏:

名称:

称谓: 先生

女士

象所有 HTML 表格一样,这个表格将数据按变量和数值成对发送到 Web 服务器。例如,用户在“名”文字框中键入的内容将赋值给变量“fname”。ASP 提供内建的对象,您能够使用这些对象来访问表格提供的变量的名称和数值。

创建 ASP 响应页

现在要学习的内容是如何处理 Web 服务器从 HTML 表格收到的数据。在本课中,我们已经创建了一个 .asp 文件 Response.asp,它将处理并显示从 Form.asp 收到的数据,不过需要您添加一些额外的脚本命令才行。

使用您的文本编辑器,打开 localhost Web 服务器 Tutorial 目录 (C:\WINNT\Help\iis\htm\tutorial) 下的 Response.asp 文件。

查找文字“Define Scripting Language”,将以下脚本复制并粘贴到这一行下面:

请记住将这个标记作为第一行脚本添加到您的 .asp 文件中,这样 Web 服务器才知道您的脚本是用哪种语言编写的。

 

现在查找文字“Tutorial Lesson”,将以下脚本复制并粘贴到找到的行后面:

先生

女士

如果在此以前,另一个用户已经学完了教程的这一部分,那么这些脚本就已经存在了。用复制的脚本覆盖已有的脚本,或者将未使用过的 Response.asp 从 Template 目录 (C:\WINNT\Help\iis\htm\tutorial\template) 复制到 Tutorial 目录中。

 

VBScript 语句 If...Then..Else 语句将依据“称谓”的值执行 3 种不同的操作。如果称谓是 mr,将称用户为“先生”。如果称谓是 ms,将称用户为“女士”。否则,将称用户的全名。使用表达式 可以显示变量的值。

 

 

如果需要当用户没有选择称谓时显示全名,请将以下脚本复制并粘贴到在第 3 步插入的行之后:

再说一遍,如果在此以前,另一个用户已经学完了教程的这一部分,则这些脚本就已经存在了。请用复制的脚本覆盖已有的脚本,或者将未使用过的 Response.asp 从 Template 目录( C:\WINNT\Help\iis\htm\tutorial\template) 复制到 Tutorial 目录中。

 

其中的“并”号 (&) 将变量的值合并到一个字符串中。最后的 End If 语句 表明条件语句结束了。

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页



打印本文 打印本文  关闭窗口 关闭窗口