VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > ASP.net 4.0教程 >
  • ASP 简介

ASP 简介
ASP 文件可包含文本、 HTML 标签和脚本。ASP 文件中的脚本可在服务器上执行。
在学习之前,应具备的知识:
在继续学习之前,您需要对以下知识有基本的了解:
    HTML / XHTML    脚本语言,比如 JavaScript 或者 VBScript
如果希望学习上面的项目,请在我们的 首页 访问这些教程。
ASP 是什么?
    ASP 指 Active Server Pages (动态服务器页面)
    ASP 是运行于 IIS 之中的程序
    IIS 指 Internet Information Services (Internet 信息服务)
    IIS 是 Windows 2000 及 Windows 2003 的免费组件
    IIS 同时也是 Windows NT 4.0 的可选组件
    此可选组件可通过因特网下载
    PWS 的体积更小 - 不过拥有 IIS 的完整功能
    PWS 可在 Windows 95/98 的安装 CD 中找到
ASP 兼容性
    ASP 是微软公司推出的一种技术
    运行 IIS,需要 Windows NT 4.0 或更高的版本。
    运行 PWS ,需要 Windows 95 或者更高的版本。
    ChiliASP 是一种在非 Windows 操作系统上运行 ASP 的技术
    InstantASP 是另一种在非 Windows 操作系统上运行 ASP 的技术
ASP 文件是什么?
    ASP 文件和 HTML 文件类似
    ASP 文件可包含文本、HTML、XML 和脚本
    ASP 文件中的脚本可在服务器上执行。
    ASP 文件的扩展名是 ".asp"
ASP 和 HTML 有何不同?
当浏览器请求某个 HTML 文件时,服务器会返回这个文件
而当浏览器请求某个 ASP 文件时,IIS 将这个请求传递至 ASP 引擎。ASP 引擎会逐行地读取这个文件,并执行文件中的脚本。最后,ASP 文件将以纯 HTML 的形式返回到浏览器。
ASP 能为你做什么?
    动态地编辑、改变或者添加页面的任何内容
    对由用户从 HTML 表单提交的查询或者数据作出响应
    访问数据或者数据库,并向浏览器返回结果
    为不同的用户定制网页,提高这些页面的可用性
    用 ASP 替代 CGI 和 Perl 的优势在于它的简易性和速度
    由于 ASP 代码无法从来浏览器端察看,ASP 确保了站点的安全性。
    优秀的 ASP 编程可将网络负载降至最低
重要事项:由于 ASP 在服务器运行,浏览器无需支持客户端脚本就可以显示 ASP 文件!
在您的 PC 上运行 ASP
如果没有一个外部的服务器,你可以在自己的 PC 上运行 ASP 。要做点这一点,你就必须安装微软的 PWS 或者 IIS 。
如何在自己的 PC 上运行 ASP
如果没有一个外部的服务器,你可以在自己的 PC 上运行 ASP。要做点这一点,你就必须安装微软的 PWS(Personal Web Server) 或者 IIS (Internet Information Services)。
假如你希望很好地学习 ASP 的话,我们推荐你至少要使用 Windows 98 的第二版。
如果有可能的,Windows 2000 或者更高的版本是最好的选择(包括Windows XP Professional、Windows Server 2003 或者 windows vista 操作系统)。
如何在 Windows 2000 上安装 IIS 并运行ASP
1.开始按钮 - 设置 - 控制面板
2.在控制面板中选择添加/删除程序
3.在添加/删除程序中选择添加/删除Windows组件
4.在向导窗口中选中 Internet 信息服务,然后点击确定
5.Inetpub 文件夹会在硬盘中被创建
6.打开 Inetpub 文件夹,找到名为 wwwroot 的文件夹
7.在 wwwroot 下创建一个新文件夹,比如 "MyWeb"
8.使用文本编辑器编写几行 ASP 代码,将这个文件取名为 "test1.asp" 保存在 "MyWeb" 文件夹。
9.确保你的服务器正在运行 - 安装程序会在系统托盘创建一个IIS的图标。点击这个图标,然后在出现的新窗口中按开始按钮。
10打开浏览器,在地址栏键入 "http://localhost/MyWeb/test1.asp",就可以看到你的第一个 ASP 页面了。
如何在 Windows XP Professional 上安装 IIS 并运行 ASP
1.在 CD-Rom 驱动器中插入 Windows XP Professional CD-Rom
2.开始菜单,设置,控制面板
3.在控制面板选择添加/删除程序
4.在添加/删除程序中选择添加/删除 Windows 组件
5.在向导窗口中选中 Internet Information Services,然后点击确定
6.Inetpub 文件夹会在硬盘中创建
7.打开 Inetpub 文件夹,找到名为 wwwroot 的文件夹
8.在 wwwroot下创建一个新文件夹,比如 "MyWeb"
9.使用文本编辑器编写几行 ASP 代码,将这个文件取名为 "test1.asp" 保存在 "MyWeb" 文件夹。
10.确保你的服务器正在运行,使用下面的方法确认它的运行状态:进入控制面板,然后是管理工具,然后双击“IIS 管理器”图标。
11.打开浏览器,在地址栏键入 "http://localhost/MyWeb/test1.asp",就可以看到你的第一个 ASP 页面了。
提示:Windows XP Home Edition 无法运行 ASP。
如何在 Windows Server 2003 上安装 IIS 并运行 ASP
1.当你启动 Windows Server 2003 后,会看到服务器管理向导
2.如果向导没有显示,可以打开管理工具,然后选择“配置您的服务器向导”
3.出现提示后,点击下一步
4.随后会出现一个“预备步骤”的提示,点击下一步,随后系统自动搜索已在本机安装了的系统服务组件
5.在随后出现的服务器角色窗口中选择应用程序服务器,然后点击下一步
6.选中启用ASP.NET
7.随后向导会提示这个组件的大概安装过程,请点击下一步
8.现在,向导会请求 Server 2003 CD。请插入CD后继续运行向导。
9.最后,向导会提示“此服务器目前是一台应用程序服务器”。
10.点击完成后,你会发现“应用程序服务器”已在管理你的服务器角色窗口中出现
11.点击“管理此应用程序服务器”会打在应用程序服务器管理控制台(MMC)
12.展开Internet 信息服务 (IIS)管理器,然后展开你的服务器,然后是站点文件夹。
13.你会看到默认的网站,并且它的状态应该是运行中。
14.在Internet 信息服务 (IIS)管理器中点击“Web服务扩展”,你会看到 Active Server Pages 是被禁止的。
15.选中Active Server Pages,然后点击允许按钮,这样 ASP 就被激活了!
如何在老版本的 Windows 操作系统中运行 ASP
如何在 Windows 95 上安装 PWS 并运行 ASP
Windows 95 不包含 PWS!!
要想在 Windows 95 上运行 ASP,就必须从微软的站点下载 “Windows NT 4.0 Option Pack”。
下载"Windows NT 4.0 Option Pack"
如何在 Windows NT 上安装 PWS 并运行 ASP
Windows NT 同样不包含 PWS!!
要想在 Windows NT 上运行 ASP,就必须从微软的站点下载 “Windows NT 4.0 Option Pack”。
下载"Windows NT 4.0 Option Pack"
如何在 Windows 98 上安装 PWS 并运行 ASP
1.打开 Windows 98 CD 上的 Add-ons 文件夹,找到PWS文件夹并运行其中的 setup.exe 文件。
2.安装程序会在硬盘创建一个 Inetpub 文件夹。打开这个文件夹,找到 wwwroot 文件夹。
3.然后在 wwwroot 文件夹下面创建一个新的文件夹,比如 "MyWeb"。
4.使用文本编辑器编写几行 ASP 代码,将这个文件取名为 "test1.asp" 保存在 "MyWeb" 文件夹。
5.确保你的服务器正在运行 - 安装程序会在系统托盘创建一个PWS的图标。点击这个图标,然后在出现的新窗口中按开始按钮。
6.打开浏览器,在地址栏键入 "http://localhost/MyWeb/test1.asp",就可以看到你的第一个 ASP 页面了。
如何在 Windows ME 上安装 PWS 并运行 ASP
Windows ME 同样不包含 PWS!!
阅读微软站点的信息
来自 Bill James 的安装方法。
ASP 语法
在浏览器中通过查看源代码的方式是无法看到 ASP 源代码的,你只能看到由 ASP 文件输出的结果,而那些只是纯粹的 HTML 而已。这是因为,在结果被送回浏览器前,脚本已经在服务器上执行了。
在我们的 ASP 教程中,每个例子都提供隐藏的 ASP 代码。这样会使您更容易理解它们的工作原理。
基本的 ASP 语法规则
通常情况下,ASP 文件包含着 HTML 标签,类似 HTML 文件。不过,ASP 文件也可包含服务器端脚本,这些脚本被 <% 和 %> 包围起来。服务器脚本在服务器端执行,可包含合法的表达式、语句、或者运算符。
向浏览器写输出
response.write 命令用来向浏览器写输出。下面的例子向浏览器传送了一段文本:"Hello World"。
<html>
<body>
<%
response.write("Hello World!")
%>
</body>
</html>
还有一种 response.write 命令的简写方法。下面的例子和上面的例子是等效的:
<html>
<body>
<%="Hello World!"%>
</body>
</html>
VBScript
你可以在 ASP 中使用若干种脚本语言。不过,默认的脚本语言是 VBScript:
<html>
<body>
<%
response.write("Hello World!")
%>
</body>
</html>
上面的例子向文档的 body 部分写入了文本 "Hello World!"。
JavaScript
如果需要使用 JavaScript 作为某个特定页面的默认脚本语言,就必须在页面的顶端插入一行语言设定:
<%@ language="javascript"%>
<html>
<body>
<%
Response.Write("Hello World!")
%>
</body>
</html>
注意:与 VBScript 不同 - JavaScript 对大小写敏感。所以你需要根据 JavaScript 的需要使用不同的大小写字母编写 ASP 代码。
提示:如果您需要了解更多有关 JavaScript 的知识,请学习我们的 JavaScript 教程。
其他的脚本语言
ASP 与 VBScript 和 JScript 的配合是原生性的。如果你需要使用其他语言编写脚本,比如 PERL、REXX 或者 Python,那就必须安装相应的脚本引擎。
重要事项:因为脚本在服务器端执行,所以显示 ASP 文件的浏览器根本无需支持脚本。
 
ASP 变量
变量用于存储信息。
假如在子程序之外声明变量,那么这个变量可被 ASP 文件中的任何脚本改变。假如在子程序中声明变量,那么当子程序每次执行时,它才会被创建和撤销。
 
实例:
声明变量
<html>
<body>
<%
dim name
name="Donald Duck"
response.write("My name is: " & name)
%>
</body>
</html>

 
变量用于存储信息。本例演示如何声明变量,为变量赋值,并在程序中使用这个变量
声明数组
<html>
<body>
 
<%
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) & "<br />")
Next
%>
 
</body>
</html>
上面代码:to是到的意思。For是对于的意思。

 
数组用于存储一系列相关的数据项目。本例演示如何声明一个存储名字的数组。
循环生成 HTML 标题
<html>
<body>
 
<%
dim i
for i=1 to 6
   response.write("<h" & i & ">Header " & i & "</h" & i & ">")
next
%>
 
</body>
</html>
上面代码:&是有输出,浏览器上不显出的。&像JS的“+”一样。

 
如何循环生成 6 个不同的 HTML 标题。
使用 Vbscript 制作基于时间的问候语
<html>
<body>
<%
dim h
h=hour(now())
 
response.write("<p>" & now())
response.write(" (Beijing Time) </p>")
If h<12 then
   response.write("Good Morning!")
else
   response.write("Good day!")
end if
%>
</body>
</html>
上面代码:dim是变量的定义。response是响应。write是写的意思。hour()是小时。now()是现在的。them是则的。

 
本例将根据服务器时间向用户显示不同的消息。
使用 JavaScript 制作基于时间的问候语
<%@ language="javascript" %>
<html>
<body>
<%
var d=new Date()
var h=d.getHours()
 
Response.Write("<p>")
Response.Write(d + " (Beijing Time)")
Response.Write("</p>")
if (h<12)
   {
   Response.Write("Good Morning!")
   }
else
   {
   Response.Write("Good day!")
   }
%>
</body>
</html>

 
本例同上,只是语法不同而已。
变量的生存期
在子程序外声明的变量可被 ASP 文件中的任何脚本访问和修改。
在子程序中声明的变量只有当子程序每次执行时才会被创建和撤销。子程序外的脚本无法访问和修改该变量。
如需声明供多个 ASP 文件使用的变量,请将变量声明为 session 变量或者 application 变量。
Session 变量
Session 变量用于存储单一用户的信息,并且对一个应用程序中的所有页面均有效。存储于 session 中的典型数据是姓名、id 或参数。
Application 变量
Application 变量同样对一个应用程序中的所有页面均有效。Application 变量用于存储一个特定的应用程序中所有用户的信息。
 
 
ASP 子程序
在 ASP 中,你可通过 VBScript 和其他方式调用子程序。
实例:
调用使用 VBScript 的子程序
<html>
<head>
<%
sub vbproc(num1,num2)
response.write(num1*num2)
end sub
%>
</head>
 
<body>
<p>您可以像这样调用一个程序:</p>
<p>结果:<%call vbproc(3,4)%></p>
 
<p>或者,像这样:</p>
<p>结果:<%vbproc 3,4%></p>
</body>
</html>

 
如何从 ASP 调用以 VBScript 编写的子程序。
调用使用 JavaScript 的子程序
<%@ language="javascript" %>
<html>
<head>
<%
function jsproc(num1,num2)
{
Response.Write(num1*num2)
}
%>
</head>
 
<body>
<p>
结果:<%jsproc(3,4)%>
</p>
</body>
</html>

 
如何从 ASP 调用以 JavaScript 编写的子程序。
调用使用 VBScript 和 JavaScript 的子程序
<html>
<head>
<%
sub vbproc(num1,num2)
Response.Write(num1*num2)
end sub
%>
<script  language="javascript" runat="server">
function jsproc(num1,num2)
{
Response.Write(num1*num2)
}
</script>
</head>
 
<body>
<p>结果:<%call vbproc(3,4)%></p>
<p>结果:<%call jsproc(3,4)%></p>
</body>
 
</html>

 
如何在一个 ASP 文件中调用以 VBScript 和 JavaScript 编写的子程序。
子程序
ASP 源代码可包含子程序和函数:
<html>
<head>
<%
sub vbproc(num1,num2)
response.write(num1*num2)
end sub
%>
</head>
 
<body>
<p>Result: <%call vbproc(3,4)%></p>
</body>
 
</html>
将 <%@ language="language" %> 这一行写到 <html> 标签的上面,就可以使用另外一种脚本语言来编写子程序或者函数:
<%@ language="javascript" %>
<html>
<head>
<%
function jsproc(num1,num2)
{
Response.Write(num1*num2)
}
%>
</head>
 
<body>
<p>Result: <%jsproc(3,4)%></p>
</body>
 
</html>
VBScript 与 JavaScript 之间的差异
当从一个用 VBScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,可以使用关键词 "call",后面跟着子程序名称。假如子程序需要参数,当使用关键词 "call" 时必须使用括号包围参数。假如省略 "call",参数则不必由括号包围。假如子程序没有参数,那么括号则是可选项。
当从一个用 JavaScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,必须在子程序名后使用括号。
 
 
ASP 表单和用户输入
Request.QueryString 和 Request.Form 命令可用于从表单取回信息,比如用户的输入。
实例:
使用 method="get" 的表单
<html>
<body>
<form action="/example/aspe/demo_aspe_reqquery.asp" method="get">
您的姓名:<input type="text" name="fname" size="20" />
<input type="submit" value="提交" />
</form>
<%
dim fname
fname=Request.QueryString("fname")
If fname<>"" Then
      Response.Write("你好!" & fname & "!<br />")
      Response.Write("今天过得怎么样?")
End If
%>
</body>
</html>
QuerySrting()j是查询字符串的。text是本文。submit是提交的。Request是请求的。method是模式。get是获得的。
 
 
如何使用 Request.QueryString 命令与用户进行交互。
使用 method="post" 的表单
<html>
<body>
<form action="/example/aspe/demo_aspe_simpleform.asp" method="post">
您的姓名:<input type="text" name="fname" size="20" />
<input type="submit" value="提交" />
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
      Response.Write("您好!" & fname & "!<br />")
      Response.Write("今天过得怎么样?")
End If
%>
</body>
</html>
post是????
 
 
如何使用 Request.Form 命令与用户进行交互。
使用单选按钮的表单
<html>
<%
dim cars
cars=Request.Form("cars")
%>
<body>
<form action="/example/aspe/demo_aspe_radiob.asp" method="post">
<p>请选择您喜欢的汽车:</p>
 
<input type="radio" name="cars"
<%if cars="Volvo" then Response.Write("checked")%>
value="Volvo">Volvo</input>
<br />
<input type="radio" name="cars"
<%if cars="Saab" then Response.Write("checked")%>
value="Saab">Saab</input>
<br />
<input type="radio" name="cars"
<%if cars="BMW" then Response.Write("checked")%>
value="BMW">BMW</input>
<br /><br />
<input type="submit" value="提交" />
</form>
<%
if cars<>"" then
   Response.Write("<p>您喜欢的汽车是" & cars & "</p>")
end if
%>
</body>
</html>
 
 
如何使用 Request.Form 通过单选按钮与用户进行交互。
用户输入
Request 对象可用于从表单取回用户信息。
表单实例:
<form method="get" action="simpleform.asp">
First Name: <input type="text" name="fname" />
<br />
Last Name: <input type="text" name="lname" />
<br /><br />
<input type="submit" value="Submit" />
</form>
用户输入的信息可通过两种方式取回: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" 包含下面的代码:
<body>
Welcome
<%
response.write(request.querystring("fname"))
response.write(" " & request.querystring("lname"))
%>
</body>
浏览器将显示如下:
Welcome Bill Gates
Request.Form
Request.Form 命令用于搜集使用 "post" 方法的表单中的值。使用 POST 方法从表单传送的信息对用户是不可见的,并且对所发送信息的量也没有限制。
如果用户在上面的表单实例中输入 "Bill" 和 "Gates",发送至服务器的 URL 会类似这样:
http://www.w3school.com.cn/simpleform.asp
假设 ASP 文件 "simpleform.asp" 包含下面的代码:
<body>
Welcome
<%
response.write(request.form("fname"))
response.write(" " & request.form("lname"))
%>
</body>
浏览器将显示如下:
Welcome Bill Gates
表单验证
只要有可能,就应该对用户输入的数据进行验证(通过客户端的脚本)。浏览器端的验证速度更快,并可以减少服务器的负载。
如果用户数据会输入到数据库中,那么你应该考虑使用服务器端的验证。有一种在服务器端验证表单的好的方式,就是将(验证过的)表单传回表单页面,而不是转至不同的页面。用户随后就可以在同一个页面中得到错误的信息。这样做的话,用户就更容易发现错误了。
 
 
ASP Cookie
cookie 常用来对用户进行识别。
实例:
Welcome cookie
<%
dim numvisits
response.cookies("NumVisits").Expires=date+365
numvisits=request.cookies("NumVisits")
 
if numvisits="" then
   response.cookies("NumVisits")=1
   response.write("欢迎!这是您第一次访问本页面。")
else
   response.cookies("NumVisits")=numvisits+1
   response.write("之前,您已经访问过本页面 ")
   response.write(numvisits & " 次。")
end if
%>
<html>
<body>
</body>
</html>
 
 
如何创建欢迎 cookie。
什么是 Cookie?
cookie 常用来对用户进行识别。cookie 是一种服务器留在用户电脑中的小文件。每当同一台电脑通过浏览器请求页面时,这台电脑就会发送 cookie。通过 ASP,您能够创建并取回 cookie 的值。
如何创建 cookie?
"Response.Cookies" 命令用于创建 cookie。
注意:Response.Cookies 命令必须位于 <html> 标签之前。
在下面的例子中,我们会创建一个名为 "firstname" 的 cookie,并向其赋值 "Alex":
<%
Response.Cookies("firstname")="Alex"
%>
向 cookie 分配属性也是可以的,比如设置 cookie 的失效时间:
<%
Response.Cookies("firstname")="Alex"
Response.Cookies("firstname").Expires=#May 10,2002#
%>
如何取回 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 是否拥有键):
<html>
<body>
 
<%
dim x,y
 
 for each x in Request.Cookies
  response.write("<p>")
  if Request.Cookies(x).HasKeys then
    for each y in Request.Cookies(x)
      response.write(x & ":" & y & "=" & Request.Cookies(x)(y))
      response.write("<br />")
    next
  else
    Response.Write(x & "=" & Request.Cookies(x) & "<br />")
  end if
  response.write "</p>"
next
%>
 
</body>
</html>
输出:
firstname=Alex
 
user:firstname=John
user:lastname=Adams
user:country=UK
user:age=25
如何应对不支持 cookie 的浏览器?
如果您的应用程序需要和不支持 cookie 的浏览器打交道,那么您不得不使用其他的办法在您的应用程序中的页面之间传递信息。这里有两种办法:
1. 向 URL 添加参数
您可以向 URL 添加参数:
<a href="welcome.asp?fname=John&lname=Adams">
Go to Welcome Page
</a>
然后在类似于下面这个 "welcome.asp" 文件中取回这些值:
<%
fname=Request.querystring("fname")
lname=Request.querystring("lname")
response.write("<p>Hello " & fname & " " & lname & "!</p>")
response.write("<p>Welcome to my Web site!</p>")
%>
2. 使用表单
您还可以使用表单。当用户点击提交按钮时,表单会把用户输入的数据提交给 "welcome.asp" :
<form method="post" action="welcome.asp">
First Name:  <input type="text" name="fname" value="">
Last Name: <input type="text" name="lname" value="">
<input type="submit" value="Submit">
</form>
然后在 "welcome.asp" 文件中取回这些值,就像这样:
<%
fname=Request.form("fname")
lname=Request.form("lname")
response.write("<p>Hello " & fname & " " & lname & "!</p>")
response.write("<p>Welcome to my Web site!</p>")
%>
 
 
ASP 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 使用 <object> 标签通过 session 的 scope 来例示某个对象时;
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 & "<br />")
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) & "<br />")
Next
%>
结果:
Session variables: 2
Donald Duck
50
遍历 StaticObjects 集合
可通过循环 StaticObjects 集合,来查看存储在 session 对象中所有对象的值:
<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>
 
 
ASP Application 对象
在一起协同工作以完成某项任务的一组 ASP 文件称作应用程序(application)。ASP 中的 Application 对象用于将这些文件捆绑在一起。
Application 对象
web 上的一个应用程序可以是一组 ASP 文件。这些 ASP 文件一起协同工作来完成某项任务。ASP 中的 Application 对象用来把这些文件捆绑在一起。
Application 对象用于存储和访问来自任何页面的变量,类似于 session 对象。不同之处在于,所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。
Application 对象握有会被应用程序中的许多页面使用的信息(比如数据库连接信息)。这意味着可以从任何的页面访问这些信息。同时也意味着你可在一个地点改变这些信息,然后这些改变会自动反映在所有的页面上。
存储和取回 Application 变量
Application 变量可被应用程序中的任何页面访问和改变。
可以像这样在 "Global.asa" 中创建 Application 变量:
<script language="vbscript" runat="server">
 
Sub Application_OnStart
application("vartime")=""
application("users")=1
End Sub
 
</script>
在上面的例子中,我们创建了两个 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 & "<br />")
Next
%>
如果你不清楚 contents 集中的项目数量,可使用 count 属性:
<%
dim i
dim j
j=Application.Contents.Count
For i=1 to j
  Response.Write(Application.Contents(i) & "<br />")
Next
%>
遍历 StaticObjects 集合
可通过循环 StaticObjects 集合,来查看所有存储于 Application 对象中的对象的值:
<%
dim i
For Each i in Application.StaticObjects
  Response.Write(i & "<br />")
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" 的文件:
<html>
<body>
<h2>Words of Wisdom:</h2>
<p><!--#include file="wisdom.inc"--></p>
<h2>The time is:</h2>
<p><!--#include file="time.inc"--></p>
</body>
</html>
这是 "wisdom.inc" 文件:
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
这是 "time.inc" 文件:
<%
Response.Write(Time)
%>
在浏览器中查看的源代码应该类似这样:
<html>
<body>
<h2>Words of Wisdom:</h2>
<p>"One should never increase, beyond what is necessary,
the number of entities required to explain anything."</p>
<h2>The time is:</h2>
<p>11:33:42 AM</p>
</body>
</html>
Including 文件的语法:
如需在 ASP 中引用文件,请把 #include 命令置于注释标签之中:
<!--#include virtual="somefilename"-->
或者:
<!--#include file ="somefilename"-->
关键词 Virtual
关键词 virtual 指示路径以虚拟目录开始。
如果名为 "header.inc" 位于名为 /html 的虚拟目录中,下面这行代码会插入文件 "header.inc" 中的内容:
<!-- #include virtual ="/html/header.inc" -->
关键词 File
关键词 File 指示一个相对的路径。相对路径起始于含有引用文件的目录。
假设文件位于 html 文件夹的子文件夹 headers 中,下面这段代码可引用 "header.inc" 文件的内容:
<!-- #include file ="headers\header.inc" -->
注意:被引用文件的路径是相对于引用文件的。假如包含 #include 声明的文件不在 html 目录中,这个声明就不会起效。
您同样可以使用关键词 file 和语法 (..\) 来引用上级目录中的文件。
提示和注释
在上面的一节中,我们使用 ".inc" 来作为被引用文件的后缀。注意:假如用户尝试直接浏览 INC 文件,这个文件中内容就会暴露。假如被引用的文件中的内容涉及机密,那么最好还是使用 "asp" 作为后缀。ASP 文件中的源代码被编译后是不可见的。被引用的文件也可引用其他文件,同时一个 ASP 文件可以对同一个文件引用多次。
重要事项:在脚本执行前,被引用的文件就会被处理和插入。
下面的代码无法执行,这是由于 ASP 会在为变量赋值之前执行 #include 命令:
<%
fname="header.inc"
%>
<!--#include file="<%=fname%>"-->
不能在脚本分隔符之间包含文件引用:
<%
For i = 1 To n
  <!--#include file="count.inc"-->
Next
%>
但是这段脚本可以工作:
<% For i = 1 to n %>
<!--#include file="count.inc" -->
<% Next %>
 
 
ASP Global.asa 文件
Global.asa 文件是一个可选的文件,它可包含可被 ASP 应用程序中每个页面访问的对象、变量以及方法的声明。
Global.asa 文件
Global.asa 文件是一个可选的文件,它可包含可被 ASP 应用程序中每个页面访问的对象、变量以及方法的声明。所有合法的浏览器脚本都能在 Global.asa 中使用。
Global.asa 文件可包含下列内容:
Application 事件
Session 事件
<object> 声明
TypeLibrary 声明
#include 命令
注释:Global.asa 文件须存放于 ASP 应用程序的根目录中,且每个应用程序只能有一个 Global.asa 文件。
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 文件可能类似这样:
<script language="vbscript" runat="server">
 
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
 
</script>
注释:由于无法使用 ASP 的脚本分隔符 (<% 和 %>) 在 Global.asa 文件中插入脚本,我们需使用 HTML 的 <script> 元素。
<object> 声明
可通过使用 <object> 标签在 Global.asa 文件中创建带有 session 或者 application 作用域的对象。
注释:<object> 标签应位于 <script> 标签之外。
语法:
<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
参数    描述
scope   设置对象的作用域(作用范围)(Session 或者 Application)。
id  为对象指定一个唯一的 id。
ProgID 
与 ClassID 关联的 id。ProgID 的格式是:[Vendor.]Component[.Version]。
ProgID 或 ClassID 必需被指定。
ClassID
为 COM 类对象指定唯一的 id。
ProgID 或 ClassID 必需被指定。
实例
第一个实例创建了一个名为 "MyAd" 且使用 ProgID 参数的 session 作用域对象:
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>
第二个实例创建了名为 "MyConnection" 且使用 ClassID 参数的
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>
在此 Global.asa 文件中声明的这些对象可被应用程序中的任何脚本使用。
GLOBAL.ASA:
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>
您可以从 ASP 应用程序中的任意页面引用此 "MyAd" 对象:
某个 .ASP 文件:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
TypeLibrary 声明
TypeLibrary (类型库)是一个容器,其中装有对应于 COM 对象的 DLL 文件。通过在 Global.asa 中包含对 TypeLibrary 的调用,可以访问 COM 对象的常量,同时 ASP 代码也能更好地报告错误。假如您的站点的应用程序依赖于已在类型库中声明过数据类型的 COM 对象,您可以在 Global.asa 中对类型库进行声明。
语法:
<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->
参数    描述
file    规定指向类型库的绝对路径。参数 file 或者 uuid,两者缺一不可。
uuid    规定了针对类型库的唯一的标识符。参数 file 或者 uuid,两者缺一不可。
version 可选。用于选择版本。假如没有找到指定的版本,将使用最接近的版本。
lcid    可选。用于类型库的地区标识符。
错误值
服务器会返回以下的错误消息之一:
错误    代码    描述
ASP 0222    Invalid type library specification
ASP 0223    Type library not found
ASP 0224    Type library cannot be loaded
ASP 0225    Type library cannot be wrapped
注释:METADATA 标签可位于 Global.asa 文件中的任何位置(在 <script> 标签的内外均可)。不过,我们还是推荐将 METADATA 标签放置于 Global.asa 文件的顶部。
限定
关于可以在 Global.asa 文件中引用的内容的限定:
你无法显示 Global.asa 文件中的文本。此文件无法显示信息。
你只能在 Application_OnStart 和 Application_OnEnd 子例程中使用 Server 和 Application 对象。在 Session_OnEnd 子例程中,你可以使用 Server、Application 和 Session 对象。在 Session_OnStart 子例程中,你可使用任何内建的对象。
如何使用子例程
Global.asa 常用于对变量进行初始化。
下面的例子展示如何检测访问者首次到达站点的确切时间。时间存储在名为 "started" 的 Session 对象中,并且 "started" 变量的值可被应用程序中的任何 ASP 页面访问:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>
Global.asa 也可用于控制页面访问。
下面的例子展示如何把每位新的访问者重定向到另一个页面,在这个例子中会定向到 "newpage.asp" 这个页面:
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>
我们还可以在 Global.asa 中包含函数。
在下面的例子中,当 Web 服务器启动时,Application_OnStart 子例程也会启动。随后,Application_OnStart 子例程会调用另一个名为 "getcustomers" 的子例程。"getcustomers" 子例程会打开一个数据库,然后从 "customers" 表中取回一个记录集。此记录集会赋值给一个数组,在不查询数据库的情况下,任何 ASP 页面都能够访问这个数组:
<script language="vbscript" runat="server">
 
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
 
</script>
Global.asa 实例
在这个例子中,我们要创建一个可计算当前访客的 Global.asa 文件。
Application_OnStart 设置当服务器启动时,Application 变量 "visitors" 的值为 0。
每当有新用户访问时,Session_OnStart 子例程就会给变量 "visitors" 加 1。
每当 Session_OnEnd 子例程被触发时,此子例程就会从变量 "visitors" 减 1。
Global.asa 文件:
<script language="vbscript" runat="server">
 
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
 
</script>
此 ASP 文件会显示当前用户的数目:
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>
 
 
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
myMail.Bcc="someoneelse@somedomain.com"
myMail.Cc="someoneelse2@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
myMail.HTMLBody = "<h1>This is a message.</h1>"
myMail.Send
set myMail=nothing
%>
发送一封由网站传送网页的 HTML 邮件:
<%
Set myMail=CreateObject("CDO.Message")
myMail.Subject="Sending email with CDO"
myMail.From="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
myMail.TextBody="This is a message."
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
'Name or IP of remote SMTP server
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
="smtp.server.com"
'Server port
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") _
=25
myMail.Configuration.Fields.Update
myMail.Send
set myMail=nothing
%>
 
 
 
1  ASP 文件可包含文本、 HTML 标签和脚本。ASP 文件中的脚本可在服务器上执行。
在学习之前,应具备的知识:
在继续学习之前,您需要对以下知识有基本的了解:
 
HTML / XHTML
脚本语言,比如 JavaScript 或者 VBScript
如果希望学习上面的项目,请在我们的 首页 访问这些教程。
ASP 是什么?
ASP 指 Active Server Pages (动态服务器页面)
ASP 是运行于 IIS 之中的程序
IIS 指 Internet Information Services (Internet 信息服务)
IIS 是 Windows 2000 及 Windows 2003 的免费组件
IIS 同时也是 Windows NT 4.0 的可选组件
此可选组件可通过因特网下载
PWS 的体积更小 - 不过拥有 IIS 的完整功能
PWS 可在 Windows 95/98 的安装 CD 中找到
ASP 兼容性
ASP 是微软公司推出的一种技术
运行 IIS,需要 Windows NT 4.0 或更高的版本。
运行 PWS ,需要 Windows 95 或者更高的版本。
ChiliASP 是一种在非 Windows 操作系统上运行 ASP 的技术
InstantASP 是另一种在非 Windows 操作系统上运行 ASP 的技术
ASP 文件是什么?
ASP 文件和 HTML 文件类似
ASP 文件可包含文本、HTML、XML 和脚本
ASP 文件中的脚本可在服务器上执行。
ASP 文件的扩展名是 ".asp"
ASP 和 HTML 有何不同?
当浏览器请求某个 HTML 文件时,服务器会返回这个文件
而当浏览器请求某个 ASP 文件时,IIS 将这个请求传递至 ASP 引擎。ASP 引擎会逐行地读取这个文件,并执行文件中的脚本。最后,ASP 文件将以纯 HTML 的形式返回到浏览器。
ASP 能为你做什么?
动态地编辑、改变或者添加页面的任何内容
对由用户从 HTML 表单提交的查询或者数据作出响应
访问数据或者数据库,并向浏览器返回结果
为不同的用户定制网页,提高这些页面的可用性
用 ASP 替代 CGI 和 Perl 的优势在于它的简易性和速度
由于 ASP 代码无法从来浏览器端察看,ASP 确保了站点的安全性。
优秀的 ASP 编程可将网络负载降至最低
重要事项:由于 ASP 在服务器运行,浏览器无需支持客户端脚本就可以显示 ASP 文件!
 
2  如果没有一个外部的服务器,你可以在自己的 PC 上运行 ASP 。要做点这一点,你就必须安装微软的 PWS 或者 IIS 。
如何在自己的 PC 上运行 ASP
如果没有一个外部的服务器,你可以在自己的 PC 上运行 ASP。要做点这一点,你就必须安装微软的 PWS(Personal Web Server) 或者 IIS (Internet Information Services)。
 
假如你希望很好地学习 ASP 的话,我们推荐你至少要使用 Windows 98 的第二版。
 
如果有可能的,Windows 2000 或者更高的版本是最好的选择(包括Windows XP Professional、Windows Server 2003 或者 windows vista 操作系统)。
如何在 Windows 2000 上安装 IIS 并运行ASP
开始按钮 - 设置 - 控制面板
在控制面板中选择添加/删除程序
在添加/删除程序中选择添加/删除Windows组件
在向导窗口中选中 Internet 信息服务,然后点击确定
Inetpub 文件夹会在硬盘中被创建
打开 Inetpub 文件夹,找到名为 wwwroot 的文件夹
在 wwwroot 下创建一个新文件夹,比如 "MyWeb"
使用文本编辑器编写几行 ASP 代码,将这个文件取名为 "test1.asp" 保存在 "MyWeb" 文件夹。
确保你的服务器正在运行 - 安装程序会在系统托盘创建一个IIS的图标。点击这个图标,然后在出现的新窗口中按开始按钮。
打开浏览器,在地址栏键入 "http://localhost/MyWeb/test1.asp",就可以看到你的第一个 ASP 页面了。
如何在 Windows XP Professional 上安装 IIS 并运行 ASP
在 CD-Rom 驱动器中插入 Windows XP Professional CD-Rom
开始菜单,设置,控制面板
在控制面板选择添加/删除程序
在添加/删除程序中选择添加/删除 Windows 组件
在向导窗口中选中 Internet Information Services,然后点击确定
Inetpub 文件夹会在硬盘中创建
打开 Inetpub 文件夹,找到名为 wwwroot 的文件夹
在 wwwroot下创建一个新文件夹,比如 "MyWeb"
使用文本编辑器编写几行 ASP 代码,将这个文件取名为 "test1.asp" 保存在 "MyWeb" 文件夹。
确保你的服务器正在运行,使用下面的方法确认它的运行状态:进入控制面板,然后是管理工具,然后双击“IIS 管理器”图标。
打开浏览器,在地址栏键入 "http://localhost/MyWeb/test1.asp",就可以看到你的第一个 ASP 页面了。
提示:Windows XP Home Edition 无法运行 ASP。
如何在 Windows Server 2003 上安装 IIS 并运行 ASP
当你启动 Windows Server 2003 后,会看到服务器管理向导
如果向导没有显示,可以打开管理工具,然后选择“配置您的服务器向导”
出现提示后,点击下一步
随后会出现一个“预备步骤”的提示,点击下一步,随后系统自动搜索已在本机安装了的系统服务组件
在随后出现的服务器角色窗口中选择应用程序服务器,然后点击下一步
选中启用ASP.NET
随后向导会提示这个组件的大概安装过程,请点击下一步
现在,向导会请求 Server 2003 CD。请插入CD后继续运行向导。
最后,向导会提示“此服务器目前是一台应用程序服务器”。
点击完成后,你会发现“应用程序服务器”已在管理你的服务器角色窗口中出现
点击“管理此应用程序服务器”会打在应用程序服务器管理控制台(MMC)
展开Internet 信息服务 (IIS)管理器,然后展开你的服务器,然后是站点文件夹。
你会看到默认的网站,并且它的状态应该是运行中。
在Internet 信息服务 (IIS)管理器中点击“Web服务扩展”,你会看到 Active Server Pages 是被禁止的。
选中Active Server Pages,然后点击允许按钮,这样 ASP 就被激活了!
如何在老版本的 Windows 操作系统中运行 ASP
如何在 Windows 95 上安装 PWS 并运行 ASP
Windows 95 不包含 PWS!!
 
要想在 Windows 95 上运行 ASP,就必须从微软的站点下载 “Windows NT 4.0 Option Pack”。
 
下载"Windows NT 4.0 Option Pack"
 
如何在 Windows NT 上安装 PWS 并运行 ASP
Windows NT 同样不包含 PWS!!
 
要想在 Windows NT 上运行 ASP,就必须从微软的站点下载 “Windows NT 4.0 Option Pack”。
 
下载"Windows NT 4.0 Option Pack"
 
如何在 Windows 98 上安装 PWS 并运行 ASP
打开 Windows 98 CD 上的 Add-ons 文件夹,找到PWS文件夹并运行其中的 setup.exe 文件。
安装程序会在硬盘创建一个 Inetpub 文件夹。打开这个文件夹,找到 wwwroot 文件夹。
然后在 wwwroot 文件夹下面创建一个新的文件夹,比如 "MyWeb"。
使用文本编辑器编写几行 ASP 代码,将这个文件取名为 "test1.asp" 保存在 "MyWeb" 文件夹。
确保你的服务器正在运行 - 安装程序会在系统托盘创建一个PWS的图标。点击这个图标,然后在出现的新窗口中按开始按钮。
打开浏览器,在地址栏键入 "http://localhost/MyWeb/test1.asp",就可以看到你的第一个 ASP 页面了。
如何在 Windows ME 上安装 PWS 并运行 ASP
Windows ME 同样不包含 PWS!!
 
阅读微软站点的信息
 
来自 Bill James 的安装方法。
 
 
3  在浏览器中通过查看源代码的方式是无法看到 ASP 源代码的,你只能看到由 ASP 文件输出的结果,而那些只是纯粹的 HTML 而已。这是因为,在结果被送回浏览器前,脚本已经在服务器上执行了。
 
在我们的 ASP 教程中,每个例子都提供隐藏的 ASP 代码。这样会使您更容易理解它们的工作原理。
实例:
用 ASP 写文本
如果使用 ASP 生成文本。
向文本添加 HTML
如果同时生成 HTML 标签和纯文本。 基本的 ASP 语法规则
通常情况下,ASP 文件包含着 HTML 标签,类似 HTML 文件。不过,ASP 文件也可包含服务器端脚本,这些脚本被 <% 和 %> 包围起来。服务器脚本在服务器端执行,可包含合法的表达式、语句、或者运算符。
向浏览器写输出
response.write 命令用来向浏览器写输出。下面的例子向浏览器传送了一段文本:"Hello World"。
 
<html>
<body>
<%
response.write("Hello World!")
%>
</body>
</html>还有一种 response.write 命令的简写方法。下面的例子和上面的例子是等效的:
 
<html>
<body>
<%="Hello World!"%>
</body>
</html>VBScript
你可以在 ASP 中使用若干种脚本语言。不过,默认的脚本语言是 VBScript:
 
<html>
<body>
<%
response.write("Hello World!")
%>
</body>
</html>上面的例子向文档的 body 部分写入了文本 "Hello World!"。
JavaScript
如果需要使用 JavaScript 作为某个特定页面的默认脚本语言,就必须在页面的顶端插入一行语言设定:
 
<%@ language="javascript"%>
<html>
<body>
<%
Response.Write("Hello World!")
%>
</body>
</html>注意:与 VBScript 不同 - JavaScript 对大小写敏感。所以你需要根据 JavaScript 的需要使用不同的大小写字母编写 ASP 代码。
 
提示:如果您需要了解更多有关 JavaScript 的知识,请学习我们的 JavaScript 教程。
其他的脚本语言
ASP 与 VBScript 和 JScript 的配合是原生性的。如果你需要使用其他语言编写脚本,比如 PERL、REXX 或者 Python,那就必须安装相应的脚本引擎。
 
重要事项:因为脚本在服务器端执行,所以显示 ASP 文件的浏览器根本无需支持脚本。
 
 
4  变量用于存储信息。
 
假如在子程序之外声明变量,那么这个变量可被 ASP 文件中的任何脚本改变。假如在子程序中声明变量,那么当子程序每次执行时,它才会被创建和撤销。
实例:
声明变量
变量用于存储信息。本例演示如何声明变量,为变量赋值,并在程序中使用这个变量
声明数组
数组用于存储一系列相关的数据项目。本例演示如何声明一个存储名字的数组。
循环生成 HTML 标题
如何循环生成 6 个不同的 HTML 标题。
使用 Vbscript 制作基于时间的问候语
本例将根据服务器时间向用户显示不同的消息。
使用 JavaScript 制作基于时间的问候语
本例同上,只是语法不同而已。 变量的生存期
在子程序外声明的变量可被 ASP 文件中的任何脚本访问和修改。
 
在子程序中声明的变量只有当子程序每次执行时才会被创建和撤销。子程序外的脚本无法访问和修改该变量。
 
如需声明供多个 ASP 文件使用的变量,请将变量声明为 session 变量或者 application 变量。
 
Session 变量
Session 变量用于存储单一用户的信息,并且对一个应用程序中的所有页面均有效。存储于 session 中的典型数据是姓名、id 或参数。
 
Application 变量
Application 变量同样对一个应用程序中的所有页面均有效。Application 变量用于存储一个特定的应用程序中所有用户的信息。
 
 
5  在 ASP 中,你可通过 VBScript 和其他方式调用子程序。
实例:
调用使用 VBScript 的子程序
如何从 ASP 调用以 VBScript 编写的子程序。
调用使用 JavaScript 的子程序
如何从 ASP 调用以 JavaScript 编写的子程序。
调用使用 VBScript 和 JavaScript 的子程序
如何在一个 ASP 文件中调用以 VBScript 和 JavaScript 编写的子程序。 子程序
ASP 源代码可包含子程序和函数:
 
<html>
<head>
<%
sub vbproc(num1,num2)
response.write(num1*num2)
end sub
%>
</head>
 
<body>
<p>Result: <%call vbproc(3,4)%></p>
</body>
 
</html>将 <%@ language="language" %> 这一行写到 <html> 标签的上面,就可以使用另外一种脚本语言来编写子程序或者函数:
 
<%@ language="javascript" %>
<html>
<head>
<%
function jsproc(num1,num2)
{
Response.Write(num1*num2)
}
%>
</head>
 
<body>
<p>Result: <%jsproc(3,4)%></p>
</body>
 
</html>VBScript 与 JavaScript 之间的差异
当从一个用 VBScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,可以使用关键词 "call",后面跟着子程序名称。假如子程序需要参数,当使用关键词 "call" 时必须使用括号包围参数。假如省略 "call",参数则不必由括号包围。假如子程序没有参数,那么括号则是可选项。
 
当从一个用 JavaScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,必须在子程序名后使用括号。
 
 
6  ASP 表单和用户输入
Previous Page Next Page Request.QueryString 和 Request.Form 命令可用于从表单取回信息,比如用户的输入。
实例:
使用 method="get" 的表单
如何使用 Request.QueryString 命令与用户进行交互。
使用 method="post" 的表单
如何使用 Request.Form 命令与用户进行交互。
使用单选按钮的表单
如何使用 Request.Form 通过单选按钮与用户进行交互。 用户输入
Request 对象可用于从表单取回用户信息。
 
表单实例:
<form method="get" action="simpleform.asp">
First Name: <input type="text" name="fname" />
<br />
Last Name: <input type="text" name="lname" />
<br /><br />
<input type="submit" value="Submit" />
</form>用户输入的信息可通过两种方式取回: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" 包含下面的代码:
 
<body>
Welcome
<%
response.write(request.querystring("fname"))
response.write(" " & request.querystring("lname"))
%>
</body>浏览器将显示如下:
 
Welcome Bill GatesRequest.Form
Request.Form 命令用于搜集使用 "post" 方法的表单中的值。使用 POST 方法从表单传送的信息对用户是不可见的,并且对所发送信息的量也没有限制。
 
如果用户在上面的表单实例中输入 "Bill" 和 "Gates",发送至服务器的 URL 会类似这样:
 
http://www.w3school.com.cn/simpleform.asp假设 ASP 文件 "simpleform.asp" 包含下面的代码:
 
<body>
Welcome
<%
response.write(request.form("fname"))
response.write(" " & request.form("lname"))
%>
</body>浏览器将显示如下:
 
Welcome Bill Gates表单验证
只要有可能,就应该对用户输入的数据进行验证(通过客户端的脚本)。浏览器端的验证速度更快,并可以减少服务器的负载。
 
如果用户数据会输入到数据库中,那么你应该考虑使用服务器端的验证。有一种在服务器端验证表单的好的方式,就是将(验证过的)表单传回表单页面,而不是转至不同的页面。用户随后就可以在同一个页面中得到错误的信息。这样做的话,用户就更容易发现错误了。
 
 
7  ASP Cookie
Previous Page Next Page cookie 常用来对用户进行识别。
实例:
Welcome cookie
如何创建欢迎 cookie。 什么是 Cookie?
cookie 常用来对用户进行识别。cookie 是一种服务器留在用户电脑中的小文件。每当同一台电脑通过浏览器请求页面时,这台电脑就会发送 cookie。通过 ASP,您能够创建并取回 cookie 的值。
如何创建 cookie?
"Response.Cookies" 命令用于创建 cookie。
 
注意:Response.Cookies 命令必须位于 <html> 标签之前。
 
在下面的例子中,我们会创建一个名为 "firstname" 的 cookie,并向其赋值 "Alex":
 
<%
Response.Cookies("firstname")="Alex"
%>向 cookie 分配属性也是可以的,比如设置 cookie 的失效时间:
 
<%
Response.Cookies("firstname")="Alex"
Response.Cookies("firstname").Expires=#May 10,2002#
%>如何取回 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 是否拥有键):
 
<html>
<body>
 
<%
dim x,y
 
 for each x in Request.Cookies
  response.write("<p>")
  if Request.Cookies(x).HasKeys then
    for each y in Request.Cookies(x)
      response.write(x & ":" & y & "=" & Request.Cookies(x)(y))
      response.write("<br />")
    next
  else
    Response.Write(x & "=" & Request.Cookies(x) & "<br />")
  end if
  response.write "</p>"
next
%>
 
</body>
</html>输出:
 
firstname=Alex
 
user:firstname=John
user:lastname=Adams
user:country=UK
user:age=25
如何应对不支持 cookie 的浏览器?
如果您的应用程序需要和不支持 cookie 的浏览器打交道,那么您不得不使用其他的办法在您的应用程序中的页面之间传递信息。这里有两种办法:
 
1. 向 URL 添加参数
您可以向 URL 添加参数:
 
<a href="welcome.asp?fname=John&lname=Adams">
Go to Welcome Page
</a>然后在类似于下面这个 "welcome.asp" 文件中取回这些值:
 
<%
fname=Request.querystring("fname")
lname=Request.querystring("lname")
response.write("<p>Hello " & fname & " " & lname & "!</p>")
response.write("<p>Welcome to my Web site!</p>")
%>2. 使用表单
您还可以使用表单。当用户点击提交按钮时,表单会把用户输入的数据提交给 "welcome.asp" :
 
<form method="post" action="welcome.asp">
First Name:  <input type="text" name="fname" value="">
Last Name: <input type="text" name="lname" value="">
<input type="submit" value="Submit">
</form>然后在 "welcome.asp" 文件中取回这些值,就像这样:
 
<%
fname=Request.form("fname")
lname=Request.form("lname")
response.write("<p>Hello " & fname & " " & lname & "!</p>")
response.write("<p>Welcome to my Web site!</p>")
%>
 
8  ASP Session 对象
Previous Page Next Page 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 使用 <object> 标签通过 session 的 scope 来例示某个对象时;
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 & "<br />")
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) & "<br />")
Next
%>结果:
 
Session variables: 2
Donald Duck
50遍历 StaticObjects 集合
可通过循环 StaticObjects 集合,来查看存储在 session 对象中所有对象的值:
 
<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>
 
9  ASP Application 对象
Previous Page Next Page 在一起协同工作以完成某项任务的一组 ASP 文件称作应用程序(application)。ASP 中的 Application 对象用于将这些文件捆绑在一起。
Application 对象
web 上的一个应用程序可以是一组 ASP 文件。这些 ASP 文件一起协同工作来完成某项任务。ASP 中的 Application 对象用来把这些文件捆绑在一起。
 
Application 对象用于存储和访问来自任何页面的变量,类似于 session 对象。不同之处在于,所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。
 
Application 对象握有会被应用程序中的许多页面使用的信息(比如数据库连接信息)。这意味着可以从任何的页面访问这些信息。同时也意味着你可在一个地点改变这些信息,然后这些改变会自动反映在所有的页面上。
存储和取回 Application 变量
Application 变量可被应用程序中的任何页面访问和改变。
 
可以像这样在 "Global.asa" 中创建 Application 变量:
 
<script language="vbscript" runat="server">
 
Sub Application_OnStart
application("vartime")=""
application("users")=1
End Sub
 
</script>在上面的例子中,我们创建了两个 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 & "<br />")
Next
%>如果你不清楚 contents 集中的项目数量,可使用 count 属性:
 
<%
dim i
dim j
j=Application.Contents.Count
For i=1 to j
  Response.Write(Application.Contents(i) & "<br />")
Next
%>遍历 StaticObjects 集合
可通过循环 StaticObjects 集合,来查看所有存储于 Application 对象中的对象的值:
 
<%
dim i
For Each i in Application.StaticObjects
  Response.Write(i & "<br />")
Next
%>锁定和解锁
我们可以使用 "Lock" 方法来锁定应用程序。当应用程序锁定后,用户们就无法改变 Application 变量了(除了正在访问 Application 变量的用户)。我们也可使用 "Unlock" 方法来对应用程序进行解锁。这个方法会移除对 Application 变量的锁定:
 
<%
Application.Lock
  'do some application object operations
Application.Unlock
%>
 
10    ASP 文件引用
Previous Page Next Page #include 命令用于在多重页面上创建需重复使用的函数、页眉、页脚或者其他元素等。
#include 命令
通过使用 #include 命令,我们可以在服务器执行 ASP 文件之前,把另一个ASP文件插入这个文件中。#include 命令用于在多重页面上创建需重复使用的函数、页眉、页脚或者其他元素等。
如何使用 #include 命令
这里有一个名为 "mypage.asp" 的文件:
 
<html>
<body>
<h2>Words of Wisdom:</h2>
<p><!--#include file="wisdom.inc"--></p>
<h2>The time is:</h2>
<p><!--#include file="time.inc"--></p>
</body>
</html> 这是 "wisdom.inc" 文件:
 
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."这是 "time.inc" 文件:
 
<%
Response.Write(Time)
%>在浏览器中查看的源代码应该类似这样:
 
<html>
<body>
<h2>Words of Wisdom:</h2>
<p>"One should never increase, beyond what is necessary,
the number of entities required to explain anything."</p>
<h2>The time is:</h2>
<p>11:33:42 AM</p>
</body>
</html>Including 文件的语法:
如需在 ASP 中引用文件,请把 #include 命令置于注释标签之中:
 
<!--#include virtual="somefilename"-->或者:
 
<!--#include file ="somefilename"-->关键词 Virtual
关键词 virtual 指示路径以虚拟目录开始。
 
如果名为 "header.inc" 位于名为 /html 的虚拟目录中,下面这行代码会插入文件 "header.inc" 中的内容:
 
<!-- #include virtual ="/html/header.inc" -->关键词 File
关键词 File 指示一个相对的路径。相对路径起始于含有引用文件的目录。
 
假设文件位于 html 文件夹的子文件夹 headers 中,下面这段代码可引用 "header.inc" 文件的内容:
 
<!-- #include file ="headers\header.inc" -->注意:被引用文件的路径是相对于引用文件的。假如包含 #include 声明的文件不在 html 目录中,这个声明就不会起效。
 
您同样可以使用关键词 file 和语法 (..\) 来引用上级目录中的文件。
提示和注释
在上面的一节中,我们使用 ".inc" 来作为被引用文件的后缀。注意:假如用户尝试直接浏览 INC 文件,这个文件中内容就会暴露。假如被引用的文件中的内容涉及机密,那么最好还是使用 "asp" 作为后缀。ASP 文件中的源代码被编译后是不可见的。被引用的文件也可引用其他文件,同时一个 ASP 文件可以对同一个文件引用多次。
 
重要事项:在脚本执行前,被引用的文件就会被处理和插入。
 
下面的代码无法执行,这是由于 ASP 会在为变量赋值之前执行 #include 命令:
 
<%
fname="header.inc"
%>
<!--#include file="<%=fname%>"-->不能在脚本分隔符之间包含文件引用:
 
<%
For i = 1 To n
  <!--#include file="count.inc"-->
Next
%>但是这段脚本可以工作:
 
<% For i = 1 to n %>
<!--#include file="count.inc" -->
<% Next %>
 
11   ASP Global.asa 文件
Previous Page Next Page Global.asa 文件是一个可选的文件,它可包含可被 ASP 应用程序中每个页面访问的对象、变量以及方法的声明。
Global.asa 文件
Global.asa 文件是一个可选的文件,它可包含可被 ASP 应用程序中每个页面访问的对象、变量以及方法的声明。所有合法的浏览器脚本都能在 Global.asa 中使用。
 
Global.asa 文件可包含下列内容:
Application 事件
Session 事件
<object> 声明
TypeLibrary 声明
#include 命令
注释:Global.asa 文件须存放于 ASP 应用程序的根目录中,且每个应用程序只能有一个 Global.asa 文件。
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 文件可能类似这样:
 
<script language="vbscript" runat="server">
 
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
 
</script>注释:由于无法使用 ASP 的脚本分隔符 (<% 和 %>) 在 Global.asa 文件中插入脚本,我们需使用 HTML 的 <script> 元素。
<object> 声明
可通过使用 <object> 标签在 Global.asa 文件中创建带有 session 或者 application 作用域的对象。
 
注释:<object> 标签应位于 <script> 标签之外。
 
语法:
<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>参数 描述
scope 设置对象的作用域(作用范围)(Session 或者 Application)。
id 为对象指定一个唯一的 id。
ProgID 与 ClassID 关联的 id。ProgID 的格式是:[Vendor.]Component[.Version]。
 
ProgID 或 ClassID 必需被指定。
 
ClassID 为 COM 类对象指定唯一的 id。
 
ProgID 或 ClassID 必需被指定。
 
 
实例
第一个实例创建了一个名为 "MyAd" 且使用 ProgID 参数的 session 作用域对象:
 
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>第二个实例创建了名为 "MyConnection" 且使用 ClassID 参数的
 
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>在此 Global.asa 文件中声明的这些对象可被应用程序中的任何脚本使用。
 
GLOBAL.ASA:
 
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>您可以从 ASP 应用程序中的任意页面引用此 "MyAd" 对象:
 
某个 .ASP 文件:
 
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%> TypeLibrary 声明
TypeLibrary (类型库)是一个容器,其中装有对应于 COM 对象的 DLL 文件。通过在 Global.asa 中包含对 TypeLibrary 的调用,可以访问 COM 对象的常量,同时 ASP 代码也能更好地报告错误。假如您的站点的应用程序依赖于已在类型库中声明过数据类型的 COM 对象,您可以在 Global.asa 中对类型库进行声明。
 
语法:
<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->参数 描述
file 规定指向类型库的绝对路径。参数 file 或者 uuid,两者缺一不可。
uuid 规定了针对类型库的唯一的标识符。参数 file 或者 uuid,两者缺一不可。
version 可选。用于选择版本。假如没有找到指定的版本,将使用最接近的版本。
lcid 可选。用于类型库的地区标识符。
 
错误值
服务器会返回以下的错误消息之一:
 
错误 代码 描述
ASP 0222 Invalid type library specification
ASP 0223 Type library not found
ASP 0224 Type library cannot be loaded
ASP 0225 Type library cannot be wrapped
 
注释:METADATA 标签可位于 Global.asa 文件中的任何位置(在 <script> 标签的内外均可)。不过,我们还是推荐将 METADATA 标签放置于 Global.asa 文件的顶部。
限定
关于可以在 Global.asa 文件中引用的内容的限定:
 
你无法显示 Global.asa 文件中的文本。此文件无法显示信息。
 
你只能在 Application_OnStart 和 Application_OnEnd 子例程中使用 Server 和 Application 对象。在 Session_OnEnd 子例程中,你可以使用 Server、Application 和 Session 对象。在 Session_OnStart 子例程中,你可使用任何内建的对象。
如何使用子例程
Global.asa 常用于对变量进行初始化。
 
下面的例子展示如何检测访问者首次到达站点的确切时间。时间存储在名为 "started" 的 Session 对象中,并且 "started" 变量的值可被应用程序中的任何 ASP 页面访问:
 
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>Global.asa 也可用于控制页面访问。
 
下面的例子展示如何把每位新的访问者重定向到另一个页面,在这个例子中会定向到 "newpage.asp" 这个页面:
 
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>我们还可以在 Global.asa 中包含函数。
 
在下面的例子中,当 Web 服务器启动时,Application_OnStart 子例程也会启动。随后,Application_OnStart 子例程会调用另一个名为 "getcustomers" 的子例程。"getcustomers" 子例程会打开一个数据库,然后从 "customers" 表中取回一个记录集。此记录集会赋值给一个数组,在不查询数据库的情况下,任何 ASP 页面都能够访问这个数组:
 
<script language="vbscript" runat="server">
 
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
 
</script>Global.asa 实例
在这个例子中,我们要创建一个可计算当前访客的 Global.asa 文件。
 
Application_OnStart 设置当服务器启动时,Application 变量 "visitors" 的值为 0。
 
每当有新用户访问时,Session_OnStart 子例程就会给变量 "visitors" 加 1。
 
每当 Session_OnEnd 子例程被触发时,此子例程就会从变量 "visitors" 减 1。
 
Global.asa 文件:
 
<script language="vbscript" runat="server">
 
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
 
</script>此 ASP 文件会显示当前用户的数目:
 
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>
 
12   ASP 使用 CDOSYS 发送电子邮件
Previous Page Next Page 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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
myMail.Bcc="someoneelse@somedomain.com"
myMail.Cc="someoneelse2@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
myMail.HTMLBody = "<h1>This is a message.</h1>"
myMail.Send
set myMail=nothing
%>发送一封由网站传送网页的 HTML 邮件:
 
<%
Set myMail=CreateObject("CDO.Message")
myMail.Subject="Sending email with CDO"
myMail.From="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
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="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
myMail.TextBody="This is a message."
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
'Name or IP of remote SMTP server
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
="smtp.server.com"
'Server port
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") _
=25
myMail.Configuration.Fields.Update
myMail.Send
set myMail=nothing
%>
 
13   ASP Response 对象
Previous Page Next Page 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 向输出写指定的字符串。
 
 
14  ASP Request 对象
Previous Page Next Page 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 请求的一部分而从客户端送往服务器的数据,并把它存放到一个安全的数组之中。
 
 
15  ASP Application 对象
Previous Page Next Page 在一起协同工作以完成某项任务的一组 ASP 文件称为一个应用程序。而 ASP 中的 Application 对象的作用是把这些文件捆绑在一起。
Application 对象
Web 上的一个应用程序可以是一组 ASP 文件。这些 ASP 在一起协同工作来完成一项任务。而 ASP 中的 Application 对象的作用是把这些文件捆绑在一起。
 
Application 对象用于存储和访问来自任意页面的变量,类似 Session 对象。不同之处在于所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。
 
Application 对象掌握的信息会被应用程序中的很多页面使用(比如数据库连接信息)。这就意味我们可以从任意页面访问这些信息。也意味着你可以在在一个页面上改变这些信息,随后这些改变会自动地反映到所有的页面中。
 
Application 对象的集合、方法和事件的描述如下:
 
集合
集合 描述
Contents 包含所有通过脚本命令追加到应用程序中的项目。
StaticObjects 包含所有使用 HTML 的 <object> 标签追加到应用程序中的对象。
 
方法
方法 描述
Contents.Remove 从 Contents 集合中删除一个项目。
Contents.RemoveAll() 从 Contents 集合中删除所有的项目。
Lock 防止其余的用户修改 Application 对象中的变量。
Unlock 使其他的用户可以修改 Application 对象中的变量(在被 Lock 方法锁定之后)。
 
事件
事件 描述
Application_OnEnd 当所有用户的 session 都结束,并且应用程序结束时,此事件发生。
Application_OnStart 在首个新的 session 被创建之前(这时 Application 对象被首次引用),此事件会发生。
 
 
16  ASP Session 对象
Previous Page Next Page 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 的 <object> 标签追加到 session 的对象。
 
属性
属性 描述
CodePage 规定显示动态内容时使用的字符集
LCID 设置或返回指定位置或者地区的一个整数。诸如日期、时间以及货币的内容会根据位置或者地区来显示。
SessionID 为每个用户返回一个唯一的 id。此 id 由服务器生成。
Timeout 设置或返回应用程序中的 session 对象的超时时间(分钟)。
 
方法
方法 描述
Abandon 撤销一个用户的 session。
Contents.Remove 从 Contents 集合删除一个项目。
Contents.RemoveAll() 从 Contents 集合删除全部项目。
 
事件
事件 描述
Session_OnEnd 当一个会话结束时此事件发生。
Session_OnStart 当一个会话开始时此事件发生。
 
 
17  ASP Server 对象
Previous Page Next Page ASP Server 对象的作用是访问有关服务器的属性和方法。
实例
此文件最后被修改的时间是?
探测文件的最后更新时间。
打开并读取某个文本文件
本例会打开文件 "Textfile.txt" 以供读取。
自制的点击计数器
本例可从一个文件中读取一个数字,并在此数字上累加 1,然后将此数写回这个文件。 Server 对象
ASP Server 对象的作用是访问有关服务器的属性和方法。其属性和方法描述如下:
 
属性
属性 描述
ScriptTimeout 设置或返回在一段脚本终止前它所能运行时间(秒)的最大值。
 
方法
方法 描述
CreateObject 创建对象的实例(instance)。
Execute 从另一个 ASP 文件中执行一个 ASP 文件。
GetLastError() 返回可描述已发生错误状态的 ASPError 对象。
HTMLEncode 将 HTML 编码应用到某个指定的字符串。
MapPath 将一个指定的地址映射到一个物理地址。
Transfer 把一个 ASP 文件中创建的所有信息传输到另一个 ASP 文件。
URLEncode 把 URL 编码规则应用到指定的字符串。
 
 
18  ASP ASPError 对象
Previous Page Next Page 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 返回错误所在行的实际的源代码
 
 
19  ASP FileSystemObject 对象
Previous Page Next Page 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 对象。
 
 
20  ASP TextStream 对象
Previous Page Next Page TextStream 对象用于访问文本文件的内容。
实例
读文件
本例演示如何使用 FileSystemObject 的 OpenTextFile 方法来创建一个 TextStream 对象。TextStream 对象的 ReadAll 方法会从已打开的文本文件中取得内容。
读文本文件中的一个部分
本例演示如何仅仅读取一个文本流文件的部分内容。
读文本文件中的一行
本例演示如何从一个文本流文件中读取一行内容。
读取文本文件的所有行
本例演示如何从文本流文件中读取所有的行。
略过文本文件的一部分
本例演示如何在读取文本流文件时跳过指定的字符数。
略过文本文件的一行
本例演示如何在读取文本流文件时跳过一行。
返回行数
本例演示如何返回在文本流文件中的当前行号。
取得列数
本例演示如何取得在文件中当前字符的列号。 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 文件中。
 
 
21  ASP Drive 对象
Previous Page Next Page 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 设置或者返回指定驱动器的卷标名
 
 
22   ASP File 对象
Previous Page Next Page File 对象用于返回关于指定文件的信息。
实例
文件何时被创建?
本例演示如何首先创建 FileSystemObject 对象,然后使用 File 对象的 DateCreated 属性来取得指定文件被创建的日期和时间。
此文件何时被修改?
本例演示如何使用 DateLastModified 属性来取得指定文件被修改的日期和时间。
此文件何时被访问过?
此例演示如何使用 DateLastAccessed 属性来取得指定文件最后被访问的日期和时间。
返回指定文件的属性
本例演示如何使用 Attributes 来返回指定文件的属性。 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 AMFile 对象的属性和方法
属性
属性 描述
Attributes 设置或返回指定文件的属性。
DateCreated 返回指定文件创建的日期和时间。
DateLastAccessed 返回指定文件最后被访问的日期和时间。
DateLastModified 返回指定文件最后被修改的日期和时间。
Drive 返回指定文件或文件夹所在的驱动器的驱动器字母。
Name 设置或返回指定文件的名称。
ParentFolder 返回指定文件或文件夹的父文件夹对象。
Path 返回指定文件的路径。
ShortName 返回指定文件的短名称(8.3 命名约定)。
ShortPath 返回指定文件的短路径(8.3 命名约定)。
Size 返回指定文件的尺寸(字节)。
Type 返回指定文件的类型。
 
方法
方法 描述
Copy 把指定文件从一个位置拷贝到另一个位置。
Delete 删除指定文件。
Move 把指定文件从一个位置移动到另一个位置。
OpenAsTextStream 打开指定文件,并返回一个 TextStream 对象以便访问此文件。
 
 
23  ASP Folder 对象
Previous Page Next Page Folder 对象用来返回有关指定文件夹的信息。
Folder 对象
Folder 对象用于返回有关指定文件夹的信息。
 
如需操作 Folder 对象,我们需要通过 FileSystemObject 对象来创建 Folder 对象的实例。首先,创建一个 FileSystemObject 对象,然后通过 FileSystemObject 对象的 GetFolder 方法来例示这个 Folder 对象。
 
下面的代码使用 FileSystemObject 对象的 GetFolder 方法来例示这个 Folder 对象,并使用 DateCreated 属性来返回指定文件的创建日期:
 
<%
Dim fs,fo
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set fo=fs.GetFolder("c:\test")
Response.Write("Folder created: " & fo.DateCreated)
set fo=nothing
set fs=nothing
%>输出:
 
Folder created: 10/22/2001 10:01:19 AMFolder 对象的集合、属性以及方法
集合
集合 描述
Files 返回指定文件夹中所有文件夹的集合。
SubFolders 返回指定文件夹中所有子文件夹的集合。
 
属性
属性 描述
Attributes 设置或返回指定文件夹的属性。
DateCreated 返回指定文件夹被创建的日期和时间。
DateLastAccessed 返回指定文件夹最后被访问的日期和时间。
DateLastModified 返回指定文件夹最后被修改的日期和时间。
Drive 返回指定文件夹所在的驱动器的驱动器字母。
IsRootFolder 假如文件夹是根文件夹,则返回 ture,否则返回 false。
Name 设置或返回指定文件夹的名称。
ParentFolder 返回指定文件夹的父文件夹。
Path 返回指定文件的路径。
ShortName 返回指定文件夹的短名称。(8.3 命名约定)
ShortPath 返回指定文件夹的短路径。(8.3 命名约定)
Size 返回指定文件夹的大小。
Type 返回指定文件夹的类型。
 
方法
方法 描述
Copy 把指定的文件夹从一个位置拷贝到另一个位置。
Delete 删除指定文件夹。
Move 把指定的文件夹从一个位置移动到另一个位置。
CreateTextFile 在指定的文件夹创建一个新的文本文件,并返回一个 TextStream 对象以访问这个文件。
 
 
24  ASP Dictionary 对象
Previous Page Next Page Dictionary 对象用于在结对的名称/值中存储信息(等同于键和项目)。
实例
指定的键存在吗?
本例演示如何受首先创建一个 Dictionary 对象,然后使用 Exists 方法来检查指定的键是否存在。
返回一个所有项目的数组
本例演示如何使用 Items 方法来返回所有项目的一个数组。
返回一个所有键的数组
本例演示如何使用 Keys 方法来返回所有键的一个数组。
返回某个项目的值
本例演示如何使用 Item 属性来返回一个项目的值。
设置一个键
本例演示如何使用 Key 属性来在 Dictionary 对象中设置一个键。
返回键/项目对的数目
本例演示如何使用 Count 属性来返回键/项目对的数目。 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: BlueDictionary 对象的属性和方法描述如下:
属性
属性 描述
CompareMode 设置或返回用于在 Dictionary 对象中比较键的比较模式。
Count 返回 Dictionary 对象中键/项目对的数目。
Item 设置或返回 Dictionary 对象中一个项目的值。
Key 为 Dictionary 对象中已有的键值设置新的键值。
 
方法
方法 描述
Add 向 Dictionary 对象添加新的键/项目对。
Exists 返回一个逻辑值,这个值可指示指定的键是否存在于 Dictionary 对象中。
Items 返回 Dictionary 对象中所有项目的一个数组。
Keys 返回 Dictionary 对象中所有键的一个数组。
Remove 从 Dictionary 对象中删除指定的键/项目对。
RemoveAll 删除 Dictionary 对象中所有的键/项目对。
 
 
25  ADO 简介
Previous Page Next Page ADO 用于从网页访问数据库。
从 ASP 页面访问数据库
从 ASP 文件内部访问数据库的通常途径是:
 
创建至数据库的 ADO 连接(ADO connection)
打开数据库连接
创建 ADO 记录集(ADO recordset)
打开记录集(recordset)
从数据集中提取你所需要的数据
关闭数据集
关闭连接
什么是 ADO?
ADO 是一项微软公司的技术
ADO 指 ActiveX Data Objects
ADO 是一个微软的 Active-X 组件
ADO 会随着微软 IIS 自动安装
ADO 是用以访问数据库中数据的编程接口
下一步学习什么内容?
假如您希望学习更多关于 ADO 的知识,请阅读我们的 ADO 教程。
 
 
26  ASP AdRotator 组件
Previous Page Next Page 实例
简单的 AdRotator 实例
本例展示:每当用户访问网站或者刷新一次页面,如何使用 AdRotator 组件来显示一幅不同的广告图像。
AdRotator - 图片链接
本例展示:每当用户访问网站或者刷新一次页面,如何使用 AdRotator 组件来显示一幅不同的广告图像。此外,图片本身就是链接。 ASP AdRotator 组件
每当用户进入网站或刷新页面时,ASP AdRotator 组件就会创建一个 AdRotator 对象来显示一幅不同的图片。
 
语法:
<%
set adrotator=server.createobject("MSWC.AdRotator")
adrotator.GetAdvertisement("textfile.txt")
%>实例
假设我们有一个文件名为 "banners.asp"。它类似于这样:
 
<html%>
<body%>
<%
set adrotator=Server.CreateObject("MSWC.AdRotator")
response.write(adrotator.GetAdvertisement("ads.txt"))
%>
</body%>
</html%>
文件 "ads.txt" 类似这样:
 
*
w3school.gif
http://www.w3school.com.cn/
Visit W3School
80
microsoft.gif
http://www.microsoft.com/
Visit Microsoft
20 
"ads.txt" 文件中星号下面的代码定义了如何显示这些图像,链接地址,图像的替换文本,在每百次点击中的显示几率。我们可以看到,W3School 图片的显示几率是 80%,而 Microsoft 图片的显示几率是 20%。
 
注释:为了使这些链接在用户点击时可以正常工作,我们需要对文件 "ads.txt" 进行一点点小小的修改:
 
REDIRECT banners.asp
*
w3school.gif
http://www.w3school.com.cn/
Visit W3School
80
microsoft.gif
http://www.microsoft.com/
Visit Microsoft
20
转向页面会接收到名为 url 的变量的查询字符串,其中含有供转向的 URL。
 
注释:如需规定图像的高度、宽度和边框,我们可以在 REDIRECT 下面插入这些代码:
 
REDIRECT banners.asp
WIDTH 468
HEIGHT 60
BORDER 0
*
w3school.gif
...
...
最后要做的是把这些代码加入文件"banners.asp"中:
 
<%
url=Request.QueryString("url")
If url<>"" then Response.Redirect(url)
%>
<html>
<body>
<%
set adrotator=Server.CreateObject("MSWC.AdRotator")
response.write(adrotator.GetAdvertisement("textfile.txt"))
%>
</body>
</html>
好了,这就是全部的内容!
AdRotator 组件的属性
Border 属性
规定围绕广告的边框的尺寸。
 
<%
set adrot=Server.CreateObject("MSWC.AdRotator")
adrot.Border="2"
Response.Write(adrot.GetAdvertisement("ads.txt"))
%>Clickable 属性
规定广告本身是否是超级链接。
 
<%
set adrot=Server.CreateObject("MSWC.AdRotator")
adrot.Clickable=false
Response.Write(adrot.GetAdvertisement("ads.txt"))
%>TargetFrame 属性
显示广告的框架名称。
 
<%
set adrot=Server.CreateObject("MSWC.AdRotator")
adrot.TargetFrame="target='_blank'"
Response.Write(adrot.GetAdvertisement("ads.txt"))
%>AdRotator 组件的方法
GetAdvertisement 方法
返回在页面中显示广告的 HTML。
 
<%
set adrot=Server.CreateObject("MSWC.AdRotator")
Response.Write(adrot.GetAdvertisement("ads.txt"))
%>
 
 
27  ASP Browser Capabilities 组件
Previous Page Next Page 实例
Browser Capabilities 组件
本例演示如何测定每一个访问网站的浏览器的类型、性能以及版本号。 ASP Browser Capabilities 组件
ASP Browser Capabilities 组件会创建一个 BrowserType 对象,这个对象可测定访问者浏览器的类型、性能以及版本号。
 
当浏览器连接到服务器时,就会向服务器发送一个 HTTP User Agent 报头。这个报头包含着有关浏览器的信息(比如浏览器类型和版本号)。BrowserType 对象会把报头中的信息与服务器上名为 "Browscap.ini" 的文件中的信息作比较。
 
如果标题中被发送的浏览器类型和版本号和 "Browsercap.ini" 文件中信息可以匹配,那么我们就可以使用 BrowserType 对象列出这个匹配的浏览器的相关属性。如果上述情况不匹配,这个对象会把每个属性设置为 "UNKNOWN"。
 
语法
<%
Set MyBrow=Server.CreateObject("MSWC.BrowserType")
%>下面的例子对在 ASP 文件中创建一个 BrowserType 对象,并显示一个展示当前浏览器性能的表格:
 
<html>
<body>
 
<%
Set MyBrow=Server.CreateObject("MSWC.BrowserType")
%>
 
<table border="1" width="100%">
<tr>
<th>Client OS</th>
<th><%=MyBrow.platform%></th>
</tr><tr>
<td >Web Browser</td>
<td ><%=MyBrow.browser%></td>
</tr><tr>
<td>Browser version</td>
<td><%=MyBrow.version%></td>
</tr><tr>
<td>Frame support?</td>
<td><%=MyBrow.frames%></td>
</tr><tr>
<td>Table support?</td>
<td><%=MyBrow.tables%></td>
</tr><tr>
<td>Sound support?</td>
<td><%=MyBrow.backgroundsounds%></td>
</tr><tr>
<td>Cookies support?</td>
<td><%=MyBrow.cookies%></td>
</tr><tr>
<td>VBScript support?</td>
<td><%=MyBrow.vbscript%></td>
</tr><tr>
<td>JavaScript support?</td>
<td><%=MyBrow.javascript%></td>
</tr>
</table>
 
</body>
</html>输出:
 
Client OS WinNT
Web Browser IE
Browser version 5.0
Frame support? True
Table support? True
Sound support? True
Cookies support? True
VBScript support? True
JavaScript support? True
Browscap.ini文件
"Browsercap.ini" 文件用于声明属性,并设置各浏览器的默认值。
 
本节内容不是关于如何 Browscap.ini 文件的教程,我们只提供一些关于 "Browsercap.ini" 的基础知识和概念。
 
"Browsercap.ini" 文件可包含下面的信息:
 
[;comments]
[HTTPUserAgentHeader]
[parent=browserDefinition]
[property1=value1]
[propertyN=valueN]
[Default Browser Capability Settings]
[defaultProperty1=defaultValue1]
[defaultPropertyN=defaultValueN]
参数 描述
comments 可选项。任何起始于分号的代码行都被 BrowserType 对象忽略
HTTPUserAgentHeader 可选项。规定与在 propertyN 中设定的 browser-property 值声明相关的 HTTP User Agent 报头。允许使用通配符。
browserDefinition 可选项。规定作为父浏览器使用的某个浏览器的 HTTP User Agent header-string。当前浏览器的定义会继承在父浏览器的定义中所有声明过的属性值。
propertyN 可选项。规定浏览器的属性。下面的表格列出了某些可能的属性:
ActiveXControls - 是否支持ActiveX控件?
Backgroundsounds - 是否支持背景声音?
Cdf - 是否支持针对网络广播(Webcasting)的频道定义格式(Channel Definition Format)?
Tables - 是否支持表格?
Cookies - 是否支持cookies?
Frames - 是否支持框架?
Javaapplets - 是否支持Java applets?
Javascript - 是否支持JScript?
Vbscript - 是否支持VBScript?
Browser - 定义浏览器的名称
Beta - 浏览器是否为beta软件?
Platform - 规定浏览器运行的平台
Version - 规定浏览器的版本号。
 
valueN 可选项。规定 propertyN 的值。可为字符串、整数(前缀为#)或者逻辑值。
defaultPropertyN 可选项。规定浏览器属性的名称,假如已定义的 HTTPUserAgentHeader 值中没有值能与浏览器发送的 HTTP 用户代理报头相匹配,则为这个属性分配一个默认的值。
defaultValueN Optional. 规定 defaultPropertyN 的值。可为字符串、整数(前缀为 #)或者逻辑值。
 
"Browsercap.ini"文件会类似这样:
 
;IE 5.0
[IE 5.0]
browser=IE
Version=5.0
majorver=#5
minorver=#0
frames=TRUE
tables=TRUE
cookies=TRUE
backgroundsounds=TRUE
vbscript=TRUE
javascript=TRUE
javaapplets=TRUE
ActiveXControls=TRUE
beta=False;DEFAULT BROWSER
[*]
browser=Default
frames=FALSE
tables=TRUE
cookies=FALSE
backgroundsounds=FALSE
vbscript=FALSE
javascript=FALSE
 
 
28  ASP Content Linking 组件
Previous Page Next Page 实例
Content Linking 组件
本例会构建一个内容列表。
Content Linking 组件 2
本例使用 Content Linking 组件在一个文本文件所列的页面间进行导航。 ASP Content Linking 组件
ASP Content Linking 组件用于创建快捷便利的导航系统。
 
Content Linking 组件会返回一个 Nextlink 对象,这个对象用于容纳需要导航网页的一个列表。
 
语法
<%
Set nl=Server.CreateObject( "MSWC.NextLink" )
%>首先,我们会创建文本文件 - "links.txt"。此文件包含需要导航的页面的相关信息。页面的排列顺序应该与它们的显示顺序相同,并包含对每个文件的描述(使用制表符来分隔文件名和描述信息)。
 
注释:如果你希望向列表添加文件信息,或者改变在列表中的页面顺序,那么你需要做的所有事情仅仅是修改这个文本文件而已!然后导航系统会自动地更新!
 
"links.txt":
 
asp_intro.asp ASP 简介
asp_syntax.asp ASP 语法
asp_variables.asp ASP 变量
asp_procedures.asp ASP 程序
请在上面列出的页面中放置这行代码:<!-- #include file="nlcode.inc"-->。这行代码会在 "links.txt" 中列出每个页面上引用下面这段代码,这样导航就可以工作了。
 
"nlcode.inc":
 
<%
'Use the Content Linking Component
'to navigate between the pages listed
'in links.txt
 
dim nl
Set nl=Server.CreateObject("MSWC.NextLink")
if (nl.GetListIndex("links.txt")>1) then
  Response.Write("<a href='" & nl.GetPreviousURL("links.txt"))
  Response.Write("'>Previous Page</a>")
end if
Response.Write("<a href='" & nl.GetNextURL("links.txt"))
Response.Write("'>Next Page</a>")
%>ASP Content Linking 组件的方法
GetListCount 方法
返回内容链接列表文件中所列项目的数目:
 
<%
dim nl,c
Set nl=Server.CreateObject("MSWC.NextLink")
c=nl.GetListCount("links.txt")
Response.Write("There are ")
Response.Write(c)
Response.Write(" items in the list")
%>输出:
 
There are 4 items in the list
 
GetListIndex 方法
返回在内容链接列表文件中当前文件的索引号。第一个条目的索引号是 1。假如当前页面不在列表文件中,则返回 0。
 
例子
<%
dim nl,c
Set nl=Server.CreateObject("MSWC.NextLink")
c=nl.GetListIndex("links.txt")
Response.Write("Item number ")
Response.Write(c)
%>输出:
 
Item number 3
 
GetNextDescription 方法
返回在内容链接列表文件中所列的下一个条目的文本描述。假如在列表文件中没有找到当前文件,则列表中最后一个页面的文本描述。
 
例子
<%
dim nl,c
Set nl=Server.CreateObject("MSWC.NextLink")
c=nl.GetNextDescription("links.txt")
Response.Write("Next ")
Response.Write("description is: ")
Response.Write(c)
%>
输出:Next description is: ASP Variables
 
GetNextURL 方法
返回在内容链接列表文件中所列的下一个条目的 URL。假如在列表文件中没有找到当前文件,则列表中最后一个页面的 URL。
 
例子
<%
dim nl,c
Set nl=Server.CreateObject("MSWC.NextLink")
c=nl.GetNextURL("links.txt")
Response.Write("Next ")
Response.Write("URL is: ")
Response.Write(c)
%>输出:Next URL is: asp_variables.asp
 
GetNthDescription 方法
返在内容链接列表文件中所列的第 N 个页面的描述信息。
 
例子
<%
dim nl,c
Set nl=Server.CreateObject("MSWC.NextLink")
c=nl.GetNthDescription("links.txt",3)
Response.Write("Third ")
Response.Write("description is: ")
Response.Write(c)
%>输出:Third description is: ASP Variables
 
GetNthURL 方法
返在内容链接列表文件中所列的第 N 个页面的 URL。
 
例子
<%
dim nl,c
Set nl=Server.CreateObject("MSWC.NextLink")
c=nl.GetNthURL("links.txt",3)
Response.Write("Third ")
Response.Write("URL is: ")
Response.Write(c)
%>输出:Third URL is: asp_variables.asp
 
GetPreviousDescription 方法
返回在内容链接列表文件中所列前一个条目的文本描述。假如在列表文件中没有找到当前文件,则列表中第一个页面的文本描述。
 
例子
<%
dim nl,c
Set nl=Server.CreateObject("MSWC.NextLink")
c=nl.GetPreviousDescription("links.txt")
Response.Write("Previous ")
Response.Write("description is: ")
Response.Write(c)
%>输出:Previous description is: ASP Variables
 
GetPreviousURL 方法
返回在内容链接列表文件中所列前一个条目的 URL。假如在列表文件中没有找到当前文件,则列表中第一个页面的URL。
 
例子
<%
dim nl,c
Set nl=Server.CreateObject("MSWC.NextLink")
c=nl.GetPreviousURL("links.txt")
Response.Write("Previous ")
Response.Write("URL is: ")
Response.Write(c)
%>输出:Previous URL is: asp_variables.asp
 
 
29   ASP Content Rotator (ASP 3.0)
Previous Page Next Page 实例
Content Rotator 组件
每当用户访问或者刷新页面时,该组件就会显示不同的 HTML 内容字符串。 ASP Content Rotator 组件
ASP Content Rotator 组件会创建一个 ContentRotator 对象,每当用户访问或者刷新某个页面时,该对象就会显示一段不同的 HTML 内容字符串。一个名为内容目录文件(Content Schedule File)的文本文件包含着有关内容字符串的信息。
 
内容字符串可包含 HTML 标签,这样你就可以显示 HTML 可呈现的任何内容:文本、图像、颜色或者超级链接。
 
语法
<%
Set cr=Server.CreateObject( "MSWC.ContentRotator" )
%>每当某用户查看网页时,下面这个例子就会显示不同的内容。首先在站点根目录的子文件夹 text 中创建一个名为 "textads.txt" 的文件。
 
"textads.txt":
 
%% #1
This is a great day!!
     
%% #2
<h1>Smile</h1>
     
%% #3
<img src="smiley.gif">
     
%% #4
Here's a <a href="http://www.w3school.com.cn">link</a>
注意:在每个内容字符串起始位置的#号码。这个号码是一个可选的参数,用来 HTML 内容字符串的相对权重。在本例中,Content Rotator 有十分之一的几率显示第一个内容字符串,有十分之二的几率显示第二个内容字符串,有十分之三的几率显示第三个字符串,而第四个字符串为十分之四的几率。
 
然后,创建一个 ASP 文件,并插入下面的代码:
 
<html>
<body>
 
<%
set cr=server.createobject("MSWC.ContentRotator")
response.write(cr.ChooseContent("text/textads.txt"))
%>
 
</body>
</html>ASP Content Rotator 组件的方法
方法 描述 实例
ChooseContent 获取并显示某个内容字符串 <%
dim cr
Set cr=Server.CreateObject("MSWC.ContentRotator")
response.write(cr.ChooseContent("text/textads.txt"))
%>输出:
 
GetAllContent 取回并显示文本文件中所有的内容字符串 <%
dim cr
Set cr=Server.CreateObject("MSWC.ContentRotator")
response.write(cr.GetAllContent("text/textads.txt"))
%>输出:
 

相关教程