ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 动态网站设计十八般武艺——ASP篇(十四)(转)

动态网站设计十八般武艺——ASP篇(十四)(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-04-21 11:03:05 0 删除 编辑
最近仍有不少朋友来信问我,ASP是否只能在Microsoft IIS上运行,是否可以在非NT平台上运作?本来这个问题我已经回答过很多遍了:我只是听说过有某种可以支持的软件,却从没见过。但一些热情的朋友仍然孜孜不倦地来信询问,于是在朋友们的盛情之下,我访遍了ASP相关站点,竟惊奇的发现,原来ASP的确是可以运行在其它非NT平台上的,因此在本篇的开头,我就给来信的朋友们简要介绍一下如何在非NT平台上使用ASP。

  要在非NT平台上开发并运行ASP应用程序我们可以依赖于一套名为Instant ASP的第三方软件,它的广告标语非常吸引人“ASP Anytime,Anywhere”,我想所有ASP的开发者们看到如此的标语必然兴奋不已。这套由Halcyon软件公司开发的软件使得你无需重复开发原有ASP应用程序即可以将它运行在任何操作平台上!这样非但节省了大量的开发时间,而且使得ASP真正成为了一种跨平台的Internet、Intranet或Extranet应用程序。Instant ASP本身其实是一套基于Java的应用程序,因此通过它你可以将基于WEB的ASP应用程序运行在任何平台上,下表列出了Instant ASP目前版本所支持的操作平台。

  更令人吃惊的是Instant ASP不仅提供了ASP的运作环境,而且它较目前市场上的ASP应用还提供了更为强大和实用的功能,它将ActiveX组件和Enterprise Java Beans或者CORBA-compliant objects组合起来,从而使ASP有了更为广泛的应用。它同样提供了通过ADO接口访问连接各种数据库,并生成动态页面的强大功能。对于开发者而言可以使用自己擅长的编程语言或工具如:Visual Basic,JScript,VB Script,C++,Java,HTML,Delphi,MS Visual InterDev等等来进行开发。关于Instant ASP具体安装和操作我就不在这里展开了,有兴趣的朋友可以到它的站点上去看看halcyonsoft.com,你还可以免费下载一个试用版试试。

  继上一篇中作者给大家介绍了AD Rotator组件的使用方法后,今天我们接着来看看其它的一些ASP常用组件。

  一、Database Access组件

  我们在WEB服务器上运用WEB应用程序进行的最常见和最实用的任务就是访问服务器端的数据库。而ASP内建的Database Access组件使得我们能够轻而易举地通过ActiveX Data Objects(ADO)访问存储在服务器端的数据库或其他表格化数据结构中的信息。ADO是对当前微软所支持的数据库进行操作的最有效和最简单直接的方法,它是一种功能强大的数据访问编程模式,从而使得大部分数据源可编程的属性得以直接扩展到你的Active Server页面上。可以使用ADO去编写紧凑简明的脚本以便连接到Open Database Connectivity(ODBC)兼容的数据库和OLE DB兼容的数据源,这样ASP程序员就可以访问任何与ODBC兼容的数据库,包括MS SQL SERVER、Access、Oracle等等。如果您是一个对数据库连接有一定了解的脚本编写人员,那么您将发现ADO命令语句并不复杂而且容易掌握。同样地,如果您是一个经验丰富的数据库编程人员,您将会正确认识ADO的先进的与语言无关性和查询处理功能。熟悉VB数据库编程的朋友会发现ADO与RDO(Remote Data Objects)有某种类似的地方。但据说ADO的访问的速度更快,内存需要更小。

  下面给大家简要介绍一下利用ASP的Database Access组件通过ADO连接并操作WEB数据库的步骤

  第一步:指定想要连接的数据库,有DSN和DSN-less两种方法。

  DSN(Data Source Name数据源名称):建立一个系统数据源名称,方法如下:

  1、单击“开始”,选设置控制面板。

  2、双击图标“32位ODBC”,将弹出一个对话框,选标签“System DSN”

  3、单击“Add”添加一个DSN入口,选择如“Microsoft Access Drive”并确认。

  4、在“Data Source Name”栏里输入你希望指定的DSN,然后单击“Select”选择数据库存放位置,你可以按“Browse”来选取。

  5、以上步骤完成后在ASP程序中指定DSN,如下:

  <%connstr="DSN"%>

  DSN-less:是另一种通过在ASP文件里直接指定数据库文件所在位置,而无需建立DSN的方法。由于许多公司没有自己的WEB服务器,他们的网站往往是存放在远端的虚拟服务器上,因此要建立和修改DSN的设置比较麻烦。而使用DSN-less方法直接指定远端数据库所在位置恰恰解决了这一问题,方法如下:

<%
connstr="DBQ="+server.mappath("database/source.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver(*.mdb)};DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512;
MaxScanRows=8;PageTimeout=5;SafeTransactions=0;
Threads=3;UserCommitSync=Yes;"
%>

  在指定了想要连接的数据库后,就可以通过以下方法连接并打开数据库:

<%
Set Conn=Server.CreateObject("ADODB.Connection")

Conn.Open constr
%>

  第二步:指定想要执行的SQL指令,可以使用RecordSet。

  当连接了数据库后就可以对数据库进行操作,比如查询、删除、更新等等,这些操作都是通过SQL指令来完成的,如下例在数据库表datebase中查询所有姓名中有“A”的记录:

<%
sql="select * from datebase where name like 'A%%'"
Set rs=Conn.Execute(sql)
%>

  尽管Connection对象简化了连接数据库和查询任务,但Connection对象仍有许多不足。确切地说,检索和显示数据库信息的Connection对象不能用于创建脚本,您必须确切知道要对数据库作出的更改,然后才能使用查询实现更改。对于检索数据、检查结果、更改数据库,ADO提供了Recordset对象。正如它的名称所暗示的那样,Recordset对象有许多您可以使用的特性,根据您的查询限制,检索并且显示一组数据库行,即记录。Recordset对象保持查询返回的记录的位置,允许您一次一项逐步扫描结果。根据Recordset对象的指针类型属性设置,您可以滚动和更新记录。数据库指针可以让您在一组记录中定位到特定的项。指针还用于检索和检查记录,然后在这些记录的基础上执行操作。Recordset对象有一些属性,可用于精确地控制指针的行为,提高您检查和更新结果的能力。

  Recordset的使用方法如下:

  Set rs=Server.CreateObject("ADODB.Recordset")

  rs.Open SQL指令,Conn,1,1'读取

  或

  rs.Open SQL指令,Conn,1,3'新增、修改、或删除

  第三步:使用RecordSet属性和方法,并显示执行的结果。

  通过以上指令,我们创建了一个包含数据的游标(RecordSet)“rs”,事实上游标是存储在活动内存中的类似记录和字段的数组的东西,当通过RecordSet组件创建一个游标时,它从数据提供者的得到一个数据集,并用它来充实游标,我们可以想象ADO产生的RecordSet是一个象电子表格的记录,它有一行行的记录,在任何时候都有一行是它的当前行,而RecordSet的字段是用RecordSet的Field集合表示的。下面列出了所创建的RecordSet对象(游标)的一些属性和方法:

  rs.Fields.Count:RecordSet对象的字段总数。

  rs(i).Name:第i个字段的名称,i由0算起到rs.Fields.Count-1。

  rs(i):读取第i个字段的数据,i由0算起到rs.Fields.Count-1。

  rs("字段名称"):读取指定字段的数据。

  rs.RecordCount:游标中的数据记录总数。

  rs.EOF:是否已指到最后一条记录。

  rs.MoveNext:将指标移到下一笔记录。

  rs.MovePrev:将指标移到上一笔记录。

  rs.MoveFirst:将指标移到第一笔记录。

  rs.MoveLast:将指标移到最后一笔记录。

  rs.Close:关闭RecordSet对象

  有关ADO的其他介绍,作者将在今后给大家详细讲解。

  二、Content Linking组件

  如果你的网站有一系列相互关联的页面的话,ContentLinking组件将非常适合你的需求,它非但可以使你在这些页面中建立一个目录表,而且还可以在它们中间建立动态连接,并自动生成和更新目录表及先前和后续的Web页的导航链接。这对于列出联机报刊、电子读物网站以及论坛邮件是十分理想的选择。

  Content Linking组件创建管理URL列表的Next link对象,要使用Content Linking组件,必须需要先创建Content Linking List文件。Content Linking组件正是通过读取这个文件来获得处理我们希望链接的所有页面的信息。事实上该文件是一个纯文本文件,其内容如下:
page1.htm one
page2.htm two
page3.htm three
page4.htm four
page5.htm five
page6.htm six

  这个文本文件的每行有如下形式:

  url description comment

  其中,URL是与页面相关的超链地址,description提供了能被超链使用的文本信息,comment则包含了不被Content Linking组件解释的注释信息,它的作用如同程序中的注释。description和comment参数是可选的。

  下面我们来看看如何具体使用Content Linking组件:




网络电子读物宝藏


网络电子读物导航
<%
Set Link=Server.CreateObject("MSWC.NextLink")
count=Link.GetListCount("nextlink.txt")
Dim I
For I=1 to count
%>

  • "><%=Link.GetNthDescription("nextlink.txt",I)%>
    <%Next%>


      在以上代码中,我们先用GetListCount方法确定在文件nextlink.txt中有多少条项目,然后利用循环语句,并使用GetNthURL、GetNthDescription方法逐一将存储在nextlink.txt文件中的内容读出并显示给客户端浏览器。

      下面列出了Content Linking组件所有可使用的方法GetListCount(file)统计内容链接列表文件中链接的项目数。

      GetNextURL(file) 获取内容链接列表文件中所列的下一页的URL。

      GetPreviousDescription(file) 获取内容链接列表文件中所列的上一页的说明行。

      GetListIndex(file) 获取内容链接列表文件中当前页的索引。

      GetNthDescription(file,index) 获取内容链接列表文件中所列的第N页的说明。

      GetPreviousUR(file) 获取内容链接列表文件中所列的上一页的URL。

      GetNextDescription(file) 获取内容链接列表文件中所列的下一页的说明。

      GetNthURL(file,index) 获取内容链接列表文件中所列的第N页的说明。

      在我们创建了网站的总导航页面后,我们当然还希望在每一页中添加一个“上一页”、“下一页”的导航超链,下面我们就来看看如何实现导航超链。

      由于考虑到你的网站可能包含了上千或更多的页面,所以我们不可能在每一个页面中都编写实现导航超链的ASP代码。因此,我们必须利用前几篇中所学到的服务器端包容SSI,这样就避免了大量的重复作业,请看下例:

      <!--#includefile="nextprev.inc"-->

      只要将这端代码放在每个页面中即可。nextprev.inc文件的内容如下:

    <%
    Set Link=Server.CreateObject("MSWC.NextLink")
    count=Link.GetListCount("nextlink.txt")
    current=link.GetListIndex("nextlink.txt")
    If current>1 Then
    %>
    ">上一页
    <%
    End If
    If current%>
    ">下一页
    <%End If%>

      今天的学习又到此结束了,在这里我要再次感谢所有关心我的文章的朋友们,你们的来信给了我很大的鼓舞,不过请大家不要再称我为“老师”,其实我也和你们一样是在不断的学习和摸索中,有问题我们可以一起探讨,我的文章中肯定还存在很多不足或漏洞,也希望大家发现后能及时向我提出。由于近来ASP已经在国内的网站中广泛运用起来,所以应朋友们的要求,在国内ASP高手飞鸟的热情帮助下,我决定写一些ASP应用实例作为现在这篇文章的姊妹篇,这样也就可以为大家提供一些真正实用的东西了,敬请关注。


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-124359/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-29

  • 博文量
    2066
  • 访问量
    1479944