在 服 务 器 端 使 用 脚 本 语 言 是 ASP 的 特 色 , 那 么 什 么 是 脚 本 语 言 呢 ? 它 和 HTML 和 编 程 语 言 又 有 什 么 不 同 呢 ?
脚 本 语 言 介 于 HTML 和 Java, C++ 以 及 Visual Basic 等 编 程 语 言 之 间 。 HTML 通 常 用 于 格 式 化 和 链 结 文 本 。 而 编 程 语 言 通 常 用 于 向 机 器 发 出 一 系 列 复 杂 的 指 令 。 脚 本 语 言 介 于 两 者 之 间 但 它 的 函 数 与 编 程 语 言 更 为 相 象 一 些 。 它 与 编 程 语 言 之 间 最 大 的 区 别 是 后 者 的 语 法 和 规 则 更 为 严 格 和 复 杂 一 些 。
HKEY_LOCAL_MACHINE\SYSTEM
脚 本 程 序 实 际 上 就 是 一 组 执 行 特 定 任 务 的 脚 本 命 令 。 如 果 你 经 常 要 执 行 某 一 组 特 定 任 务 , 你 就 可 以 将 之 定 义 成 程 序 , 然 后 重 复 调 用 。 程 序 要 按 特 定 的 脚 本 语 言 的 规 则 写 在 标 签 < SCRIPT> 和 < /SCRIPT> 之 间 。 当 然 , 如 果 你 用 主 脚 本 语 言 写 程 序 的 话 , 写 在 定 界 符 < % 和 %> 之 间 也 可 以 。 如 果 你 的 程 序 只 在 某 一 页 内 调 用 的 话 , 把 它 放 在 这 一 页 内 就 行 了 , 如 果 你 在 多 页 中 都 要 调 用 某 些 程 序 的 话 , 你 可 以 把 这 些 程 序 放 在 一 个 单 独 的 .asp 文 件 中 , 然 后 在 每 个 要 调 用 这 些 程 序 的 .asp 页 中 将 那 个 .asp 文 件 包 含 进 来 。 要 在 .asp 页 中 包 含 其 他 文 件 , 使 用 以 下 的 语 法 : < !--#INCLUDE VIRTUAL|FILE="filename"--> 其 中 , filename 是 你 要 包 含 的 文 件 。 关 键 字 VIRTUAL 和 FILE 任 选 其 一 , VIRTUAL 表 示 要 包 含 的 文 件 在 一 个 虚 拟 目 录 内 ( 该 目 录 为 Web 共 享 目 录 ) , FILE 表 示 要 包 含 的 文 件 在 一 个 当 前 文 件 相 关 目 录 内 。 例 示 如 下 : 假 设 你 有 两 个 Web 共 享 目 录 Dir1 和 Dir2, 目 录 Dir1 内 有 文 件 file11.asp 和 file12.asp, 目 录 Dir2 下 有 文 件 file2, 若 要 在 文 件 file11.asp 中 包 含 file2.asp , 则 将 如 下 命 令 加 入 到 文 件 file11.asp 中 :< !--INCLUDE VIRTUAL="Dir2/file2.asp"--> 若 要 在 file11.asp 中 包 含 file12.asp , 则 将 如 下 命 令 加 入 到 文 件 file11.asp 中 : < !--INCLUDE FILE="file12.asp"--> 或 者 使 用 如 下 命 令 亦 可 : < !--INCLUDE VIRTUAL="Dir1/file12.asp"--> 程 序 写 好 了 , 怎 么 调 用 它 哪 ? 如 果 你 用 的 脚 本 语 言 是 VBScript , 只 要 一 个 简 单 的 关 键 字 Call 再 加 上 程 序 名 就 可 以 了 。 如 果 你 要 调 用 的 程 序 有 参 数 , 要 把 参 数 用 括 号 括 起 来 。 如 果 你 省 略 关 键 字 Call , 括 号 也 要 省 略 。 下 面 例 示 了 在 同 一 ASP 页 中 用 两 种 不 同 的 脚 本 语 言 ( VBScript 和 JScript ) 创 建 和 调 用 程 序 。< HTML> < HEAD> < TITLE>Use different script in same page < /TITLE> < /HEAD> < BODY bgcolor="#FFFFFF"> < TABLE>< % Call Echo %> < /TABLE> < % Call PrintDate %> < /BODY> < /HTML> < SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Echo Response.Write _ "< TR>< TD>Name< /TD>< TD>Value< /TD>< /TR>" Set Params = Request.QueryString For Each p in Params Response.Write "< TR>< TD>" & p & "< /TD>< TD>" & _ Params(p) & "< /TD>< /TR>" Next End Sub < /SCRIPT>
< SCRIPT LANGUAGE=JScript RUNAT=Server>
在 服 务 器 端 使 用 VBScript 时 , 有 两 个 VBScript 的 特 性 不 能 使 用 。 因 为 脚 本 在 服 务 器 端 执 行 , VBScript 中 提 供 用 户 界 面 的 InputBox 和 MsgBox 就 不 支 持 了 。 另 外 , VBScript 的 函 数 CreateObject 和 GetObject 也 不 支 持 。 因 为 所 有 的 ASP 脚 本 都 在 服 务 器 端 执 行 , 就 不 需 要 象 使 用 客 户 端 脚 本 时 那 样 为 不 支 持 脚 本 的 浏 览 器 用 HTML 注 释 标 记 将 脚 本 隐 藏 起 来 。 所 有 的 脚 本 命 令 都 会 在 将 内 容 送 往 浏 览 器 之 前 处 理 。 但 你 可 以 在 脚 本 命 令 之 间 或 程 序 中 使 用 注 释 。 象 Basic 一 样 , 在 VBScript 中 有 两 种 形 式 的 注 释 可 用 : REM 或 单 引 号 。 如 下 例 所 示 :< % REM This line and the following line are comments ' Print greeting in green greeting = "How are you!" < font color="GREEN">< %= greeting %> %> 在 JScript 中 注 释 用 “ // ” , 如 下 例 所 示 : < % Call PrintDate %> < SCRIPT LANGUAGE=JScript RUNAT=Server> function PrintDate() { var x x = new Date() Response.Write(x.getDate()) } // This is a definition for the procedure PrintDate. // This procedure will send the current date // to the client-side browser. < /SCRIPT> |