- 打印本文 关闭窗口
- ASP中文简明教程
- 作者:佚名 文章来源:网络 点击数: 更新时间:2005/9/18 18:18:51
- 中声明变量,请用 Dim、 Public 或 Private 语句。例如:
可以在需要显式声明变量的 .asp 文件中用 VBScript Option Explicit 语句。Option Explicit 必须在任何一个 ASP 指令之后及任何一个 HTML 文本或脚本命令之前出现。该语句仅影响用 VBScript 书写的 ASP 命令,而不会影响 JScript 命令。
关于这些命令的详细信息,请参阅 VBScript 语言参考。
JScript
Microsoft JScript 仅当变量为本地过程变量时才需声明,但在使用所有变量前声明它们是一种好的脚本书写习惯。要声明一个变量,请使用 var 语句。例如:
有关 var 语句的详细信息,请参阅 JScript 语言参考。
变量作用域
变量的作用域即生命期,决定哪些脚本命令可访问变量。在过程内部声明的变量具有局部作用域。每执行一次过程,变量就被创建然后消亡。而过程外部的任何命令都不能访问它。在过程外部声明的变量具有全局作用域,其值能被 ASP 页上的任何脚本命令访问和修改。
声明变量时,局部变量和全局变量可以有相同的名称。而改变其中一个的值并不会改变另一个的值。如果没有声明变量,则可能不小心会改变一个全局变量的值。例如,以下脚本命令返回值 1,虽然有两个名为 Y 变量:
由于变量没有显式声明,以下的脚本命令将返回 2。当过程调用将 Y 设置为 2 时,脚本引擎认为该过程是要修改全局变量:
养成显式声明所有变量的编程习惯可以避免许多问题。尤其在当您用 #include 语句将文件包含进 ASP 主页时,就显得更为重要。一个独立文件中被包含的脚本是被当作整个包含它的文件的一部分来处理的。用不同的名称来命名主脚本和被包含脚本中用到的变量,这容易被遗忘,除非声明变量。
为变量赋予会话或应用程序作用域
全局变量仅在单个 ASP 页中可用,要使它在单个 ASP 页之外可用,就必须为变量赋予会话或应用程序作用域。会话作用域变量对一个用户所请求的 ASP 应用程序中的所有页都是可用的。应用程序作用域变量也如此。对单个用户来说,会话变量是存储信息的最佳途径,例如,首选项、用户名或用户标识。对于一个特殊应用程序的所有用户,应用程序作用域是存储信息的最佳途径,例如,应用程序特定的问候语或应用程序所需的初始值。
ASP 提供两个内建对象来让您存储变量:Session 对象和 Application 对象。
您也可以创建具有会话或应用程序作用域的对象实例。详细信息,请参阅 设置对象作用域。
会话作用域
要为变量赋予会话作用域,将该变量存储到 Session 对象中即可,方法是为该对象的已命名条目指派一个值。例如,以下命令将两个新的变量存储到 Session 对象中。
要 Session 对象中检索信息,可以用输出指令 (
可在 Session 对象中存储用户首选项,然后就可以访问这些首选项,从而决定将哪一页返回给用户。例如,您可以允许用户在应用程序的第一页指定纯文本内容,然后将这一选择应用到用户在该应用程序中访问的所有后续页。
This is the text version of the page.
This is the multimedia version of the page.
应用程序作用域
要为变量赋予应用程序作用域,将该变量存储到 Application 对象中即可,方法是为该对象的已命名条目指派一个值。例如,以下命令将一个应用程序特定的问候语存储到Application 对象中:
要从 Application 对象中检索信息,可以使用 ASP 输出指令 (
使用常量
常量是用来代替一个数或字符串的名称。一些随 ASP 提供的基本组件,例如 ActiveX Data Objects (ADO),定义了您在脚本中可以使用的常量。组件可在一个组件类型库中声明常量,组件类型库是一个包含 ActiveX 组件所支持的对象和类型的信息的文件。一旦在 Global.asa 文件中声明了一个类型库,您就可以在该应用程序的任意页中使用已定义的常量。
可在 Global.asa 中用 标记为应用程序声明类型库。例如,要声明 ADO 类型库,可用以下语句:
这样,您就可以在与 Global.asa 文件相同的应用程序的中使用 ADO 常量。在下面的示例中,adOpenKeyset 和 adLockOptimistic 是 ADO 常量:
'Create and Open Recordset Object
Set RsCustomerList = Server.CreateObject("ADODB.Recordset")
RsCustomerList.ActiveConnection = OBJdbConnection
RsCustomerList.CursorType = adOpenKeyset
RsCustomerList.LockType = adLockOptimistic
有关 标记的参考信息,请参阅 TypeLibrary 声明。
在以前版本的 ASP 中,一些组件在文件中提供常量定义,每个使用那些组件的 ASP 文件必须包含该文件。用 #include 指令来包含常量定义的用法仍被支持,但使用类型库通常更方便并且能使脚本更易于升级。在以后版本的 ASP 中,组件可能将不再提供常量定义文件。
您可以定义自己的常量。在 VBScript 中,用 Const 语句,在 JScript 中,用 var 语句。如果在多个 ASP 页中使用常量,可在独立的文件中放置常量,然后将其包含进每一个使用该常量的 ASP 文件中去。
ASP 内建对象
Active Server Pages 提供内建对象,这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息(如用户首选项)。本文简要说明每一个对象。有关每个对象的详细信息,请参阅 内建对象参考。
Application 对象
可以使用 Application 对象使给定应用程序的所有用户共享信息。
Request 对象
可以使用 Request 对象访问任何用 HTTP 请求传递的信息,包括从 HTML 表格用 POST 方法或 GET 方法传递的参数、cookie 和用户认证。Request 对象使您能够访问发送给服务器的二进制数据,如上载的文件。
Response 对象
可以使用 Response 对象控制发送给用户的信息。包括直接发送信息给浏览器、重定向浏览器到另一个 URL 或设置 cookie 的值。
Server 对象
Server 对象提供对服务器上的方法和属性进行的访问。最常用的方法是创建 ActiveX 组件的实例 (Server.CreateObject)。其他方法用于将 URL 或 HTML 编码成字符串,将虚拟路径映射到物理路径以及设置脚本的超时期限。
Session 对象
可以使用 Session 对象存储特定的用户会话所需的信息。当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除;而用户在应用程序中访问页时,这些变量始终存在。也可以使用 Session 方法显式地结束一个会话和设置空闲会话的超时期限。
ObjectContext 对象
可以使用 ObjectContext 对象提交或撤消由 ASP 脚本初始化的事务。
Application 对象
集合:
Contents
StaticObjects
方法:
Lock
Unlock
事件:
Application_OnEnd
Application_OnStart
ObjectContext 对象
方法:
SetAbort
SetComplete
事件:
OnTransactionAbort
OnTransactionCommit
Request 对象
集合:
ClientCertificate
Cookies
Form
QueryString
ServerVariables
属性:
TotalBytes
方法:
BinaryRead
Response 对象
集合:
Cookies
属性:
Buffer
CacheControl
Charset
ContentType
Expires
ExpiresAsolute
IsClientConnected
PICS
Status
方法:
AddHeader
AppendToLog
BinaryWrite
Clear
End
Flush
Redirect
Write
Server 对象
属性:
ScriptTimeout
方法:
CreateObject
HTMLEncode
MapPath
URLEncode
Session 对象
集合:
Contents
StaticObjects
属性:
CodePage
LCID
SessionID
Timeout
方法:
Abandon
事件:
Session_OnEnd
Session_OnStart
---------------------------------------------------------------------------
ActiveX 组件
本部分概述了 Active Server Pages(ASP)中的 ActiveX 组件。有关这些组件的完整介绍及其对象、属性和方法的列表,请参阅 可安装的 ASP 组件。
ActiveX 组件作为基于 Web 的应用程序部分在 Web 服务器上运行。组件提供了应用程序的主要功能(如访问数据库),这样就不必创建或重新创建执行这些任务的代码。
数据库访问
可以使用 Database Access 组件 在应用程序中访问数据库。然后可以显示表的整个内容、允许用户构造查询以及在 Web 页执行其他一些数据库查询。
Ad Rotator
可以使用 Ad Rotator 组件 来交替显示图像,并提供从显示的图形到另一个 URL 的链接。在文本文件中保存广告列表;Ad Rotator 组件依照在数据文件中的指令来显示它们。
Content Rotator
Content Rotator 组件 在 Web 页上自动循环 HTML 内容字符串。每次用户请求 Web 页时,Content Rotator 组件基于 Content Schedule 文件中指定的信息显示新的 HTML 内容字符串。
由于内容字符串可以包含 HTML 标记,就可以显示 HTML 能够表示的任何内容类型:文本、图形或超文本链接。例如,可以使用该组件在每日牌价或超文本链接中循环,或者在每次打开 Web 页时,改变文本和背景的颜色。
Browser Capabilities
通过使用 Browser Capabilities 组件,可以基于浏览器的功能剪裁发送到该浏览器的内容。
File Access
File Access 组件 提供可用于在计算机文件系统中检索和修改文件的对象。
Content Linking
Content Linking 组件使在应用程序中提供 .asp 文件的逻辑导航变得简单易行。不用在许多 .asp 文件中维护 URL 引用,而只需在易于编辑的文本文件中指定 .asp 文件的次序组织。
Collaboration Data Objects for Windows NT Server
Collaboration Data Objects for NTS 组件 提供 Web 应用程序所使用的邮件对象。这个库使您能够简单快捷地在应用程序上添加收发邮件的功能。您可以创建可编程邮件对象,然后利用它们的属性和方法来满足应用程序的需要。
MyInfo、Status、System 和 Tools
MyInfo、Status、System 和 Tools 组件为在 Macintosh 上和在运行 Microsoft Windows 的计算机上开发的应用程序提供兼容性。
MyInfo 组件跟踪 Web 站点所有者的个人信息,如经营 Web 站点的组织名称和地址及 Web 站点的设置,还有 Web 站点是否有 guest book。
Status 组件跟踪 Web 站点的信息,如访问者的数量以及 HTTP 连接的个数。
System 组件创建包含服务器状态信息的 status 对象。当前该服务器状态只在 Personal Web Server for Macintosh 上可用。
Tools 组件提供了生成随机数、检查文件是否存在或处理 HTML 表格的方法。
Page Counter
Page Counter 组件 统计并显示 Web 页被请求的次数。以一定的时间间隔,将捕获的数字写入到文本文件中,这样服务器关闭后,数据也不会丢失。
Permission Checker
Permission Checker 组件测试 Web 用户对某文件或某页的访问权。可以使用 Permission Checker 组件为不同类型的用户定制基于 ASP 的页。例如,如果 Web 页包含超文本链接,就可以使用 Permission Checker 组件测试用户对相应 Web 页的访问权限并忽略用户无权访问的页或使这些链接失效。
向浏览器发送内容
在处理 ASP 脚本时,任何没有包含在 ASP 定界符或 标记中的文本或图形都将被简单地返回给浏览器。可以通过使用 Response 对象显示地把内容发送给浏览器。
发送内容
要将内容从 ASP 定界符内部或过程发送给浏览器,可以使用 Response 对象的 Write 方法。例如,下面的语句可以根据用户是否访问过此页而发送不同的问候语:
Welcome to the Overview Page"
Else
Response.Write "Welcome Back to the Overview Page"
End If
%>
在过程外部,不必使用 Response.Write 将内容送回用户。不在脚本定界符内部的内容被直接发送给浏览器,浏览器将其格式化和显示。例如,下面的脚本过程与上面的脚本输出相同:
Welcome to the Overview Page.
Welcome Back to the Overview Page.
当您只需要将输出返回一次或很方便地向现有 HTML 文本中加入语句时,可使用混合脚本命令和 HTML。当您不想用定界符分隔一条语句或当您想创建返回给浏览器的字符串时,可使用 Response.Write。例如,可构建一个文本的字符串,用从一个 HTML 表送回的值创建表格的一行:
Response.Write "" & Request.Form("FirstName") _
& "" & Request.Form("LastName") & ""
Request.Form 返回从 HTML 表格(参阅 使用 HTML 表格)发送的值。(&) 字符是 VBScript 字符串连接字符。
设置内容的类型
当 Web 服务器将文件返回给浏览器时,会同时告诉浏览器文件中包含的内容的类型。这使浏览器能够决定是否它能自己显示文件或必须调用另一个应用程序。例如,如果网络服务器返回 Microsoft Excel 表格,则浏览器必须调用 Microsoft Excel 的副本显示此页。Web 服务器通过将文件的扩展名映射到 MIME 类型表来识别文件类型。
可以使用 Response 对象的 ContentType 属性为发送给用户的内容设置 HTTP 内容类型字符串。例如,下面的命令为通道定义设置内容类型:
有关通道的详细信息,请参阅本主题中的“创建动态通道”。
其他的通用内容类型是 text/plain(用于作为文本内容返回而不是已解释的 HTML 语句)、text/gif(用于 GIF 图像)和 video/quicktime(用于 Apple QuickTime? 格式的电影)。一套标准的 MIME 类型已经定义,另外,Web 服务器或 Web 浏览器都支持 MIME 类型。要想查看您的 Microsoft Web 服务器支持哪些内容类型,可使用 Internet 服务管理器打开您的 Web 站点的属性页,单击“HTTP 标题”选项卡,然后单击“文件类型”选项卡。
重定向浏览器
用 Redirect 方法可将浏览器重定向到另一个 URL,而不是将内容发送给用户。例如,如果您想确认用户是否已从主页进入了您的应用程序,以便能收到一个客户 ID,则可以检验他们是否有客户 ID 号;如果没有,就可以将其重定向到主页。
除非缓冲区已经打开,否则,在任何内容或标题返回给浏览器之前,您必须重定向浏览器。将 Response.Redirect 语句放在页的顶部和 标记之前可确保没有任何内容返回给浏览器。如果在返回给浏览器的内容或标题后使用 Response.Redirect,将看到一个错误信息。
如果在页的中间使用 Response.Redirect,请将其与 Response.Buffer 属性一起使用,下面的部分将进行解释。
缓冲内容
默认情况下,Web 服务器返回 HTML 和在处理 ASP 页时的脚本处理结果。但是,您可以设置 Response 对象的 Buffer 属性以便在向用户发送任何内容之前,先处理页上的所有的服务器脚本命令。
可以使用缓冲技术来确定在页处理过程中的某个点,而您并不想将该点之前的内容发送给用户。也可以用 Response 对象的 Redirect 方法将用户重定向到另一页,或者用 Response 对象的 Clear 方法清除缓冲区并将不同的内容发送给用户。下面的例子使用了以上两种方法。
tag.
Response.Buffer = True %>
.
.
.
也可以使用 Response.Buffer 避免 Web 服务器在脚本修改 HTTP 标题之前将其返回。有些属性和方法,例如 Response.Expires 和 Response.Redirect 可修改 HTTP 标题。
当在脚本中设置 Buffer 属性并且没有调用 Flush 方法时,服务器将保持用户发出的 Keep-Alive 请求。养成这样的脚本编写习惯有益于提高服务器的性能,因为,服务器不必为每一个用户请求创建新的连接(假定服务器、用户和任何代理服务器都支持 Keep-Alive 要求)。但是,这种方法的一个潜在的不利因素是:在用户处理完当前的 asp 文件的所有的脚本之前,缓冲区不显示任何响应给用户。对于较长的和较复杂的脚本,用户可能要被迫等待很长一段时间才能看到这一页。
默认情况下,缓冲区对于 ASP 应用程序是关闭的。可以使用 Internet 服务管理器为整个 ASP 应用程序打开缓冲区。详细信息,请参阅 配置 ASP 应用程序。
允许代理服务器缓存页
通过代理服务器,应用程序可以发送页给用户。代理服务器 代替用户浏览器从 Web 站点请求网页。代理服务器缓存 HTML 页以便相同页的重复请求能够快速有效地返回给浏览器。代理服务器执行请求并缓存网页,并减轻网络和 Web 服务器的负荷。
尽管缓存对 HTML 页都能很好运行,但对包含动态生成信息的 ASP 页则不尽人意。例如,报告股市行情或显示大量业务的存货清单需要提供即时信息。一小时前的信息对目前来讲是很不准确的。如果应用程序返回个人的信息,例如,自定义的主页,希望用户不能看到另一个用户的个人信息。
默认情况下,ASP 命
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
- 打印本文 关闭窗口