1.声明变量: <% dim name name="Donald Duck" response.write("My name is: " & name) %> 2.声明数组: <% Dim fname(5),i fname(0) = "George" fname(1) = "John" fname(2) = "Thomas" fname(3) = "James" fname(4) = "Adrew" fname(5) = "Martin"
For i = 0 to 5 response.write(fname(i) & "
") Next %> 3.循环生成 HTML 标题: <% dim i for i=1 to 6 response.write("
response.write("
" & now()) response.write(" (Beijing Time)
") If h<12 then response.write("Good Morning!") else response.write("Good day!") end if %> 5.使用JS手成基于时间的问候语: <%@ language="javascript" %> <% var d=new Date() var h=d.getHours()Response.Write("
") Response.Write(d + " (Beijing Time)") Response.Write("
") if (h<12) { Response.Write("Good Morning!") } else { Response.Write("Good day!") } %>变量的生存期 在子程序外声明的变量可被 ASP 文件中的任何脚本访问和修改。 在子程序中声明的变量只有当子程序每次执行时才会被创建和撤销。子程序外的脚本无法访问和修改该变量。 如需声明供多个 ASP 文件使用的变量,请将变量声明为 session 变量或者 application 变量。
Session 变量 Session 变量用于存储单一用户的信息,并且对一个应用程序中的所有页面均有效。存储于 session 中的典型数据是姓名、id 或参数。 Application 变量 Application 变量同样对一个应用程序中的所有页面均有效。Application 变量用于存储一个特定的应用程序中所有用户的信息。
6.调用使用 VBScript 的子程序
<% sub vbproc(num1,num2) response.write(num1*num2) end sub %>
您可以像这样调用一个程序:
结果:<%call vbproc(3,4)%>
或者,像这样:
结果:<%vbproc 3,4%>
6.调用使用JavaScript的子程序: <%@ language="javascript" %>
<% function jsproc(num1,num2) { Response.Write(num1*num2) } %>
结果:<%jsproc(3,4)%>
7.调用使用 VBScript 和 JavaScript 的子程序
<% sub vbproc(num1,num2) Response.Write(num1*num2) end sub %>
结果:<%call vbproc(3,4)%>
结果:<%call jsproc(3,4)%>
8.JS与VBScript的区别:
子程序 ASP 源代码可包含子程序和函数:
<% sub vbproc(num1,num2) response.write(num1*num2) end sub %>
Result: <%call vbproc(3,4)%>
将 <%@ language="language" %> 这一行写到 标签的上面,就可以使用另外一种脚本语言来编写子程序或者函数: <%@ language="javascript" %>
<% function jsproc(num1,num2) { Response.Write(num1*num2) } %>
Result: <%jsproc(3,4)%>
VBScript 与 JavaScript 之间的差异 当从一个用 VBScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,可以使用关键词 "call",后面跟着子程序名称。假如子程序需要参数,当使用关键词 "call" 时必须使用括号包围参数。假如省略 "call",参数则不必由括号包围。假如子程序没有参数,那么括号则是可选项。 当从一个用 JavaScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,必须在子程序名后使用括号。
9.使用 method="get" 的表单。 如何使用 Request.QueryString 命令与用户进行交互。
<% dim fname fname=Request.QueryString("fname") If fname<>"" Then Response.Write("你好!" & fname & "!") Response.Write("今天过得怎么样?") End If %> 10.使用 method="post" 的表单 如何使用 Request.Form 命令与用户进行交互。 <% dim fname fname=Request.Form("fname") If fname<>"" Then Response.Write("您好!" & fname & "!
") Response.Write("今天过得怎么样?") End If %> 11.使用单选按钮的表单 如何使用 Request.Form 通过单选按钮与用户进行交互。 <% dim cars cars=Request.Form("cars") %> <% if cars<>"" then Response.Write("
您喜欢的汽车是" & cars & "
") end if %>用户输入 Request 对象可用于从表单取回用户信息。 表单实例:
用户输入的信息可通过两种方式取回:Request.QueryString 或 Request.Form。Request.QueryString Request.QueryString 命令用于搜集使用 method="get" 的表单中的值。使用 GET 方法从表单传送的信息对所有的用户都是可见的(出现在浏览器的地址栏),并且对所发送信息的量也有限制。 如果用户在上面的表单实例中输入 "Bill" 和 "Gates",发送至服务器的 URL 会类似这样: http://www.w3school.com.cn/simpleform.asp?fname=Bill&lname=Gates 假设 ASP 文件 "simpleform.asp" 包含下面的代码:
Welcome <% response.write(request.querystring("fname")) response.write(" " & request.querystring("lname")) %> 浏览器将显示如下: Welcome Bill GatesRequest.Form Request.Form 命令用于搜集使用 "post" 方法的表单中的值。使用 POST 方法从表单传送的信息对用户是不可见的,并且对所发送信息的量也没有限制。 如果用户在上面的表单实例中输入 "Bill" 和 "Gates",发送至服务器的 URL 会类似这样: http://www.w3school.com.cn/simpleform.asp 假设 ASP 文件 "simpleform.asp" 包含下面的代码:
Welcome <% response.write(request.form("fname")) response.write(" " & request.form("lname")) %> 浏览器将显示如下: Welcome Bill Gates表单验证 只要有可能,就应该对用户输入的数据进行验证(通过客户端的脚本)。浏览器端的验证速度更快,并可以减少服务器的负载。 如果用户数据会输入到数据库中,那么你应该考虑使用服务器端的验证。有一种在服务器端验证表单的好的方式,就是将(验证过的)表单传回表单页面,而不是转至不同的页面。用户随后就可以在同一个页面中得到错误的信息。这样做的话,用户就更容易发现错误了。
什么是 Cookie?
cookie 常用来对用户进行识别。cookie 是一种服务器留在用户电脑中的小文件。每当同一台电脑通过浏览器请求页面时,这台电脑也会发送 cookie。通过 ASP,您能够创建并取回 cookie 的值。 12.Cookie的使用 如何创建 cookie? "Response.Cookies" 命令用于创建 cookie。 注意:Response.Cookies 命令必须位于 标签之前。
在下面的例子中,我们会创建一个名为 "firstname" 的 cookie,并向其赋值 "Alex": <% Response.Cookies("firstname")="Alex" %> 向 cookie 分配属性也是可以的,比如设置 cookie 的失效时间: <% Response.Cookies("firstname")="Alex" Response.Cookies("firstname").Expires=#May 10,2020# %>
如何取回 cookie 的值? "Request.Cookies" 命令用于取回 cookie 的值。 在下面的例子中,我们取回了名为 "firstname" 的 cookie 的值,并把值显示到了页面上: <% fname=Request.Cookies("firstname") response.write("Firstname=" & fname) %> 输出: Firstname=Alex
带有键的 cookie 如果一个 cookie 包含多个值的一个集合,我们就可以说 cookie 拥有键(Keys)。 在下面的例子中,我们会创建一个名为 "user" 的 cookie 集。"user" cookie 拥有包含用户信息的键: <% Response.Cookies("user")("firstname")="John" Response.Cookies("user")("lastname")="Adams" Response.Cookies("user")("country")="UK" Response.Cookies("user")("age")="25" %>
读取所有的 cookie 请阅读下面的代码: <% Response.Cookies("firstname")="Alex" Response.Cookies("user")("firstname")="John" Response.Cookies("user")("lastname")="Adams" Response.Cookies("user")("country")="UK" Response.Cookies("user")("age")="25" %> 假设您的服务器将所有的这些 cookie 传给了某个用户。
现在,我们需要读取这些 cookie。下面的例子向您展示如何做到这一点(请注意,下面的代码会使用 HasKeys 检查 cookie 是否拥有键):
<% dim x,y
for each x in Request.Cookies response.write("
") if Request.Cookies(x).HasKeys then for each y in Request.Cookies(x) response.write(x & ":" & y & "=" & Request.Cookies(x)(y)) response.write("
") next else Response.Write(x & "=" & Request.Cookies(x) & "
") end if response.write "
输出: firstname=Alex
user:firstname=John user:lastname=Adams user:country=UK user:age=25
如何应对不支持 cookie 的浏览器? 如果您的应用程序需要和不支持 cookie 的浏览器打交道,那么您不得不使用其他的办法在您的应用程序中的页面之间传递信息。这里有两种办法:
1. 向 URL 添加参数 您可以向 URL 添加参数: Go to Welcome Page 然后在类似于下面这个 "welcome.asp" 文件中取回这些值: <% fname=Request.querystring("fname") lname=Request.querystring("lname") response.write("
Hello " & fname & " " & lname & "!
") response.write("Welcome to my Web site!
") %> 2. 使用表单 您还可以使用表单。当用户点击提交按钮时,表单会把用户输入的数据提交给 "welcome.asp" : 然后在 "welcome.asp" 文件中取回这些值,就像这样: <% fname=Request.form("fname") lname=Request.form("lname") response.write("Hello " & fname & " " & lname & "!
") response.write("Welcome to my Web site!
") %>13.Session的使用:
Session 对象用于存储用户的信息。存储于 session 对象中的变量持有单一用户的信息,并且对于一个应用程序中的所有页面都是可用的。
Session 对象 当您操作某个应用程序时,您打开它,做些改变,然后将它关闭。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。但是在因特网上有一个问题:由于 HTTP 地址无法存留状态,web 服务器并不知道您是谁以及您做了什么。 ASP 通过为每位用户创建一个唯一的 cookie 的方式解决了这个问题。cookie 被传送至客户端,它含有可识别用户的信息。这种接口被称作 Session 对象。 Session 对象用于存储关于用户的信息,或者为一个用户的 session 更改设置。存储于 session 对象中的变量存有单一用户的信息,并且对于应用程序中的所有页面都是可用的。存储于 session 对象中的信息通常是 name、id 以及参数。服务器会为每个新的用户创建一个新的 Session,并在 session 到期时撤销掉这个 Session 对象。
Session 何时开始? Session 开始于: ?当某个新用户请求了一个 ASP 文件,并且 Global.asa 文件引用了 Session_OnStart 子程序时; ?当某个值存储在 Session 变量中时; ?当某个用户请求了一个 ASP 文件,并且 Global.asa 使用
Session 何时结束? 假如用户没有在规定的时间内在应用程序中请求或者刷新页面,session 就会结束。默认值为 20 分钟。 如果您希望将超时的时间间隔设置得更长或更短,可以设置 Timeout 属性。
下面的例子设置了 5 分钟的超时时间间隔: <% Session.Timeout=5 %> 要立即结束 session,可使用 Abandon 方法: <% Session.Abandon %> 注意:使用 session 时主要的问题是它们该在何时结束。我们不会知道用户最近的请求是否是最后的请求。因此我们不清楚该让 session“ 存活”多久。为某个空闲的 session 等待太久会耗尽服务器的资源。然而假如 session 被过早地删除,那么用户就不得不一遍又一遍地重新开始,这是因为服务器已经删除了所有的信息。寻找合适的超时间隔时间是很困难的。 提示:如果您正在使用 session 变量,请不要在其中存储大量的数据。
存储和取回 session 变量 Session 对象最大的优点是可在其中存储变量,以供后续的网页读取,其应用范围是很广的。 下面的例子把 "Donald Duck" 赋值给名为 username 的 session 变量,并把 "50" 赋值给名为 age 的 session 变量: <% Session("username")="Donald Duck" Session("age")=50 %> 一旦值被存入 session 变量,它就能被 ASP 应用程序中的任何页面使用: Welcome <%Response.Write(Session("username"))%> 上面这行程序返回的结果是: "Welcome Donald Duck"。 也可以在 session 对象中保存用户参数,然后通过访问这些参数来决定向用户返回什么页面。 下面的例子规定,假如用户使用低显示器分辨率,则返回纯文本版本的页面: <%If Session("screenres")="low" Then%> This is the text version of the page <%Else%> This is the multimedia version of the page <%End If%> 移除 session 变量 contents 集合包含所有的 session 变量。 可通过 remove 方法来移除 session 变量。 在下面的例子中,假如 session 变量 "age" 的值小于 18,则移除 session 变量 "sale": <% If Session.Contents("age")<18 then Session.Contents.Remove("sale") End If %> 如需移除 session 中的所有变量,请使用 RemoveAll 方法: <% Session.Contents.RemoveAll() %>
遍历 contents 集合 contents 集合包含所有的 session 变量。可通过遍历 contents 集合,来查看其中存储的变量: <% Session("username")="Donald Duck" Session("age")=50
dim i For Each i in Session.Contents Response.Write(i & "
") Next %> 结果: username age 如果需要了解 contents 集合中的项目数量,可使用 count 属性: <% dim i dim j j=Session.Contents.Count Response.Write("Session variables: " & j) For i=1 to j Response.Write(Session.Contents(i) & "
") Next %> 结果: Session variables: 2 Donald Duck 50
遍历 StaticObjects 集合 可通过循环 StaticObjects 集合,来查看存储在 session 对象中所有对象的值: <% dim i For Each i in Session.StaticObjects Response.Write(i & "
") Next %>
ASP Application 对象
在一起协同工作以完成某项任务的一组 ASP 文件称作应用程序(application)。ASP 中的 Application 对象用于将这些文件捆绑在一起。
Application 对象 web 上的一个应用程序可以是一组 ASP 文件。这些 ASP 文件一起协同工作来完成某项任务。ASP 中的 Application 对象用来把这些文件捆绑在一起。 Application 对象用于存储和访问来自任何页面的变量,类似于 session 对象。不同之处在于,所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。 Application 对象存有会被应用程序中的许多页面使用的信息(比如数据库连接信息)。这意味着可以从任何的页面访问这些信息。同时也意味着你可在一个地点改变这些信息,然后这些改变会自动反映在所有的页面上。
存储和取回 Application 变量 Application 变量可被应用程序中的任何页面访问和改变。 可以像这样在 "Global.asa" 中创建 Application 变量:
Sub Application_OnStart application("vartime")="" application("users")=1 End Sub
在上面的例子中,我们创建了两个 Application 变量:"vartime" 和 "users"。 可以像这样访问 Application 变量的值: There are <% Response.Write(Application("users")) %> active connections.
遍历 Contents 集合 Contents 集合包含着所有的 application 变量。我们可以通过对 contents 集合进行遍历,来查看其中存储的变量: <% dim i For Each i in Application.Contents Response.Write(i & "
") Next %> 如果你不清楚 contents 集中的项目数量,可使用 count 属性: <% dim i dim j j=Application.Contents.Count For i=1 to j Response.Write(Application.Contents(i) & "
") Next %>
遍历 StaticObjects 集合 可通过循环 StaticObjects 集合,来查看所有存储于 Application 对象中的对象的值: <% dim i For Each i in Application.StaticObjects Response.Write(i & "
") Next %>
锁定和解锁 我们可以使用 "Lock" 方法来锁定应用程序。当应用程序锁定后,用户们就无法改变 Application 变量了(除了正在访问 Application 变量的用户)。我们也可使用 "Unlock" 方法来对应用程序进行解锁。这个方法会移除对 Application 变量的锁定: <% Application.Lock 'do some application object operations Application.Unlock %>
ASP 文件引用
#include 指令用于在多重页面上创建需重复使用的函数、页眉、页脚或者其他元素等。
#include 指令 通过使用 #include 指令,我们可以在服务器执行 ASP 文件之前,把另一个ASP文件插入这个文件中。#include 命令用于在多个页面上创建需要重复使用的函数、页眉、页脚或者其他元素等。
如何使用 #include 指令
这里有一个名为 "mypage.asp" 的文件:
Words of Wisdom:
The time is:
这是 "wisdom.inc" 文件: "One should never increase, beyond what is necessary, the number of entities required to explain anything." 这是 "time.inc" 文件: <% Response.Write(Time) %> 在浏览器中查看的源代码应该类似这样:Words of Wisdom:
"One should never increase, beyond what is necessary, the number of entities required to explain anything."
The time is:
11:33:42 AM
Including 文件的语法:
如需在 ASP 中引用文件,请把 #include 命令置于注释标签之中: 或者: 关键词 Virtual
关键词 virtual 指示路径以虚拟目录开始。
如果 "header.inc" 文件位于虚拟目录 /html 中,下面这行代码会插入文件 "header.inc" 中的内容: 关键词 File
关键词 File 指示一个相对的路径。相对路径起始于含有引用文件的目录。
假设文件位于 html 文件夹的子文件夹 headers 中,下面这段代码可引用 "header.inc" 文件的内容: 注意:被引用文件的路径是相对于引用文件的。假如包含 #include 声明的文件不在 html 目录中,这个声明就不会起效。
您也可以使用关键词 file 和语法 (..\) 来引用上级目录中的文件。
提示和注释
在上面的一节中,我们使用 ".inc" 来作为被引用文件的后缀。注意:假如用户尝试直接浏览 INC 文件,这个文件中内容就会暴露。假如被引用的文件中的内容涉及机密,那么最好还是使用 "asp" 作为后缀。ASP 文件中的源代码被编译后是不可见的。被引用的文件也可引用其他文件,同时一个 ASP 文件可以对同一个文件引用多次。
重要事项:在脚本执行前,被引用的文件就会被处理和插入。
下面的代码无法执行,这是由于 ASP 会在为变量赋值之前执行 #include 命令: <% fname="header.inc" %> 不能在脚本分隔符之间包含文件引用: <% For i = 1 To n Next %> 但是这段脚本可以工作: <% For i = 1 to n %> <% Next %>
ASP Global.asa 文件
Global.asa 文件是一个可选的文件,它可包含可被 ASP 应用程序中每个页面访问的对象、变量以及方法的声明。
Global.asa 文件 Global.asa 文件是一个可选的文件,它可包含可被 ASP 应用程序中每个页面访问的对象、变量以及方法的声明。所有合法的浏览器脚本都能在 Global.asa 中使用。
Global.asa 文件可包含下列内容: ?Application 事件 ?Session 事件 ?
Global.asa 中的事件
在 Global.asa 中,我们可以告知 application 和 session 对象在启动和结束时做什么事情。完成这项任务的代码被放置在事件操作器中。Global.asa 文件能包含四种类型的事件:
Application_OnStart - 此事件会在首位用户从 ASP 应用程序调用第一个页面时发生。此事件会在 web 服务器重起或者 Global.asa 文件被编辑之后发生。"Session_OnStart" 事件会在此事件发生之后立即发生。 Session_OnStart - 此事件会在每当新用户请求他或她的在 ASP 应用程序中的首个页面时发生。 Session_OnEnd - 此事件会在每当用户结束 session 时发生。在规定的时间(默认的事件为 20 分钟)内如果没有页面被请求,session 就会结束。 Application_OnEnd - 此事件会在最后一位用户结束其 session 之后发生。典型的情况是,此事件会在 Web 服务器停止时发生。此子程序用于在应用程序停止后清除设置,比如删除记录或者向文本文件写信息。
Global.asa 文件可能类似这样:
sub Application_OnStart 'some code end sub
sub Application_OnEnd 'some code end sub
sub Session_OnStart 'some code end sub
sub Session_OnEnd 'some code end sub
注释:由于无法使用 ASP 的脚本分隔符 (<% 和 %>) 在 Global.asa 文件中插入脚本,我们需使用 HTML 的 Global.asa 也可用于控制页面访问。 下面的例子展示如何把每位新的访问者重定向到另一个页面,在这个例子中会定向到 "newpage.asp" 这个页面: 我们还可以在 Global.asa 中包含函数。 在下面的例子中,当 Web 服务器启动时,Application_OnStart 子例程也会启动。随后,Application_OnStart 子例程会调用另一个名为 "getcustomers" 的子例程。"getcustomers" 子例程会打开一个数据库,然后从 "customers" 表中取回一个记录集。此记录集会赋值给一个数组,在不查询数据库的情况下,任何 ASP 页面都能够访问这个数组:
sub Application_OnStart getcustomers end sub
sub getcustomers set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs=conn.execute("select name from customers") Application("customers")=rs.GetRows rs.Close conn.Close end sub
Global.asa 实例 在这个例子中,我们要创建一个可计算当前访客的 Global.asa 文件。 Application_OnStart 设置当服务器启动时,Application 变量 "visitors" 的值为 0。 每当有新用户访问时,Session_OnStart 子例程就会给变量 "visitors" 加 1。 每当 Session_OnEnd 子例程被触发时,此子例程就会从变量 "visitors" 减 1。
Global.asa 文件:
Sub Application_OnStart Application("visitors")=0 End Sub
Sub Session_OnStart Application.Lock Application("visitors")=Application("visitors")+1 Application.UnLock End Sub
Sub Session_OnEnd Application.Lock Application("visitors")=Application("visitors")-1 Application.UnLock End Sub
此 ASP 文件会显示当前用户的数目:
There are <%response.write(Application("visitors"))%> online now!
ASP 使用 CDOSYS 发送电子邮件CDOSYS 是 ASP 中的内置组件。此组建用于通过 ASP 来发送电子邮件。
使用 CDOSYS 发送电子邮件
CDO (Collaboration Data Objects) 是一项微软的技术,设计目的是用来简化通信程序的创建。
CDOSYS 是 ASP 中的内置组件。我们会向您展示如何使用该组件来发送电子邮件。
CDONTs 怎么样?
微软已经在 Windows 2000、Windows XP 以及 Windows 2003 中淘汰了 CDONTs。如果您还在应用程序中使用 CDONTs,就需要更新代码,并使用新的 CDO 技术。
使用 CDOSYS 的实例
发送电子邮件: <% Set myMail=CreateObject("CDO.Message") myMail.Subject="Sending email with CDO" myMail.From="[email protected]" myMail.To="[email protected]" myMail.TextBody="This is a message." myMail.Send set myMail=nothing %> 发送带有 Bcc 和 CC 字段的文本邮件: <% Set myMail=CreateObject("CDO.Message") myMail.Subject="Sending email with CDO" myMail.From="[email protected]" myMail.To="[email protected]" myMail.Bcc="[email protected]" myMail.Cc="[email protected]" myMail.TextBody="This is a message." myMail.Send set myMail=nothing %> 发送 HTML 邮件: <% Set myMail=CreateObject("CDO.Message") myMail.Subject="Sending email with CDO" myMail.From="[email protected]" myMail.To="[email protected]" myMail.HTMLBody = "
This is a message.
" myMail.Send set myMail=nothing %> 发送一封发送来自网站的网页的 HTML 邮件: <% Set myMail=CreateObject("CDO.Message") myMail.Subject="Sending email with CDO" myMail.From="[email protected]" myMail.To="[email protected]" myMail.CreateMHTMLBody "http://www.w3school.com.cn/asp/" myMail.Send set myMail=nothing %> 发送一封发送来自电脑中文件的网页的 HTML 邮件: <% Set myMail=CreateObject("CDO.Message") myMail.Subject="Sending email with CDO" myMail.From="[email protected]" myMail.To="[email protected]" myMail.CreateMHTMLBody "file://c:/mydocuments/test.htm" myMail.Send set myMail=nothing %> 发送一封带有附件的电子邮件: <% Set myMail=CreateObject("CDO.Message") myMail.Subject="Sending email with CDO" myMail.From="[email protected]" myMail.To="[email protected]" myMail.TextBody="This is a message." myMail.AddAttachment "c:\mydocuments\test.txt" myMail.Send set myMail=nothing %> 使用远程服务器发送一封文本邮件: <% Set myMail=CreateObject("CDO.Message") myMail.Subject="Sending email with CDO" myMail.From="[email protected]" myMail.To="[email protected]" myMail.TextBody="This is a message." myMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2 '远程 SMTP 服务器的 IP 或名称 myMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") _ ="smtp.server.com" '服务器端口 myMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") _ =25 myMail.Configuration.Fields.Update myMail.Send set myMail=nothing %> ASP Response 对象ASP Response 对象用于从服务器向用户发送输出的结果。
实例 使用 ASP 写文本 本例演示如何使用 ASP 来写文本。在 ASP 中使用 HTML 标签格式化文本 本例演示如何使用 ASP 将文本和 HTML 标签结合起来。将用户重定向至不同的 URL 本例演示如何将用户重定向至另一个的 URL。显示随机的链接 本例演示一个超级链接,当您每次载入页面时,它将显示两个链接中的其中一个。控制缓存 本例演示如何控制缓存。清空缓存 本例演示如何清空缓存。在处理过程中终止脚本并返回结果 本例演示如何在处理过程中中断脚本的运行。设置在页面失效前把页面在浏览器中缓存多少分钟 本例演示如何规定页面在失效前在浏览器中的缓存时间。设置页面缓存在浏览器中的失效日期或时间 本例演示如何规定页面在浏览器中的缓存时间日期或时间检查用户是否仍然与服务器相连 本例演示如何检查用户是否已与服务器断开。设置内容类型 本例演示如何规定内容的类型。设置字符集 本例演示如何规定字符集的名称。
Response 对象 ASP Response 对象用于从服务器向用户发送输出的结果。它的集合、属性和方法如下:
集合
集合 描述
Cookies 设置 cookie 的值。假如不存在,就创建 cookie ,然后设置指定的值。
属性
属性 描述
Buffer 规定是否缓存页面的输出。
CacheControl 设置代理服务器是否可以缓存由 ASP 产生的输出。
Charset 将字符集的名称追加到 Response 对象中的 content-type 报头。
ContentType 设置 Response 对象的 HTTP 内容类型。
Expires 设置页面在失效前的浏览器缓存时间(分钟)。
ExpiresAbsolute 设置浏览器上页面缓存失效的日期和时间。
IsClientConnected 指示客户端是否已从服务器断开。
Pics 向 response 报头的 PICS 标志追加值。
Status 规定由服务器返回的状态行的值。
方法
方法 描述
AddHeader 向 HTTP 响应添加新的 HTTP 报头和值。
AppendToLog 向服务器记录项目(server log entry)的末端添加字符串。
BinaryWrite 在没有任何字符转换的情况下直接向输出写数据。
Clear 清除已缓存的 HTML 输出。
End 停止处理脚本,并返回当前的结果。
Flush 立即发送已缓存的 HTML 输出。
Redirect 把用户重定向到另一个 URL。
Write 向输出写指定的字符串。 ASP Request 对象
ASP Request 对象用于从用户那里取得信息。
实例
QueryString 集合 实例 当用户点击链接时发送查询信息 本例演示如何在链接中向页面发送一些额外的查询信息,并在目标页面中取回这些信息(在本例中是同一页面)。对 QueryString 集合的简单应用 本例演示 QueryString 集合如何从表单取回值。此表单使用 GET 方法,这意外着所发送的信息对用户来说是可见的(在地址中)。GET 方法还会限制所发送信息的数量。如何使用从表单传来的信息 本例演示如何使用从表单取回的值。我们会使用 QueryString 集合。此表单使用 GET 方法。来自表单的更多信息 本例演示假如输入字段包含若干相同的名称的话,QueryString 会包含什么内容。它将展示如何把这些相同的名称分隔开来。它也会展示如何使用 count 关键词来对 "name" 属性进行计数。此表单使用 GET 方法。 Form 集合 实例 一个 Form 集合的简单应用 本例演示 Form 集合如何从表单取回值。此表单使用 POST 方法,这意味着发送的信息对用户来说是不可见的,并且对所发送信息的量没有限制(可发送大量的信息)。如何使用来自表单的信息 本例演示如何使用从表单取回的信息。我们使用了 Form 集合。表单使用了 POST 方法。来自表单的更多信息 本例演示假如若干的输入域使用了相同的名称,Form 集合会包含什么信息。它将展示如何把这些相同的名称分割开来。它也会展示如何使用 count 关键词来对 "name" 属性进行计数。此表单使用 POST 方法。带有单选按钮的表单 本例演示如何使用 Form 集合通过单选按钮与用户进行交互。此表单使用 POST 方法。带有复选按钮的表单 本例演示如何使用 Form 集合通过复选按钮与用户进行交互。此表单使用 POST 方法。 其他实例 获取用户信息 如何查明访问者的浏览器类型、IP 地址等信息。获取服务器变量 本例演示如何使用 ServerVariables 集合取得访问者的浏览器类型、IP 地址等信息。创建 welcome cookie 本例演示如何使用 Cookies 集合创建一个欢迎 cookie。探测用户发送的字节总数 本例演示如何使用 TotalBytes 属性来取得用户在 Request 对象中发送的字节总数。
Request 对象 当浏览器向服务器请求页面时,这个行为就被称为一个 request(请求)。 ASP Request 对象用于从用户那里获取信息。它的集合、属性和方法描述如下:
集合
集合 描述
ClientCertificate 包含了存储于客户证书中的域值(field values)
Cookies 包含了 HTTP 请求中发送的所有 cookie 值
Form 包含了使用 post 方法由表单发送的所有的表单(输入)值
QueryString 包含了 HTTP 查询字符串中所有的变量值
ServerVariables 包含了所有的服务器变量值
属性
属性 描述
TotalBytes 返回在请求正文中客户端所发送的字节总数
方法
方法 描述
BinaryRead 取回作为 post 请求的一部分而从客户端送往服务器的数据,并把它存放到一个安全的数组之中。 ASP Application 对象
在一起协同工作以完成某项任务的一组 ASP 文件称为一个应用程序。而 ASP 中的 Application 对象的作用是把这些文件捆绑在一起。
Application 对象
Web 上的一个应用程序可以是一组 ASP 文件。这些 ASP 在一起协同工作来完成一项任务。而 ASP 中的 Application 对象的作用是把这些文件捆绑在一起。
Application 对象用于存储和访问来自任意页面的变量,类似 Session 对象。不同之处在于所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。
Application 对象掌握的信息会被应用程序中的很多页面使用(比如数据库连接信息)。这就意味我们可以从任意页面访问这些信息。也意味着你可以在在一个页面上改变这些信息,随后这些改变会自动地反映到所有的页面中。
Application 对象的集合、方法和事件的描述如下:
集合
集合 描述
Contents 包含所有通过脚本命令追加到应用程序中的项目。
StaticObjects 包含所有使用 HTML 的
方法
方法 描述
Contents.Remove 从 Contents 集合中删除一个项目。
Contents.RemoveAll() 从 Contents 集合中删除所有的项目。
Lock 防止其余的用户修改 Application 对象中的变量。
Unlock 使其他的用户可以修改 Application 对象中的变量(在被 Lock 方法锁定之后)。
事件
事件 描述
Application_OnEnd 当所有用户的 session 都结束,并且应用程序结束时,此事件发生。
Application_OnStart 在首个新的 session 被创建之前(这时 Application 对象被首次引用),此事件会发生。 ASP Session 对象
Session 对象用于存储关于某个用户会话(session)的信息,或者修改相关的设置。存储在 session 对象中的变量掌握着单一用户的信息,同时这些信息对于页面中的所有页面都是可用的。
实例 设置并返回 LCID 本例演示 "LCID" 属性。此属性设置并返回一个指示位置或者地区的整数。类似于日期、时间以及货币等内容都要根据位置或者地区来显示。返回 SessionID 本例演示 "SessionID" 属性。该属性为每位用户返回一个唯一的 id。这个 id 由服务器生成。session 的超时 本例演示 "Timeout" 属性。这个例子设置并返回 session 的超时时间(分钟)。
Session 对象
当您正在操作一个应用程序时,您会启动它,然后做些改变,随后关闭它。这个过程很像一次对话(Session)。计算机知道你是谁。它也知道你在何时启动和关闭这个应用程序。但是在因特网上,问题出现了:web 服务器不知道你是谁,也不知道你做什么,这是由于 HTTP 地址无法留存状态(信息)。
ASP 通过为每个用户创一个唯一的 cookie 解决了这个问题。cookie 发送到服务器,它包含了可识别用户的信息。这个接口称作 Session 对象。
Session 对象用于存储关于某个用户会话(session)的信息,或者修改相关的设置。存储在 session 对象中的变量掌握着单一用户的信息,同时这些信息对于页面中的所有页面都是可用的。存储于 session 变量中的信息通常是 name、id 以及参数等。服务器会为每位新用户创建一个新的 Session 对象,并在 session 到期后撤销这个对象。
下面是 Session 对象的集合、属性、方法以及事件:
集合
集合 描述
Contents 包含所有通过脚本命令追加到 session 的条目。
StaticObjects 包含了所有使用 HTML 的
属性
属性 描述
CodePage 规定显示动态内容时使用的字符集
LCID 设置或返回指定位置或者地区的一个整数。诸如日期、时间以及货币的内容会根据位置或者地区来显示。
SessionID 为每个用户返回一个唯一的 id。此 id 由服务器生成。
Timeout 设置或返回应用程序中的 session 对象的超时时间(分钟)。
方法
方法 描述
Abandon 撤销一个用户的 session。
Contents.Remove 从 Contents 集合删除一个项目。
Contents.RemoveAll() 从 Contents 集合删除全部项目。
事件
事件 描述
Session_OnEnd 当一个会话结束时此事件发生。
Session_OnStart 当一个会话开始时此事件发生。 ASP Server 对象
ASP Server 对象的作用是访问有关服务器的属性和方法。
实例 此文件最后被修改的时间是? 探测文件的最后更新时间。打开并读取某个文本文件 本例会打开文件 "Textfile.txt" 以供读取。自制的点击计数器 本例可从一个文件中读取一个数字,并在此数字上累加 1,然后将此数写回这个文件。
Server 对象 ASP Server 对象的作用是访问有关服务器的属性和方法。其属性和方法描述如下:
属性
属性 描述
ScriptTimeout 设置或返回在一段脚本终止前它所能运行时间(秒)的最大值。
方法
方法 描述
CreateObject 创建对象的实例(instance)。
Execute 从另一个 ASP 文件中执行一个 ASP 文件。
GetLastError() 返回可描述已发生错误状态的 ASPError 对象。
HTMLEncode 将 HTML 编码应用到某个指定的字符串。
MapPath 将一个指定的地址映射到一个物理地址。
Transfer 把一个 ASP 文件中创建的所有信息传输到另一个 ASP 文件。
URLEncode 把 URL 编码规则应用到指定的字符串。 ASP ASPError 对象
ASPError 对象用于显示在 ASP 文件的脚本中发生的任何错误的详细信息。
ASP ASPError 对象 ASP 3.0 提供这个对象,且在 IIS5 及更高版本中可用。 ASPError 对象用于显示在 ASP 文件的脚本中发生的任何错误的详细信息。当 Server.GetLastError 被调用时,ASPError 对象就会被创建,因此只能通过使用 Server.GetLastError 方法来访问错误信息。 ASPError 对象的属性描述如下(所有属性都是可读的): 注释:下面的属性只能 Server.GetLastError() 方法来访问。
属性
属性 描述
ASPCode 返回由 IIS 生成的错误代码。
ASPDescription 返回有关错误的详细信息。(假如错误和 ASP 相关。)
Category 返回错误来源。(是由 ASP、脚本语言还是对象引起的?)
Column 返回在出错文件中的列位置。
Description 返回关于错误的简短描述。
File 返回出错 ASP 文件的文件名。
Line 返回错误所在的行数。
Number 返回关于错误的标准 COM 错误代码。
Source 返回错误所在行的实际的源代码 ASP FileSystemObject 对象
FileSystemObject 对象用于访问服务器上的文件系统。
实例 指定的文件存在吗? 本例演示如何首先创建 FileSystemObject 对象,然后使用 FileExists 方法来探测某文件是否存在。指定的文件夹存在吗? 本例演示如何使用 FolderExists 方法探测某文件夹是否存在。指定的驱动器存在吗? 本例演示如何使用 DriveExists 方法来探测某个驱动器是否存在。取得某个指定驱动器的名称 本例演示如何使用 GetDriveName 方法来取得某个指定的驱动器的名称。取得某个指定路径的父文件夹的名称 本例演示如何使用 GetParentFolderName 方法来取得某个指定的路径的父文件夹的名称。取得文件夹扩展名 本例演示如何使用 GetExtensionName 方法来取得指定的路径中的最后一个成分的文件扩展名。取得文件名 本例演示如何使用 GetFileName 方法来取得指定的路径中的最后一个成分的文件名。取得文件或文件夹的基名称 本例演示如何使用 GetBaseName 方法来返回在指定的路径中文件或者文件夹的基名称。
FileSystemObject 对象
FileSystemObject 对象用于访问服务器上的文件系统。此对象可对文件、文件夹以及目录路径进行操作。也可通过此对象获取文件系统的信息。
下面的代码会创建一个文本文件 (c:\test.txt),然后向这个文件写一些文本: <% dim fs,fname set fs=Server.CreateObject("Scripting.FileSystemObject") set fname=fs.CreateTextFile("c:\test.txt",true) fname.WriteLine("Hello World!") fname.Close set fname=nothing set fs=nothing %> FileSystemObject 对象的属性和方法描述如下:
属性
属性 描述
Drives 返回本地计算机上所有驱动器对象的集合。
方法
方法 描述
BuildPath 将一个名称追加到已有的路径后
CopyFile 从一个位置向另一个位置拷贝一个或多个文件。
CopyFolder 从一个位置向另一个位置拷贝一个或多个文件夹。
CreateFolder 创建新文件夹。
CreateTextFile 创建文本文件,并返回一个 TextStream 对象。
DeleteFile 删除一个或者多个指定的文件。
DeleteFolder 删除一个或者多个指定的文件夹。
DriveExists 检查指定的驱动器是否存在。
FileExists 检查指定的文件是否存在。
FolderExists 检查某个文件夹是否存在。
GetAbsolutePathName 针对指定的路径返回从驱动器根部起始的完整路径。
GetBaseName 返回指定文件或者文件夹的基名称。
GetDrive 返回指定路径中所对应的驱动器的 Drive 对象。
GetDriveName 返回指定的路径的驱动器名称。
GetExtensionName 返回在指定的路径中最后一个成分的文件扩展名。
GetFile 返回一个针对指定路径的 File 对象。
GetFileName 返回在指定的路径中最后一个成分的文件名。
GetFolder 返回一个针对指定路径的 Folder 对象。
GetParentFolderName 返回在指定的路径中最后一个成分的父文件名称。
GetSpecialFolder 返回某些 Windows 的特殊文件夹的路径。
GetTempName 返回一个随机生成的文件或文件夹。
MoveFile 从一个位置向另一个位置移动一个或多个文件。
MoveFolder 从一个位置向另一个位置移动一个或多个文件夹。
OpenTextFile 打开文件,并返回一个用于访问此文件的 TextStream 对象。 ASP TextStream 对象 TextStream 对象 TextStream 对象用于访问文本文件的内容。 下面的代码会创建一个文本文件 (c:\test.txt),然后向此文件写一些文本(变量 f 是 TextStream 对象的一个实例): <% dim fs, f set fs=Server.CreateObject("Scripting.FileSystemObject") set f=fs.CreateTextFile("c:\test.txt",true) f.WriteLine("Hello World!") f.Close set f=nothing set fs=nothing %> 如需创建TextStream对象的一个实例,我们可以使用 FileSystemObject 对象的 CreateTextFile 方法或者 OpenTextFile 方法,也可以使用 File 对象的 OpenAsTextStream 方法。
TextStream 对象的属性和方法描述如下:
属性
属性 描述
AtEndOfLine 在 TextStream 文件中,如果文件指针正好位于行尾标记的前面,那么该属性值返回 True;否则返回 False。
AtEndOfStream 如果文件指针在 TextStream 文件末尾,则该属性值返回 True;否则返回 False。
Column 返回 TextStream 文件中当前字符位置的列号。
Line 返回 TextStream 文件中的当前行号。
方法
方法 描述
Close 关闭一个打开的 TextStream 文件。
Read 从一个 TextStream 文件中读取指定数量的字符并返回结果(得到的字符串)。
ReadAll 读取整个 TextStream 文件并返回结果。
ReadLine 从一个 TextStream 文件读取一整行(到换行符但不包括换行符)并返回结果。
Skip 当读一个 TextStream 文件时跳过指定数量的字符。
SkipLine 当读一个 TextStream 文件时跳过下一行。
Write 写一段指定的文本(字符串)到一个 TextStream 文件。
WriteLine 写入一段指定的文本(字符串)和换行符到一个 TextStream 文件中。
WriteBlankLines 写入指定数量的换行符到一个 TextStream 文件中。 ASP Drive 对象
Drive 对象用于返回关于本地磁盘驱动器或者网络共享驱动器的信息。
实例 取得指定驱动器的可用空间数 本例演示如何首先创建一个 FileSystemObject 对象,然后使用 AvailableSpace 属性来获得指定驱动器的可用空间。取得指定驱动器的剩余空间容量 本例演示如何使用 FreeSpace 空间属性来取得指定驱动器的剩余空间。取得指定驱动器的总容量 本例演示如何使用 TotalSize 属性来获得指定驱动器的总容量。取得指定驱动器的驱动器字母 本例演示如何使用 DriveLetter 属性来获得指定驱动器的驱动器字母。取得指定驱动器的驱动器类型 本例演示如何使用 DriveType 属性来获得指定驱动器的驱动器类型。取得指定驱动器的文件系统信息 本例演示如何使用 FileSystem 来取得指定驱动器的文件系统类型。驱动器是否已就绪? 本例演示如何使用 IsReady 属性来检查指定的驱动器是否已就绪。取得指定驱动器的路径 本例演示如何使用 Path 属性来取得指定驱动器的路径。取得指定驱动器的根文件夹 本例演示如何使用 RootFolder 属性来取得指定驱动器的根文件夹。取得指定驱动器的序列号 本例演示如何使用 Serialnumber 属性来取得指定驱动器的序列号。
Drive 对象 Drive 对象用于返回关于本地磁盘驱动器或者网络共享驱动器的信息。Drive 对象可以返回有关驱动器的文件系统、剩余容量、序列号、卷标名等信息。 注释:无法通过 Drive 对象返回有关驱动器内容的信息。要达到这个目的,请使用 Folder 对象。 如需操作 Drive 对象的相关属性,我们需要创建通过 FileSystemObject 对象来创建 Drive 对象的实例。首先,创建一个 FileSystemObject 对象,然后通过 FileSystemObject 对象的 GetDrive 方法或者 Drives 属性来例示 Drive 对象。 下面的例子使用 FileSystemObject 对象的 GetDrive 方法来例示 Drive 对象,并使用 TotalSize 属性来返回指定驱动器 (c:) 的容量总数(字节): <% Dim fs,d Set fs=Server.CreateObject("Scripting.FileSystemObject") Set d=fs.GetDrive("c:") Response.Write("Drive " & d & ":") Response.Write("Total size in bytes: " & d.TotalSize) set d=nothing set fs=nothing %> 输出:
Drive c: Total size in bytes: 5893563398
Drive 对象的属性
属性 描述
AvailableSpace 向用户返回在指定的驱动器或网络共享驱动器上的可用空间容量。
DriveLetter 返回识别本地驱动器或网络共享驱动器的大写字母。
DriveType 返回指定驱动器的类型。
FileSystem 返回指定驱动器所使用的文件系统类型。
FreeSpace 向用户返回在指定的驱动器或网络共享驱动器上的剩余空间容量。
IsReady 如果指定驱动器已就绪,则返回 true。否则返回 false。
Path 返回其后有一个冒号的大写字母,用来指示指定驱动器的路径名。
RootFolder 返回一个文件夹对象,该文件夹代表指定驱动器的根文件夹。
SerialNumber 返回指定驱动器的序列号。
ShareName 返回指定驱动器的网络共享名。
TotalSize 返回指定的驱动器或网络共享驱动器的总容量
VolumeName 设置或者返回指定驱动器的卷标名 ASP File 对象
File 对象 File 对象用于返回有关指定文件的信息。 如需操作 File 对象的相关属性和方法,我们需要通过 FileSystemObject 来创建 File 对象的实例。首先,创建一个 FileSystemObject 对象,然后通过 FileSystemObject 对象的 GetFile 方法,或者通过 Folder 对象的 Files 属性来例示此 File 对象。 下面的代码使用 FileSystemObject 对象的 GetFile 方法来例示这个 File 对象,并使用 DateCreated 属性来返回指定文件被创建的日期: <% Dim fs,f Set fs=Server.CreateObject("Scripting.FileSystemObject") Set f=fs.GetFile("c:\test.txt") Response.Write("File created: " & f.DateCreated) set f=nothing set fs=nothing %> 输出: File created: 8/8/2008 10:01:19 AM
File 对象的属性和方法
属性
属性 描述
Attributes 设置或返回指定文件的属性。
DateCreated 返回指定文件创建的日期和时间。
DateLastAccessed 返回指定文件最后被访问的日期和时间。
DateLastModified 返回指定文件最后被修改的日期和时间。
Drive 返回指定文件或文件夹所在的驱动器的驱动器字母。
Name 设置或返回指定文件的名称。
ParentFolder 返回指定文件或文件夹的父文件夹对象。
Path 返回指定文件的路径。
ShortName 返回指定文件的短名称(8.3 命名约定)。
ShortPath 返回指定文件的短路径(8.3 命名约定)。
Size 返回指定文件的尺寸(字节)。
Type 返回指定文件的类型。
方法
方法 描述
Copy 把指定文件从一个位置拷贝到另一个位置。
Delete 删除指定文件。
Move 把指定文件从一个位置移动到另一个位置。
OpenAsTextStream 打开指定文件,并返回一个 TextStream 对象以便访问此文件。 ASP Folder 对象
Dictionary 对象
Dictionary 对象用于在结对的名称/值中存储信息((等同于键和项目)。Dictionary 对象看似比数组更为简单,然而,Dictionary 对象却是更令人满意的处理关联数据的解决方案。
比较 Dictionary 和数组: ?键用于识别 Dictionary 对象中的项目 ?无需调用 ReDim 来改变 Dictionary 对象的尺寸 ?当从 Dictionary 删除一个项目时,其余的项目会自动上移 ?Dictionary 不是多维,而数组是 ?Dictionary 与数组相比,有更多的内建对象 ?Dictionary 在频繁地访问随机元素时,比数组工作得更好 ?Dictionary 在根据它们的内容定位项目时,比数组工作得更好 下面的例子创建了一个 Dictionary 对象,并向对象添加了一些键/项目对,然后取回了键 bl 的值: <% Dim d Set d=Server.CreateObject("Scripting.Dictionary") d.Add "re","Red" d.Add "gr","Green" d.Add "bl","Blue" d.Add "pi","Pink" Response.Write("The value of key bl is: " & d.Item("bl")) %> 输出: The value of key bl is: Blue
Dictionary 对象的属性和方法描述如下:
属性
属性 描述
CompareMode 设置或返回用于在 Dictionary 对象中比较键的比较模式。
Count 返回 Dictionary 对象中键/项目对的数目。
Item 设置或返回 Dictionary 对象中一个项目的值。
Key 为 Dictionary 对象中已有的键值设置新的键值。
方法
方法 描述
Add 向 Dictionary 对象添加新的键/项目对。
Exists 返回一个逻辑值,这个值可指示指定的键是否存在于 Dictionary 对象中。
Items 返回 Dictionary 对象中所有项目的一个数组。
Keys 返回 Dictionary 对象中所有键的一个数组。
Remove 从 Dictionary 对象中删除指定的键/项目对。
RemoveAll 删除 Dictionary 对象中所有的键/项目对。