[转]ASP中ActiveX控件的内嵌及调用

懂ASP(Active Server Pages)的人很多,但能用ASP自如地调用ActiveX控件的人却不多;如果不调用ActiveX控件,则可以说微软当初设计ASP的初衷根本没有达到。众所周知,ActiveX技术是微软在Internet上除了IE外的另一个新举措,可以说该技术渗透在它的整个Internet策略中。ActiveX是一个功能强大的部件,可以用VB、C或C++等语言进行编写,因为是编译性执行,故速度比较快。 在ASP(Active Server Pages)中内建了多个功能强大的ActiveX Server控件,包括Ad Rotator(动态广告生成控件)、BrowserType Capabilities(浏览器相容控件)、Database Access(数据库存取控件)、Content Linking(文件链接控件)和File Access Component(文件存取控件)等。当然,ASP除了可以调用内嵌的ActiveX控件外,还可以调用其他用户编写的标准的ActiveX控件。  
    
      在使用控件前先要进行定义,如:<% Set对象变量名称=Server.CreateObject("ADODB.Connection") %>,或直接用HTML的<OBJECT>和</OBJECT>标记进行定义,效果一样。  
    
     例:<OBJECT RUNAT=SERVER

   ID=对象变量名称

   PROGID="ADODB.Connection">  
    
      </OBJECT>  
    
     定义好后,我们就可以开始调用它的方法来配合相关工作的进行。  
    
       
    
      一.内嵌各种ActiveX控件的方法和属性  
    
      1.Database Access(数据库存取控件)  
    
      这是一个非常重要的部分,因为50%以上的工作几乎都要涉及到数据库,使用该控件可以说是必不可少的。在ASP中使用ADO(Active Data Objects)来存取数据库资料,如果是远程的数据源,则可采用RDO(Remote Data Objects)。ADO包括以下七个对象类。  
    
      Command:定义一些特别的命令语法,让你可以执行相应的程式。  
    
      Connection:提供对OLE DB信息源的链接。  
    
      Error:用来描述存取数据库时发生的错误。  
    
      Field:以行作为读取信息单元。  
    
      Parameter:使用Command时需传入的参数。  
    
      Property:记录ADO对象的动态特性。  
    
      Recordset:用来保存读取回来的数据库信息。  
    
      下面以一个最普通的例子来说明读取数据库信息、然后发布该信息的步骤。首先在ODBC Driver里建立一个名字为test的System DSN,链接到你的任意一个数据库上;然后用写字板创建一个后缀名为.asp的文本,内容如下。  
    
      <HTML><BODY>  
    
      <%

   set DC=CREATEOBJECT("ADODB.CONNECTION")

   ;定义一个DC为Connection的对象

   DC.OPEN "test"

   ;OPEN是Connection的一个方法,如果你链接的是Access或Foxpro数据库,则可采用上面的方法,如果是其他类似于sql、oracle等需要用户名和密码才允许访问的数据库,则可通过DC.OPEN"test","uid","password"来打开数据库源。

   SQL="select * FROM JOB"

   set RESULT=DC.EXECUTE(SQL)

   ;EXECUTE是Connection的另一个方法,用于执行SQL语句。这里定义RESULT为RECORDSET对象,用于接收SQL语句执行后的返回结果。如果不需要保存返回结果,则可直接调用“DC.EXECUTE SQL"。

   DO WHILE NOT RESULT.EOF

   RESPONSE.WRITE RESULT("NAME")

   ;假设NAME是数据库的一个属性。

   RESULT.MOVENEXT

   ;除了MOVENEXT外,还有MOVEFIRST、MOVELAST等方法,与VB类似。

   LOOP

   RESULT.CLOSE

   %>  
    
      </BODY></HTML>  
    
      从上面的例子中,我们可以清楚地看到,链接OLE DB信息源最常用的类是Connection类,其方法包括OPEN、EXECUTE、CLOSE、BEGINTRANS、COMMITTRANS和ROLLBACKTRANS。如果你很熟悉SQL Script中的回滚操作,那么对BEGINTRANS一定不会感到陌生,最后三个方法是用于对一些事件进行回滚的操作,其语法如下(要补充的一点是,如果你能在数据库里完成回滚的操作,那么最好在数据库里进行,因为这样效率会更高,对系统的影响也就会更少)。  
    
      BEGINTRANS  
    
      语法:[level=]Connection 对象.BeginTrans  
    
      其中level是一long类型的变数,用来存储BeginTrans方法所传回的level值。  
    
      COMMITTRANS  
    
      语法:Connection 对象.CommitTrans  
    
      存储当前的所有动作和结果。  
    
      ROLLBACKTRANS  
    
      语法:Connection 对象.RollbackTrans  
    
      取消所有从BeginTrans开始的工作并重新进行初始化。  
    
      这里只对最常用的Connection类进行了详细的介绍,如果希望进一步了解Database Access其他类库,可访问http://www.microsoft.com/ado/站点。  
    
       
    
      2.Ad Rotator(动态广告生成控件)  
    
     广告在网络上的效果越来越为人们所认识,“网盟”(WebUnion)就是一个很好的范例。一个好的广告发布程序并不容易编写,因为你要考虑包括图片出现的频度、图片的名字、链接的地址、显示的尺寸、还有速度、效率和维护等诸多的问题。当然,如果你们是一个象WebUnion这样的大型站点,则这是必须的;但如果你们只是一个小站点,只是希望简单地动态显示一些图片(包括链接)和方便维护,那么Ad Rotator动态广告生成控件绝对是你的首选。  
    
      为了使你有一个直观的认识,我们将先介绍建立动态广告的步骤,然后再细述其方法。产生动态广告,要涉及到三个文件:主文件main.asp、文本文件info.txt、副文件redi.asp。  
    
      main.asp为要显示广告的页面,内容为:  
    
     <% Set ad=Server.CreateObject("MSWC.AdRotator")%>  
    
     <%= ad.GetAdvertisement("info.txt")%>  
    
     第一行是创建Ad Rotator类的对象,第二行用于取得广告资料。  
    
      info.txt是广告的资料,内容为:  
    
     redirect redi.asp  
    
     width 400  
    
     height 60  
    
     border 1  
    
     *  
    
       
    
     1.jpg  
    
     http://www.gznet.com  
    
     广州视窗  
    
     20  
    
       
    
     2.gif  
    
     http://zyr.yeah.net  
    
     网络新地带  
    
     30  
    
       
    
      第一行表示当用户点击图片时,系统自动调用redi.asp程序,下面依次为广告的宽度、高度和边宽,再下面为图片的名字、链接的地址、广告说明(在html中的标记为alt=...)和显示的频度。  
    
      redi.asp是当用户点击图片时,系统需调用的文件,它只做一个redirect的工作。内容为:  
    
     <%response.redirect(request.querystring("url"))%>  
    
     整个编写和维护工作都非常简单。如果你希望增加、减少或修改某些广告图片和链接地址,只需修改info.txt文本文件即可。Ad Rotator类有三个属性,Border(指定广告图片的边宽)、Clickable(指定该广告图片是否提供链接功能)、TargetFrame(指定点击超链接后的浏览页面)和一个方法GetAdvertisement(读取广告信息)。如果你采用了信息档案文本(txt),就不需要考虑Ad所提供的属性了,如前面的例子。  
    
       
    
      3.File Access Component(FileSystemObject,文件存取控件)  
    
      该控件主要用于读取Unicode或ASCII码的文件,包含的方法如下:  
    
     ·CreateTextFile  
    
      建立一个TextStream的对象,并指向实际操作的文本或希望建立的文件名及目录,如:  
    
      set FILE=CREATEOBJECT("SCRIPTING.FileSystemObject")  
    
      set F1=FILE.CreateTextFile("C:\TEST.TXT",TRUE)  
    
      ;True表示允许覆盖,False表示不允许覆盖,这里缺省了一个参数unicode,缺省和False表示建立的文件是ASCII格式,True表示文件为Unicode格式。  
    
      F1.WRITELINE("你好!")  
    
      F1.CLOSE  
    
      TextStream对象具有以下方法(即上文中的F1)。  
    
      Close:关闭对象  
    
      Read:读取已打开的文件资料,带参数指明希望读取的字节数,如:F1.Read(characters)。  
    
      ReadAll:读取已打开文件的全部信息(返回字符串)。  
    
      ReadLine:读取已打开文件的一行信息(返回字符串)。  
    
      Skip:跳过已打开的文件信息,带参数指明希望跳过的字节数,如:F1.Skip(characters)。  
    
      SkipLine:跳过已打开文件的一行信息。  
    
      Write:把资料写入到已打开的文件中,如:F1.Write(string)。  
    
      WriteLine:把信息写入到已打开的文件中并换行。  
    
      WriteBlankLine:把空行写入到已打开的文件中,带参数指明希望写入的空行数,如:F1.WriteBlankLine(lines)。  
    
     ·OpenTextFile  
    
     打开一个已存在的文件,并建立一个TextStream对象。  
    
     语法:[object].OpenTextFile(filename[,iomode[,create[,format]]])  
    
     参数说明:  
    
      object:自定义的FileSystemObject对象名称。  
    
      filename:希望打开的文件名称。  
    
      iomode:可选参数为ForReading(读取)或ForAppending(编辑)。  
    
      create:指定如果文件不存在,是否自行建立,True表示建立,False表示不建立。  
    
      format:可选参数为TristateTrue(以Unicode方式打开)、TristateFalse(以ASCII方式打开)、TristateUseDefault(用文件缺省形式打开)和缺省时以ASCII方式打开。  
    
       
    
      4.Content Linking(文件链接控件)  
    
      该控件用于管理一些超链接信息,例如:我们经常会在html文本中有一些友情链接,指向其他站点,如果我们在多个页面上有这些信息,修改时就需要做多次修改。使用了该控件后,所有这些链接信息都可放在同一个文本文件中,修改时只需对该文本文件进行修改。其方法如下:  
    
      GetListCount:计算URL列的总数。  
    
      语法:GetListCount(文件名)  
    
      GetNextURL:读取下一个URL链接地址。  
    
      语法:GetNextURL(文件名)  
    
      GetPreviousDescription:读取前一个URL链接的描述。  
    
      语法:GetPreviousDescription(文件名)  
    
      GetListIndex:获取当前资料的索引号码。  
    
      语法:GetListIndex(文件名)  
    
      GetNthDescription:获取当前索引号码的超链接的描述。  
    
      语法:GetNthDescription(文件名,索引号码)  
    
      GetPreviousURL:读取上一个URL链接地址。  
    
      语法:GetPreviousURL(文件名)  
    
      GetNextDescription:读取下一个URL链接的描述。  
    
      语法:GetNextDescription(文件名)  
    
      GetNthURL::获取当前索引号码的超链接地址。  
    
      语法:GetNthURL(文件名,索引号码)  
    
      调用该控件,可用下列代码:  
    
      ...  
    
      <% set LINK=SERVER.CREATEOBJECT("MSWC.NEXTLINK")%>  
    
      <%COUNT=LINK.GETLISTCOUNT("LINK.TXT")%>  
    
      <%I=1%>  
    
      <%DO WHILE (I<=COUNT)%>  
    
      <A HREF="<%=LINK.GETNTHURL("LINK.TXT",I)%>">  
    
      <%= LINK.GETNTHDESCRIPTION("LINK.TXT,I)%>  
    
        
    
     
  
    
      <%I=I+1%>  
    
      <%LOOP%>  
    
      ...  
    
      LINK.TXT的文件格式如下:  
    
      www.gznet.com广州视窗  
    
      zyr.yeah.net网络新地带  
    
       
    
      5.BrowserType Capabilities(浏览器相容控件)  
    
      通过ASP的Server内嵌对象可以获取如IP地址等客户端的信息,但如要获取如客户端浏览器是否支持ActiveX控件、背景音乐等客户端浏览器的详细资料则只能求助于BrowserType控件。该控件通过把客户端的请求报头与Browscap.ini文件进行比较,得出客户端浏览器的详细资料,通过读取该控件的属性可以获取相应的资料。  
    
      属性:  
    
      ActiveXControls:是否支持ActiveX Controls。  
    
      Backgroundsounds:是否支持背景音乐。  
    
      Beta:Beta的版本。  
    
      Browser:浏览器名称。  
    
      Cookies:是否支持cookies。  
    
      Frames:是否支持frame。  
    
      Javascript:是否支持javascript。  
    
      Platform:客户端平台。  
    
      Tables:是否支持table。  
    
      Vbscripts:是否支持vbscript。  
    
      Versions:版本名称。  
    
       
    
      二.如何调用用户编写的ActiveX控件  
    
      调用一些free或用户编写的ActiveX控件是ASP一个非常重要的高级应用,下面将用一个例子具体描述其调用步骤。因特网上最常见的就是下载功能了,而上载功能却不是每个站点都能提供。上载就是通过浏览器把客户端的文件传到服务器上,该例子就是一个实现上载功能的应用。为了简单起见,这里利用一个free的ftp ActiveX控件(当然也可以自己编写)来实现该功能。该控件名称为ASPINET.FTP,可从http://www.genusa.com/asp/站点处下载。该例子含两个文件,一个用于完成客户端选取文件的功能(select.html)、一个用于完成接受信息流的功能(receive.asp)。  
    
      1.安装该控件  
    
      1) 解压  
    
      2) 把DLL文件移到系统的相应目录下(如:\winnt\system32 for NT),并修改系统注册表;如果不是很熟悉系统注册表的修改,可执行以下命令,系统会自动完成所有工作(你的系统需要有WinInet.dll文件)。  
    
      regsvr32 ASPInet.DLL  
    
      3) 运行MarkInet.exe,使注册表中所修改的信息生效。  
    
      2.select.html  
    
     <html>  
    
     <body>  
    
     <form method=post action="receive.asp">  
    
     客户端的文件名:<input type="file" name="cfilename" >  
    
     <br>  
    
     上载到服务器后的文件名:<input type="text" name="sfilename" >  
    
     ;你可通过网页输入希望上载到服务器上的文件名称  
    
     <br>  
    
     <input type="submit" name="submit" value="确定“>  
    
     </form>  
    
     </body>  
    
     </html>  
    
      3.receive.asp  
    
     <%

  cfilename=request("cfilename")

  ;读取客户端的文件名及路径

  sfilename=request("sfilename")

  ;读取希望上载到服务器上的文件名

  FTP_TRANSFER_TYPE_ASCII = 1

  FTP_TRANSFER_TYPE_BINARY = 2

  set ftpconn=SERVER.CREATEOBJECT("AspInet.FTP")

  ;创建ftp ActiveX控件对象

  if FtpConn.FTPPutFile("Ftp服务器地址“,"anonymous", "user@hostname.net",sfilename,cfilename,FTP_TRANSFER_TYPE_BINARY) then

  ;参数说明:依次为Ftp服务器地址、使用者名字、密码、Server端文件名及路径(相对于Ftp根目录而言,该例子使用缺省目录,即Ftp根目录)、客户端的文件名及路径、传送类型(ASCII/Binary)

   Response.Write "<p>FTP upload Success...<br>"  
    
     else  
    
      Response.Write "<p>FTP upload Failed...<br>"  
    
     end if  
    
     %>  
    
      如果你已经熟练地掌握了ASP各内嵌对象,包括ActiveX控件的使用方法,则一般的应用对于你来说已不是难事。但要提高开发效率,则必须充分利用微软提供的ASP开发工具InterDev配合开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux C实现简单的shell

Linux C下实现简单的Shell 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 【需求描述】 用各种C函数实现一个简单的交互式Shell&#xff1a; 1、给出提示符&#xff0c;让用户输入一行命令&#xff0c;识别程序名和参数并调用适当的exec函数执行程序…

上拉电阻的作用

1、介绍使用微控制器&#xff08;MCUs&#xff09; 或任何数字逻辑设备时&#xff0c;上拉电阻器非常常见。本教程将解释何时何地使用上拉电阻器&#xff0c;然后我们将做一个简单的计算&#xff0c;以显示为什么上拉很重要。2、上拉电阻是什么&#xff1f;假设您有一个将一个引…

NILMTK——深扒组合优化(CO)和FHMM细节

前面的博客讲了具体实现&#xff0c;现在深究算法代码实现细节&#xff01;&#xff01;&#xff01; 1.CO (1)关于train 从以下代码可知&#xff0c;CO首先是对各个电器的功率数据做了train&#xff0c;为了了解其原生实现对代码进行了深究&#xff1a; classifiers {CO:…

Python关键字

and  as  assert  break  class  continue   def  del  elif  else  except  exec  finally   for  from  global  if  import  in  is  lambda not  or  pass  print  raise  return  try while  with  yield  Non…

对51CTO的初步看法

决定给自己见一个技术博客之后&#xff0c;在网上搜了一下&#xff0c;发现了51CTO网站&#xff0c;进入之后发现网速够快&#xff0c;有尝试了博客的功能&#xff0c;也基本满足了我的要求&#xff0c;那就是它了&#xff0c;于是我就在51CTO安家了。写了两片共近千字的文章之…

深圳工资指导价出炉!最高月薪6万!你拖同行后腿了吗?

2020 年只剩下不到一个月了&#xff0c;年初立的 flag 有没有实现呢&#xff1f;我想多数人面临的尴尬是升职、加薪、赢取白富美、走上人生巅峰可能一步都没实现~对比周围混得风生水起的小伙伴感觉自己也不差啥啊&#xff0c;怎么就莫名其妙被甩了八条街&#xff1f;想一探究竟…

NILMTK——因子隐马尔可夫之隐马尔可夫

因子隐马尔可夫(FHMM)由Ghahramani在1997年提出&#xff0c;是一种多链隐马尔可夫模型&#xff0c;适合动态过程时间序列的建模&#xff0c;并具有强大的时序模型的分类能力&#xff0c;特别适合非平稳、再现性差的序列的分析。 1. 马尔可夫链 随机过程的研究对象是随时间演变…

CodeForces 903D Almost Difference

题目描述 Lets denote a function You are given an array aa consisting of nn integers. You have to calculate the sum of d(a_{i},a_{j})d(ai​,aj​) over all pairs (i,j)(i,j) such that 1<i<j<n1<i<j<n . 输入输出格式 输入格式&#xff1a; The fi…

如何使用资源文件

摘要.NET 中有一套非常完善的地方化系统被定义在 System.Resources 名字空间中。不过大多数人都被 MissingManifestResourceException 这个错误困惑着。本文就是要让大家了解什么是资源文件&#xff0c;它有什么用处以及如何正确的调用从而避免一些"奇怪"的错误&…

据悉,深圳某工程师沦为C语言笔试枪手

事情是这样的&#xff0c;昨晚晚上&#xff0c;有个网友发消息给我&#xff0c;说他有几道C语言笔试题不会写&#xff0c;所以&#xff0c;就出现了解题的这一幕。文章中&#xff0c;我只讲解了一部分&#xff0c;有一些题目觉得没必要讲&#xff0c;然后我在pdf上做了注释&…

大数据工具使用——安装Hadoop(多台服务器)和Hive、Hbase

1.配置环境版本 资料上传百度云&#xff0c;自取&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1evVp5Zk0_X7VdjKlHGkYCw 提取码&#xff1a;ypti 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 &#xff08;之前安装的是apache版本的Hadoop2.6.4,在启…

进程间通信——信号

进程间通信——信号 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、信号和中断 1、信号基本概念 &#xff08;1&#xff09;发送信号&#xff1a;产生信号&#xff0c;有多种发送信号的方式【一个进程到另一个进程&#xff0c;内核向用户&#x…

[转] 关于 WCF 中数据压缩的几篇文章

原文:http://www.cnblogs.com/jiabao/archive/2007/12/04/982534.html在.net3.0出现以前我们进行分布式开发式有两个选择一个是webservice&#xff0c;另一个是remoting&#xff1b;在早期的项目中&#xff0c;比较喜欢remoting&#xff0c;因为remoting可控性好&#xff0c;也…

聊一聊我自己的从业经历和感悟

嵌入式学习&#xff0c;是一个很枯燥的过程&#xff0c;我记得在学习三极管的时候&#xff0c;我真的对这个东西一点感觉都没有&#xff0c;我知道三极管可以放大&#xff0c;然后电子从一个地方去到了另一个地方&#xff0c;然后就触发了某个开关&#xff0c;就发了大水。然后…

gmake与make的区别

gnu make在linux下一般是叫make但是如果是在其他的unix系统下&#xff0c;因为有一个原生的makegnu make就改个名字叫gmake了。就这们简单当port一个老的unix程序&#xff0c;如老的SunOS上的程序时往往需要sed s/gmake/make/ggmake是GNU Make的缩写。Linux系统环境下的make就是…

大数据——sqoop操作mysql和hive导出导入数据

1.sqoop安装 &#xff08;1&#xff09;下载CDH版本的sqoop &#xff08;2&#xff09;解压并进行环境配置 环境变量为&#xff1a; export SQOOP_HOME/home/sqoop-1.4.6-cdh5.15.1 export PATH$PATH:$SQOOP_HOME/bin 在sqoop安装目录/conf/下&#xff1a; #新建sqoop-en…

LinuxC高级编程——线程

LinuxC高级编程——线程 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、线程基础 main函数和信号处理函数是同一个进程地址空间中的多个控制流程&#xff0c;多线程也是如 此&#xff0c;但是比信号处理函数更加灵活&#xff0c;信号处理函数的控制…

来自专业的RIA咨询strechmedia机构提供的Flex组件

具体内容见这里&#xff0c;其中最有用的是chart range selection组件&#xff0c;可以用作历史数据浏览和分析&#xff0c;不光能用slider来选择查看的范围&#xff0c;还能控制范围的大小&#xff0c;而且通过图形也能对range selection进行反向操作&#xff0c;非常酷&#…

年终了,肿一下

也没有没有跟大家好好唠唠&#xff0c;一年时间过得飞快&#xff0c;我还记得那时候从老家开车来深圳&#xff0c;一路狂奔&#xff0c;在广西入境广东的时候&#xff0c;因为疫情排查&#xff0c;我们在那里堵了3个小时&#xff0c;还因为路途颠簸&#xff0c;车子一起一停&am…

大数据——spark安装部署和python环境配置

需要配置多台服务器&#xff0c;实验环境&#xff1a;master和data两台服务器&#xff0c;已安装好hadoop&#xff0c;可参考前文&#xff01;&#xff01;&#xff01; 1.spark安装 master安装 &#xff08;1&#xff09;下载scala和spark &#xff08;2&#xff09;解压并…