|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
懂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文件移到系统的相应目录下(如:winntsystem32 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配合开发。 返回类别: 教程 上一教程: W3 JMAIL 参考说明 下一教程: 一条SQL 语句搞定数据库分页 您可以阅读与"ASP中ACTIVEX控件的内嵌及调用"相关的教程: · ASP与ACTIVEX控件交互实战(一) · ASP与ACTIVEX控件交互实战(二) · ASP与ACTIVEX控件交互实战(三) · ASP调用WEBSERVICE文档 · 用ASP抓取某个网页的内容 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |