随笔-2  评论-0  文章-0  trackbacks-0
  2005年6月9日
ASP即Microsoft Active Server Pages 的简称。

ASP是一套微软开发的服务器端运行的脚本平台,ASP 内含于 IIS当中,目前IIS最高版本为5.0版本。

通过 ASP 我们可以结合HTML网页、 ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB 服务器应用程序。同时,asp也支持VbScript和JavaScript等脚本语言,默认为VbScript。

ASP是经过服务器解析之后再向浏览器返回数据,所以有了 ASP 就不必担心客户的浏览器是否能运行你所编写的代码。因为所有的程序都将在服务器端执行,包括所有嵌在普通 HTML 中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。

但是这样也导致一个问题,运行ASP页面相对于普通的html页面要慢一点,因为普通的html页面只需要浏览器就能够解析,而ASP则必须是服务器将整页的代码都执行一篇之后再发送数据。

对于ASP的优点特点,我就不多讲了。但是ASP的安全性还是要提一提,由于代码是需要经过服务器执行之后才向浏览器发送的,所以在客户端看到的只能是经过解析之后的数据,而无法获得源代码,故编写者不用担心自己的代码会被别人剽窃。
posted @ 2005-06-09 10:43 洪跃腾 阅读(204) | 评论 (0)编辑 收藏
我用的是中文NT4+IIS3,在传弟中文时,总是在后面加上一些莫名其妙的英文或其它字符。我曾在同样的系统上运行过同样的程序,正常。

  你 使 用 的 WEB Server 是 什 么 版 本 的 ? 那 么 ASP 的 版 本 呢 ? 如 果 你 使 用 的 是 Microsoft 的 Personal Web Server ( 安 装 于 PWIN95 ) 或 是 Internat Information Server 3.0 ( 安 装 于 PWINNT 4.0 + SP3) ,安 装 了 Visual Studio 97 内 Visual InterDev 1.0 附 带 的 ASP,那 么 你 可 能 就 会 遇 上 这 样 的 问 题 : 理 论 上 Request("Chinese") 应 该 等 于 “中国人” , 可 时 你 得 到 的 结 果 可 能 是 这 样 的 “中国人djk” , 后 面 跟 了 3 个 毫 不 相 干 的 字 母 。 这 样 的 结 果 当 然 不 是 你 要 的 。

  让 飞 鸟 来 给 你 分 析 一 下 原 因 吧 。 如 果 你 熟 悉 VB5.0 , 那 么 你 一 定 知 道 在 中 文 系 统 下 len("中国人") 等 于 3 , VB5.0 将 中 文 字 符 当 作 Unicode 。 AscW("中") 的 值 就 是 “中” 的 Unicode 码 ( 可 能 为 负 数 , 再 + 65536 变 成 正 数 即 是 ) 。 ASP 里 的 VB Script 也 这 么 处 理 。 那 么 多 余 的 乱 码 是 这 么 出 现 的 呢 ? 浏 览 器 会 将 中 文 编 成 2 个 字 节 再 提 交 到 WEB 服 务 器 , 这 样 服 务 器 得 到 的 字 符 长 度 便 是 6 , 但 是 实 际 上 “中国人” 的 长 度 是 3 , 乱 码 便 来 充 数 。

  幸 运 的 是 飞 鸟 现 在 安 装 了 Windows NT 4.0 Option Pack ( 西 文 版 ) , 它 里 面 带 的 IIS4.0 和 新 版 本 的 ASP 就 不 会 出 现 这 样 的 问 题 。
  如 果 你 使 用 的 是 恐 龙 时 代 的 IIS3.0 或 PWS , 使 用 这 样 一 个 函 数 或 许 能 行 。

<%Function HTMLCharacter(ByVal str)
 strHTML = ""
 nLen = Len(str)
 j = 0
 i = 0
 k = 1
 Do While (i < nLen)
  strC = Mid(str, k, 1)
  If (Asc(strC) < 0) Or (Asc(strC) > 256) Then
   j = j + 1
   i = i + 1
  End If
  i = i + 1
  k = k + 1
 Loop
 
 nLen = nLen - j
 For i = 1 To nLen
   strC = Mid(str, i, 1)
   If Asc(strC) >= 128 Then
     strHTML=strHTML+"&#"+CStr(Asc(strC))+";"
   Else
     strHTML = strHTML + strC
   End If
 Next
 HTMLCharacter = strHTML
End Function
%>
  调 用 方 法 : HTMLCharacter(Request("Chinese")) , 它 的 值 就 只 能 是 “中国人” , 请 不 要 用 于 非 Request 对 象 的 字 符 串 。

  后 记 : 本 文 几 天 前 刊 出 后 , 网 友 wangql 发 来 MAIL 指 出 , Request 出 现 多 余 字 符 , 是 因 中 文 NT + 西 文 IIS3.0 , 如 果 使 用 西 文 NT + 西 文 IIS3.0 就 不 会 出 现 这 种 问 题 。 网 友 wangql 认 为 IIS4.0 也 是 西 文 NT + 西文 IIS4.0 的 好 , 飞 鸟 有 点 赞 同 XXX 的 观 点 , 但 是 没 法 换 掉 现 在 的 操 作 系 统 ( 需 要 RMB 的 支 持 , 如 果 不 是 D 版 的 话 ) , 所 以 没 法 尝 试 。 飞 鸟 一 直 使 用 中 文 的 NT , 对 西 文 NT 不 了 解 , 如 果 西 文 下 , len("中国人")=6 的 话 , 就 不 会 出 现 本 文 开 头 所 诉 的 情 况 了 。
posted @ 2005-06-09 10:41 洪跃腾 阅读(230) | 评论 (0)编辑 收藏