ASP编程教程(六)

楼主
ASP编程教程(六)
[html]<p><span class="p9">相信很多急性子的朋友都已经等不急了,已经有一些朋友写
信给我,强烈要求开始对ASP对象和组件的介绍。从本篇开始作者就满足各位的要求,
作者将从ASP内建对象着手,为大家详细剖析ASP的六个内建对象和各种组件的特性和
方法。</span></p>

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

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

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

<p><span class="p9">  Setdb=Server.CreateObject
("ADODB.Connection")</span></p>

<p><span class="p9">  这里的变量db就是ASP程序创建的访问数据库的对象实
例。</span></p>

<p><span class="p9">  ActiveServerPages提供了可在脚本中使用的内建对
象。这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用
户信息,从而使对象开发者摆脱了很多烦琐的工作。目前的ASP版本总共提供了六个内
建对象,下面让我们将通过实例分别来进行学习。</span></p>

<p><span class="p9">  一、Request对象</span></p>

<p><span class="p9">  可以使用Request对象访问任何基于HTTP请求传递的所有
信息,包括从HTML表格用POST方法或GET方法传递的参数、cookie和用户认证。
Request对象使您能够访问客户端发送给服务器的二进制数据。</span></p>

<p><span class="p9">  Request的语法:</span></p>

<p><span class="p9">  Request[.集合|属性|方法](变量)</span></p>

<p><span class="p9">  在这里作者将挑选一些常用的对象语法进行分析
</span></p>

<p><span class="p9">  1、Form</span></p>

<p><span class="p9">  Form集合通过使用POST方法的表格检索邮送到HTTP请求
正文中的表格元素的值。</span></p>

<p><span class="p9">  语法</span></p>

<p><span class="p9">  Request.Form(element)[(index)|.Count]
</span></p>

<p><span class="p9">  参数</span></p>

<p><span class="p9">  element指定集合要检索的表格元素的名称。
</span></p>

<p><span class="p9">  index可选参数,使用该参数可以访问某参数中多个值中
的一个。它可以是1到Request.Form(parameter).Count之间的任意整数。
</span></p>

<p><span class="p9">  Count集合中元素的个数</span></p>

<p><span class="p9">  Form集合按请求正文中参数的名称来索引。
Request.Form(element)的值是请求正文中所有element值的数组。通过调用
Request.Form(element).Count来确定参数中值的个数。如果参数未关联多个值,则
计数为1。如果找不到参数,计数为0。要引用有多个值的表格元素中的单个值,必须
指定index值。index参数可以是从1到Request.Form(element).Count中的任意数
字。如果引用多个表格参数中的一个,而未指定index值,返回的数据将是以逗号分隔
的字符串。</span></p>

<p><span class="p9">  可以使用重述符来显示表格请求中的所有数据值。例
如,用户通过指定几个值填写表格,见下图。</span></p>

<p><span class="p9">  对于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> </span></p>

<p><span class="p9">  将以上代码剪贴到记事簿中(注意将“<”后面的空
格去掉),保存为form.asp文件并运行,request对象可以根据你在form中填入或选
择元素内容的不同将元素逐个显示出来。</span></p>

<p><span class="p9">  当然使用For...Next循环也可以生成同样的输出,如下
所示:</span></p>

<p><span class="p9">    < % </span></p>

<p><span class="p9">  For i = 1 To Request.Form
("hobby").Count </span></p>

<p><span class="p9">  Response.Write Request.Form("hobby")
(i) &
"< BR>"Next </span></p>

<p><span class="p9">  %> </span></p>

<p><span class="p9">  2、QueryString</span></p>

<p><span class="p9">  QueryString集合检索HTTP查询字符串中变量的值,HTTP
查询字符串由问号(?)后的值指定。如:</span></p>

<p><span class="p9">  <AHREF="example.asp?
string=thisisasample">stringsample</A></span></p>

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

<p><span class="p9">  语法</span></p>

<p><span class="p9">  Request.QueryString(variable)[(index)|.Count]
</span></p>

<p><span class="p9">  QueryString集合可以让您以名称检索QUERY_STRING变
量。Request.QueryString(参数)的值是出现在QUERY_STRING中所有参数的值的数
组。通过调用Request.QueryString(parameter).Count可以确定参数有多少个值。
</span></p>

<p><span class="p9">  我们也可以使用QueryString来达到与前一个范例相同的
功能。只需要将request.form部分替换如下:</span></p>

<p><span class="p9">  < % </span></p>

<p><span class="p9">  For Each i In Request.querystring
("hobby") </span></p>

<p><span class="p9">  Response.Write i & "<
BR>" </span></p>

<p><span class="p9">  Next </span></p>

<p><span class="p9">  %> </span></p>

<p><span class="p9">  3、Cookies</span></p>

<p><span class="p9">  什么是Cookie?Cookie其实是一个标签,当你访问一个
需要唯一标识你的站址的WEB站点时,它会在你的硬盘上留下一个标记,下一次你访问
同一个站点时,站点的页面会查找这个标记。每个WEB站点都有自己的标记,标记的内
容可以随时读取,但只能由该站点的页面完成。每个站点的Cookie与其他所有站点的
Cookie存在同一文件夹中的不同文件内(你可以在Windows的目录下的Cookie文件夹
中找到它们)。一个Cookie就是一个唯一标识客户的标记,Cookie可以包含在一个对
话期或几个对话期之间某个WEB站点的所有页面共享的信息,使用Cookie还可以在页
面之间交换信息。Request提供的Cookies集合允许用户检索在HTTP请求中发送的
cookie的值。这项功能经常被使用在要求认证客户密码以及电子公告板、WEB聊天室
等ASP程序中。</span></p>

<p><span class="p9">  语法</span></p>

<p><span class="p9">  Request.Cookies(cookie)[(key)|.attribute]
</span></p>

<p><span class="p9">  参数</span></p>

<p><span class="p9">  cookie指定要检索其值的cookie。</span></p>

<p><span class="p9">  key可选参数,用于从cookie字典中检索子关键字的值。
</span></p>

<p><span class="p9">  attribe指定cookie自身的有关信息。如:HasKeys只
读,指定cookie是否包含关键字。</span></p>

<p><span class="p9">  可以通过包含一个key值来访问cookie字典的子关键字。
如果访问cookie字典时未指定key,则所有关键字都会作为单个查询字符串返回。例
如,如果MyCookie有两个关键字,First和Second,而在调用Request.Cookies时并
未指定其中任何一个关键字,那么将返回下列字符串。</span></p>

<p><span class="p9">  
First=firstkeyvalue&Second=secondkeyvalue</span></p>

<p><span class="p9">  如果客户端浏览器发送了两个同名的cookie,那么
Request.Cookie将返回其中路径结构较深的一个。例如,如果有两个同名的的
cookie,但其中一个的路径属性为/www/而另一个为/www/home/,客户端浏览器同时
将两个cookie都发送到/www/home/目录中,那么Request.Cookie将只返回第二个
cookie。</span></p>

<p><span class="p9">  要确定某个cookie是不是cookie字典(cookie有否有关
键字),可使用下列脚本。</span></p>

<p><span class="p9">  <%=Request.Cookies
("myCookie").HasKeys%></span></p>

<p><span class="p9">  如果myCookie是一个cookie字典,则前面的赋值为
TRUE。否则,为FALSE。下面我们来看看一个cookie的应用实例:</span></p>

<p> </p>

<p><span class="p9">  < % </span></p>

<p><span class="p9">  nickname=request.form("nick")
response.cookies("nick")=nickname
</span></p>

<p><span class="p9">' 用 response 对 象 将 用 户 名 写 入 Cookie 之 中
</span></p>

<p><span class="p9">response.write " 欢 迎
"&request.cookies("nick")&" 光 临 小 站!
" </span></p>

<p><span class="p9">%> </span></p>

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

<p><span class="p9">< title>cookie< /title> </span></p>

<p><span class="p9">  < meta name="GENERATOR"
content="Microsoft
FrontPage 3.0">< /head> </span></p>

<p><span class="p9">  < body> </span></p>

<p><span class="p9">  < form method="POST"
action="cookie.asp"> </span></p>

<p><span class="p9">  < p>< input type="text"
name="nick"
size="20"> </span></p>

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

<p><span class="p9">  < /body>< /html> </span></p>

<p><span class="p9">  这其实是一个在基于WEB的BBS或CHAT的ASP程序中常用
的手法,它将用户在起始页面上填入的姓名保存在cookie中,这样后面的程序就可以
很容易地调用该用户的nick了。</span></p>

<p><span class="p9">  4、ServerVariables</span></p>

<p><span class="p9">  大家都知道在浏览器中浏览网页的时候使用的传输协议
是HTTP,在HTTP的标题文件中会记录一些客户端的信息,如:客户的IP地址等等,有
时服务器端需要根据不同的客户端信息做出不同的反映,这时候就需要用
ServerVariables集合获取所需信息。</span></p>

<p><span class="p9">  语法</span></p>

<p><span class="p9">  Request.ServerVariables(服务器环境变量)
</span></p>

<p><span class="p9">  由于服务器环境变量较多,作者仅将一些常用的变量在
下表中列出:</span></p>

<table border="1" cellPadding="4" cellSpacing="0" width="500">
<TBODY>
  <tr>
    <td width="100"><span class="p9">ALL_HTTP</span></td>
    <td width="400"><span class="p9">客户端发送的所有HTTP标题文件。
</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">CONTENT_LENGTH</span></td>
    <td width="73%"><span class="p9">客户端发出内容的长度。</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">CONTENT_TYPE</span></td>
    <td width="73%"><span class="p9">内容的数据类型。如:
“text/html”。同附加信息的查询一起使用,如HTTP查询GET、POST和PUT。
</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">LOCAL_ADDR</span></td>
    <td width="73%"><span class="p9">返回接受请求的服务器地址。如果在绑
定多个IP地址的多宿主机器上查找请求所使用的地址时,这条变量非常重要。
</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">LOGON_USER</span></td>
    <td width="73%"><span class="p9">用户登录WindowsNT的帐号。
</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">QUERY_STRING</span></td>
    <td width="73%"><span class="p9">查询HTTP请求中问号(?)后的信息。
</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">REMOTE_ADDR</span></td>
    <td width="73%"><span class="p9">发出请求的远程主机(client)的IP地
址。</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">REMOTE_HOST</span></td>
    <td width="73%"><span class="p9">发出请求的主机(client)名称。如果服
务器无此信息,它将设置为空的 MOTE_ADDR变量。</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">REQUEST_METHOD</span></td>
    <td width="73%"><span class="p9">该方法用于提出请求。相当于用于HTTP
的GET、HEAD、POST等等。</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">SERVER_NAME</span></td>
    <td width="73%"><span class="p9">出现在自引用URL中的服务器主机名、
DNS化名或IP地址。</span></td>
  </tr>
  <tr>
    <td width="27%"><span class="p9">SERVER_PORT</span></td>
    <td width="73%"><span class="p9">发送请求的端口号。</span></td>
  </tr>
</TBODY>
</table>

<p><span class="p9">  我们可以使用以下脚本打印出所有的服务器环境变量。
</span></p>

<p><span class="p9">  < TABLE> </span></p>

<p><span class="p9">  < TR>< TD>< B>Server
Variable< /B><
/TD>< TD><
B>Value< /B>< /TD>< /TR>< % For Each name
In Request.ServerVariables %> </span></p>

<p><span class="p9">  < TR>< TD> < %= name %>
< /TD><
TD> < %= Request.ServerVariables(name) %>
< /TD>< /TR>< /TABLE>
</span></p>

<p><span class="p9">  < % Next %> </span></p>

<p><span class="p9">  今天我们详细学习了ASP内建对象中的request对象,这
也是ASP程序中使用最频繁的对象,希望大家在课后多多实践。</span></p>[/html]

电脑版 Page created in 0.0630 seconds with 4 queries.