ASP内建对象Request


  从本篇开始作者从 ASP 内建对象着手,为大家 详尽 分析 ASP 的六个内建对象和各种组件的 特点和 步骤 。

  在正式开始学习 ASP 的内建对象和组件之前,先让我们来 意识一些 根本概念,这将对各位今后的学习大有协助 。请看下表 :

Active Server 随 Windows NT 交付的服务器方技术的 集中 。这些 技术为组件 利用程序治理、数据库 拜访、事务和 信息 提供 统一的服务器方组件、脚本模型和一套集成的系 统服务 。  
Active Server Pages (ASP) 在服务器上运行 ActiveX 脚本和 ActiveX 组件的服 务器方脚本环境 。开发人员 可以将脚本和组件 联合在 一同 缔造基于 Web 的 利用程序 。
ActiveX 同意开发人员为 World Wide Web 缔造交互式组件的 内涵 丰硕的Microsoft 技术术语 。同意用不同语言编写的软 件组件在网络环境中一同工作的一组不依赖语言的 互操作技术 。ActiveX 的 要害元素是组件对象模型 (COM) 和 分布组件对象模型 (DCOM) 。这些技术已得到开放组织的 许可,已移植到许多平台上 。
ADO Active 数据对象 。为基于 Internet 以数据为 核心的 利用程序而优化的一组基于对象的数据 拜访接口 。ADO 基于已公布的 标准而且随带在Microsoft Internet Information Server 和 Microsoft Visual InterDev 中 。
DSN 数据源名称 。开放式数据库接口 (ODBC)用于引 用 拜访数据所需的驱动程序或 其余信息的逻辑名称 。Internet信 息服务器用于衔接到 ODBC 数据源(如 SQL Server 数据库)的 名称 。
event: 事件 由消费者或 ActiveX 控件产生的程序响应的任何 操作 。普通事件包括按键盘键、通过 使用鼠标单击选 择按钮和 其余鼠标操作 。编程人员编写响应这些操作 的代码 。  
object: 对象 在面向对象编程中,由当作 完全实体的操作 和数据构成的变量 。对象是基于特定模型的,在对象 中客户 使用对象的服务通过由一组 步骤或 有关函数 的接口 拜访对象的数据 。 而后客户端 可以调用这些方 法执行某中操作 。
ODBC 开放式数据库接口 。同意 利用程序从各种跨 平台数据 拜访的已有数据源 标准规格中 拜访数据的 利用程序编程接口 。   SQL 构造化 查问语言 Structured Query Language 。定义和访 问关系型数据库的国际 标准 。     

  什么是对象?它可不是指你恋爱的男伴或女伴 。在面向对象编程中,对象便是指由当作 完全实体的操作和数据构成的变量 。对象是基于特定模型的,在对象中客户 使用对象的服务通过由一组 步骤或 有关函数的接口 拜访对象的数据, 而后客户端 可以调用这些 步骤执行某中操作 。ActiveX 组件是 构建 Web 利用程序的 要害,组件提供了在脚本中执行 使命的对象 。ActiveX 组件是一个文件,该文件包括执行某项或一组 使命的代码,因为组件 可以执行公用 使命,这样程序员们就 毋庸自己去 缔造执行这些 使命的代码 。 可以利用组件作为脚本和基于 Web 利用程序的 根本 构造块 。 惟独晓得如何 拜访组件提供的对象, 即便是位编写脚本的新手,也 可以在不了解组件运作 模式的状况下编写脚本 。总之,组件使您不用学习编程就 可以编写 壮大的脚本 。组件是包括在动态链接库 .dll 或可执行文件 .exe 中的可执行代码 。组件 可以提供一个或多个对象以及对象的 步骤和属性 。要 使用组件提供的对象,请 缔造对象的实例并将这个新的实例 调配变量名 。 使用 ASP 的 Server.CreateObject 步骤 可以 缔造对象的实例, 使用脚本语言的变量 调配指令 可 认为对象实例命名 。如下例:

  Set db=Server.CreateObject("ADODB.Connection")

  这里的变量 db 便是 ASP 程序 缔造的 拜访数据库的对象实例 。

  Active Server Pages 提供了可在脚本中 使用的内建对象 。这些对象 运消费者更方便收集通过阅读器 申请发送的信息、响应阅读器以及存储消费者信息 , 从而使对象开发者 开脱了众多 繁琐的工作 。当前的 ASP 版本总共提供了六个内建对象,下面让我们将通过实例分别来进行学习 。

  一、Request 对象

   可以 使用 Request 对象 拜访任何基于 HTTP 申请传递的全部信息,包括从 HTML 表格用 POST 步骤或 GET 步骤传递的参数、cookie 和消费者认证 。Request 对象使您 可以 拜访客户端发送给服务器的二进制数据 。

  Request 的语法 :

  Request[. 集中 | 属性 | 步骤 ]( 变量 )

  在这里作者将 取舍一些常用的对象语法进行 综合

  1、Form

  Form 集中通过 使用 POST 步骤的表格检索邮送到 HTTP 申请 诠释中的表格元素的值 。

  语法

  Request.Form(element)[(index)|.Count]

  参数

  element 指定 集中要检索的表格元素的名称 。

  index 可选参数, 使用该参数 可以 拜访某参数中多个值中的一个 。它 可以是 1 到 Request.Form(parameter).Count 中间的任意整数 。

  Count 集中中元素的个数

  Form 集中按 申请 诠释中参数的名称来索引 。Request.Form(element) 的值是 申请 诠释中全部 element 值的数组 。通过调用 Request.Form(element).Count 来确定参数中值的个数 。假如参数未关联多个值,则计数为 1 。假如找不到参数,计数为 0 。要 引用有多个值的表格元素中的单个值,必须指定 index 值 。Index 参数 可以是从 1到Request.Form(element).Count 中的任意数字 。假如 引用多个表格参数中的一个,而未指定 index 值,返回的数据将是以逗号分隔的字符串 。

   可以 使用重述符来显示表格 申请中的全部数据值 。例如,消费者通过指定几个值填写表格,见下图 。

 

  关于 hobby 参数,您 可以 使用下面的脚本检索这些值 。  < html>   < head>< title>< /title>< /head>   < body>   < p> 请填写你的 爱好 < /p>   < form method="POST" action="form.asp">   < p>< input type="text" name="hobby" size="20">< br>   < input type="checkbox" name="hobby" value=" 足球 "> 足球 < input type="checkbox"   name="hobby" value=" 乒乓球 "> 乒乓球 < /p>   < p>< input type="submit" value=" 发送 " name="B1">< input type="reset" value=" 重填 "   name="B2">< /p>   < /form>   < %   For Each I In Request.Form("hobby")   Response.Write I & "< BR>"   Next   %>   < /body>< /html>

  将以上代码剪贴到记事簿中( 留神将“< ”后面的空格去掉), 保留为 form.asp 文件并运行,request 对象 可以依据你在 form 中填入或 取舍元素内容的不同将元素一一显示出来 。

  固然 使用 For...Next 循环也 可以生成同样的输出,如下所示 :

  < %

  For I = 1 To Request.Form("hobby").Count

  Response.Write Request.Form("hobby")(I) & "< BR>"Next

  %>

  2、QueryString

  QueryString 集中检索 HTTP 查问字符串中变量的值 ,HTTP 查问字符串由问号 (?) 后的值指定 。如:

  < A HREF= "example.asp?string=this is a sample">string sample< /A>

  生成值为 "this is a sample" 的变量名字符串 。通过发送表格或由消费者在其阅读器的地址框中键入 查问也 可以生成 查问字符串 。

  语法

  Request.QueryString(variable)[(index)|.Count]

  QueryString 集中 可以让您以名称检索 QUERY_STRING 变量 。Request.QueryString( 参数 ) 的值是浮现在 QUERY_STRING 中全部参数的值的数组 。通过调用Request.QueryString(parameter).Count 可以确定参数有多少个值 。

  我们也 可以 使用 QueryString 来达到与前一个范例 雷同的 性能 。 惟独求将 request.form 部分替换如下:

  < %

  For Each I In Request.querystring("hobby")

  Response.Write I & "< BR>"

  Next

  %>

  3、Cookies

  什么是 Cookie?Cookie 其实是一个标签,当你 拜访一个需求唯一标识你的站址的 WEB 站点时,它会在你的硬盘上留下一个标记,下一次你 拜访同一个站点时,站点的页面会搜索这个标记 。每个 WEB 站点都有自己的标记,标记的内容 可以随时读取,但不得不由该站点的页面 实现 。每个站点的 Cookie 与 其余全部站点的 Cookie 存在同一文件夹中的不同文件内(你 可以在 Windows 的目录下的 Cookie 文件夹中找到它们) 。一个 Cookie 便是一个唯一标识客户的标记,Cookie 可以包括在一个对话期或几个对话期中间某个 WEB 站点的全部页面共享的信息, 使用 Cookie 还 可以在页面中间 交换信息 。Request 提供的 Cookies 集中同意消费者检索在 HTTP 申请中发送的 cookie 的值 。这项 性能 时常被 使用在要求认证客户密码以及电子布告板、WEB 聊天室等 ASP 程序中 。

  语法

  Request.Cookies(cookie)[(key)|.attribute]

  参数

  cookie 指定要检索其值的 cookie 。

  key 可选参数,用于从 cookie 字典中检索子 要害字的值 。

  attribe 指定 cookie 本身的有关信息 。如:HasKeys 只读,指定 cookie 是否包括 要害字 。

   可以通过包括一个 key 值来 拜访 cookie 字典的子 要害字 。假如 拜访 cookie 字典时未指定 key,则全部 要害字都会作为单个 查问字符串返回 。例如,假如 MyCookie 有两个 要害字 ,First 和Second,而在调用 Request.Cookies 时并未指定其中任何一个 要害字,那么将返回下列字符串 。

  First=firstkeyvalue&Second=secondkeyvalue

  假如客户端阅读器发送了两个同名的 cookie,那么 Request.Cookie 将返回其中路径 构造较深的一个 。例如,假如有两个同名的的 cookie,但其中一个的路径属性为 /www/ 而另一个为 /www/home/,客户端阅读器同时将两个 cookie 都发送到 /www/home/ 目录中,那么 Request.Cookie 将只返回第二个 cookie 。

  要确定某个 cookie 是否 cookie 字典(cookie 有否有 要害字),可 使用下列脚本 。

  < %= Request.Cookies("myCookie").HasKeys %>

  假如 myCookie 是一个 cookie 字典,则前面的赋值为 TRUE 。不然,为 FALSE 。下面我们来看看一个 cookie 的 利用实例:

  < %

  nickname=request.form("nick")response.cookies("nick")=nickname ' 用 response 对象将消费者名写入 Cookie 之中 response.write " 欢送 "&request.cookies("nick")&" 光临小站!"

%>

  < html>< head>< meta http-equiv="Content-Type" content="text/html; charset=gb2312">

< title>cookie< /title>

  < meta name="GENERATOR" content="Microsoft FrontPage 3.0">< /head>

  < body>

  < form method="POST" action="cookie.asp">

  < p>< input type="text" name="nick" size="20">

< input type="submit" value=" 发送 " name="B1">< input type="reset" value=" 重填 " name="B2">< /p>< /form>

  < /body>< /html>

  这其实是一个在基于 WEB 的 BBS 或 CHAT 的 ASP 程序中常用的手法,它将消费者在起始页面上填入的姓名 保留在 cookie 中,这样后面的程序就 可以很方便地调用该消费者的 nick 了 。

  4、ServerVariables

  大家都晓得在阅读器中阅读网页的时候 使用的传输 协定是 HTTP,在 HTTP 的 题目文件中会记录一些客户端的信息,如 : 客户的 IP 地址等等,有时服务器端需求依据不同的客户端信息做出不同的反映,这时候就需求用 ServerVariables 集中猎取所需信息 。

  语法

  Request.ServerVariables ( 服务器环境变量 )

  因为服务器环境变量较多,作者仅将一些常用的变量在下表中列出 :

ALL_HTTP 客户端发送的全部 HTTP 题目文件 。
CONTENT_LENGTH 客户端发出内容的长度 。
CONTENT_TYPE 内容的数据类型 。如:“text/html” 。同附加信息 的 查问一同 使用,如 HTTP 查问 GET、POST 和 PUT 。
LOCAL_ADDR 返回 承受 申请的服务器地址 。假如在绑定多 个 IP 地址的多宿主机器上搜索 申请所 使用的地址 时,这条变量十分主要 。
LOGON_USER 消费者登录 Windows NT 的帐号 。
QUERY_STRING 查问 HTTP 申请中问号(?)后的信息 。
REMOTE_ADDR 发出 申请的远程主机 (client) 的 IP 地址 。
REMOTE_HOST 发出 申请的主机 (client) 名称 。假如服务器无此 信息,它将设置为空的 MOTE_ADDR 变量 。
REQUEST_METHOD 该 步骤用于提出 申请 。相当于用于 HTTP 的 GET、HEAD、POST等 等 。
SERVER_NAME 浮现在自 引用 URL 中的服务器主机名、DNS 化名 或 IP 地址 。
SERVER_PORT 发送 申请的端口号 。

  我们 可以 使用以下脚本打印出全部的服务器环境变量 。

  < TABLE>

  < TR>< TD>< B>Server Variable< /B>< /TD>< TD>< B>Value< /B>< /TD>< /TR>< % For Each name In Request.ServerVariables %>

  < TR>< TD> < %= name %> < /TD>< TD> < %= Request.ServerVariables(name) %> < /TD>< /TR>< /TABLE>

  < % Next %>

  今日我们 详尽学习了 ASP 内建对象中的 request 对象,这也是 ASP 程序中 使用最频繁的对象, 盼望大家在课后多多 实际 。