动态网站设计十八般武艺 ASP篇(六)

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

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

    什么是对象?它可不是指你恋爱的男伴或女伴。在面向对象编程中,对象就是指由当作完整实体的操作和数据组成的变量。对象是基于特定模型的,在对象中客户使用对象的服务通过由一组方法或相关函数的接口访问对象的数据,然后客户端可以调用这些方法执行某中操作。ActiveX组件是建立Web应用程序的关键,组件提供了在脚本中执行任务的对象。ActiveX组件是一个文件,该文件包含执行某项或一组任务的代码,由于组件可以执行公用任务,这样程序员们就不必自己去创建执行这些任务的代码。可以利用组件作为脚本和基于Web应用程序的基本构造块。只要知道如何访问组件提供的对象,即使是位编写脚本的新手,也可以在不了解组件运作方式的情况下编写脚本。总之,组件使您不用学习编程就能够编写强大的脚本。组件是包含在动态链接库.dll或可执行文件.exe中的可执行代码。组件可以提供一个或多个对象以及对象的方法和属性。要使用组件提供的对象,请创建对象的实例并将这个新的实例分配变量名。使用ASP的Server.CreateObject方法可以创建对象的实例,使用脚本语言的变量分配指令可以为对象实例命名。如下例:

Setdb=Server.CreateObject("ADODB.Connection")

    这里的变量db就是ASP程序创建的访问数据库的对象实例。

    ActiveServerPages提供了可在脚本中使用的内建对象。这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息,从而使对象开发者摆脱了很多烦琐的工作。目前的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值,返回的数据将是以逗号分隔的字符串。

    可以使用重述符来显示表格请求中的所有数据值。

asp06a.gif (1145 bytes)

    对于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查询字符串由问号(?)后的值指定。如:

stringsample

    生成值为"thisisasample"的变量名字符串。通过发送表格或由用户在其浏览器的地址框中键入查询也可以生成查询字符串。

语法

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有否有关键字),可使用下列脚本。

    如果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 用户登录WindowsNT的帐号。
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程序中使用最频繁的对象,希望大家在课后多多实践。