# 创建 ASP 网页

Active Server Pages (ASP) 文件是带有 .asp 扩展名的文本文件，它由下列内容组合而成：

- 文本
- HTML 标记
- 服务器端脚本

使用 .asp 扩展名重命名现有的 .htm 或 .html 文件可以快速创建 .asp 文件。如果文件不包含任何 ASP 功能，则服务器不进行 ASP 脚本处理，并很快将文件发送到客户端。这为 Web 开发人员提供了极大的灵活性，因为即使目前不希望在文件中添加 ASP 功能，也可以使用 .asp 作为扩展名。

要在 Web 上发布 .asp 文件，请将新文件保存到网站上的虚拟目录（确保目录启用了“脚本”或“执行”权限）。然后，使用浏览器输入文件的 URL 来请求文件。（请注意，必须处理 ASP 网页，因此您无法通过输入其物理路径请求 .asp 文件）。在浏览器中加载文件之后，可以发现服务器返回了 HTML 页。这看起来有些奇怪，但要记住在发送文件之前，服务器将解析并执行所有 ASP 服务器端脚本。用户将始终接收到标准的 HTML。

可以使用任意文本编辑器创建 .asp 文件。随着对编辑器的深入使用，您将发现使用具有更多 ASP 支持的编辑器（如 Microsoft Visual InterDev 等）效率更高。详细信息，请访问 Microsoft Visual InterDev 网站。

## 添加服务器端脚本命令

服务器端脚本是一系列指令，用于向 Web 服务器连续发出命令。（如果您以前开发过网站，可能对运行在 Web 浏览器的客户端脚本较为熟悉）。在 .asp 文件中，脚本通过分隔符与文本和 HTML 标记区分开来。“分隔符”是一个或一组字符，用来标明单元的起始和结束。HTML 的分隔符是小于 (<) 和大于 (>) 号，中间包含着 HTML 标记。

ASP 使用分隔符 <% 和 %> 来包括脚本命令。在分隔符之间，可以包括任何符合所用脚本语言规范的命令。下面将给出包含脚本命令的 HTML 页示例：

    <HTML>
      <BODY>
      上次刷新此页的时间：<%= Now() %>.
      </BODY>
    </HTML>

VBScript 函数 Now() 返回当前的日期和时间。Web 服务器处理此页时，将 `<%= Now() %>` 替换为当前日期和时间，并将此页的下列结果返回到浏览器：

    上次刷新此页的时间：01/29/99 2:20:00 PM.

由分隔符括起的命令称为“主脚本命令”。这些命令使用主脚本语言进行处理。脚本分隔符内使用的任何命令必须符合主脚本语言的规定。默认情况下，主脚本语言为 VBScript。也可以设置其他默认语言。请参阅使用脚本语言。

如果已经对客户端脚本较为熟悉，您一定了解用于封闭脚本命令和表达式的 HTML <SCRIPT> 标记。当需要在一个 .asp 文件中以多种语言定义过程时，也可以对服务器端脚本使用 <SCRIPT> 标记。详细信息，请参阅使用脚本语言。

## 混合使用 HTML 和脚本命令

可以在 ASP 分隔符内包括主脚本语言所允许的任何语句、表达式、过程或操作符。VBScript 和其他脚本语言中的“语句”是在语法上完全独立的单元，用来表示某种动作、声明或定义。下面给出的条件语句 If...Then...Else 便是常用的 VBScript 语句。

    <%
      Dim dtmHour

      dtmHour = Hour(Now())

      If dtmHour < 12 Then
        strGreeting = "早上好！"
      Else
        strGreeting = "您好！"
      End If
    %>

    <%= strGreeting %>

根据时间的不同，此脚本将值“Good Morning!”或值“Hello!”分配给字符串变量 `strGreeting`。`<%= strGreeting %>` 语句则将变量的当前值发送到浏览器。

这样，如果用户在中午 12:00（以 Web 服务器所在时区为准）之前查看此脚本，将看到如下文字：

    早上好！

如果在中午 12:00 之后查看此脚本，则文字变为：

    您好！

可以将 HTML 文本包括在一个语句的不同部份之间。例如下列脚本将 HTML 文本夹在 If...Then...Else 语句之中，所得到的结果与上例相同：

    <%
      Dim dtmHour

      dtmHour = Hour(Now())

      If dtmHour < 12 Then
    %>
      早上好！
    <% Else %>
      您好！
    <% End If %>

如果条件为真，即如果时间在中午之前，Web 服务器将条件之后的 HTML 文本（“Good Morning”）发送到浏览器，否则向浏览器发送 Else（“Hello!”）之后的 HTML 文本。这种将 HTML 和脚本命令混合使用的方法对于将多行 HTML 文本嵌入 If...Then...Else 语句十分方便。如果想在网页中的多个地方显示问候语，上面的示例是很有帮助的。只需设置一次变量值，便可重复用于显示。

如果不想将 HTML 文本分散在脚本命令之间，也可以从脚本命令内将 HTML 文本返回浏览器。可以使用 ASP 内置对象 Response 将文本返回浏览器。下列示例程序与上面两个脚本的输出结果相同：

    <%
      Dim dtmHour

      dtmHour = Hour(Now())

      If dtmHour < 12 Then
        Response.Write "早上好！"
      Else
        Response.Write "您好！"
      End If
    %>

Response.Write 将其后面的文本发送到浏览器。如果希望动态创建返回到浏览器的文本，请在语句中使用 Response.Write。例如，可以建立包含多个变量值的字符串。如希望详细学习 Response 对象以及其他常用对象，请参阅使用组件和对象以及将内容发送到浏览器。而现在，可以使用多种方法将脚本命令插入 HTML 网页。

可以将使用默认主脚本语言编写的过程包括在 ASP 分隔符之内。详细信息，请参阅使用脚本语言。

如果您正在使用 JScript 命令，可以将作为语句块标志的大括号直接插入 ASP 命令，即使它们穿插在 HTML 标记和文本之间。例如：

    <%
      if (screenresolution == "low")
      {
    %>
    这是一个纯文本网页。
    <%
      }
      else
      {
    %>
    这是一个多媒体网页。
    <%
      }
    %>

--或--

    <%
      if (screenresolution == "low")
      {
        Response.Write("这是一个纯文本网页。")
      }
      else
      {
        Response.Write("这是一个多媒体网页。")
      }
    %>

## 使用 ASP 指令

ASP 提供了您所使用的脚本语言中未包括的指令：输出指令和处理指令。

ASP 的输出指令 `<%= 表达式 %>` 显示表达式的值。此输出指令与使用 Response.Write 所显示的信息相同。例如，输出表达式 `<%= city %>` 将在浏览器上显示单词 `Baltimore`（变量的当前值）。

ASP 的“处理指令” `<%@ 关键字 %>` 为 ASP 提供处理 .asp 文件所需的信息。例如，下列指令将 VBScript 设置为网页的主脚本语言：

    <%@ LANGUAGE=VBScript %>

处理指令必须位于 .asp 文件的首行。要在网页中添加多条指令，这些指令必须位于相同的分隔符内。请勿将处理指令置于由 #include 语句包括的文件内。（详细信息，请参阅包含文件。）必须在符号 @ 和关键字之间加入空格。处理指令具有下列关键字：

- LANGUAGE 关键字设置 .asp 文件使用的脚本语言。请参阅使用脚本语言。
- ENABLESESSIONSTATE 关键字指定 .asp 文件是否使用会话状态。请参阅管理会话。
- CODEPAGE 关键字设置 .asp 文件的代码页（字符编码）。
- LCID 关键字设置文件的区域设置标识符。
- TRANSACTION 关键字指定 .asp 文件将在事务环境下运行。请参阅理解事务。

要点 可以在一条指令中包含多个关键字。关键字/值对必须由空格分开。等号两边不要留有空格。

下列示例既设置了脚本语言也设置了代码页：

    <%@ LANGUAGE="JScript" CODEPAGE="932" %>

## 脚本中的空格

如果主脚本语言是 VBScript 或 JScript，ASP 将从命令中删除空格。对于所有其他脚本语言，ASP 将保留空格，以便对书写位置或缩进有所要求的语言能被正确解释。空格包括一般的空格、制表符、回车符和行缩进等。

对于 VBScript 和 JScript，可以在起始分隔符和结束分隔符之间使用空格，以使命令简单易读。下列语句均为有效：

    <% Color = "绿色" %>

    <%Color="绿色"%>

    <%
    Color = "绿色"
    %>

ASP 将删除语句结束分隔符和下一条语句的起始分隔符之间的空格。不过，使用空格来增强可读性倒是一个良好的习惯。如果需要保留两个语句间的空格（如显示语句中变量的值时），请使用 HTML 不间断空格符 (&nbsp;)。例如：

    <%
      'Define two variables with string values.
      strFirstName = "Jeff"
      strLastName = "Smith"
    %>

    <P>This Web page is customized for "<%= strFirstName %>&nbsp;<%= strLastName %>." </P>

© 1997-2001 Microsoft Corporation. 保留所有权利。