ASP编程:ASP/IIS可安装组件一
缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全iisASP/IIS的尺度安装包含一系列服务器组件,这些组件在IIS文档中被形貌为可安装组件(installablecomponent),只管缺省形态下它们是平安安装。但也有大概这个称号仅仅是相沿ASP的前几个版本中的名字。在之前版本中,这些组件必要野生安装。如今,假如要给它们起个符合的称号,可称为“可实例化的组件”。
必要注重的是,在第8章将先容一个特定的可安装组件,即ADO组件。前面的章节中利用的其他组件都是作为特定的服务或服务器使用程序的一部分而安装的。比方合作数据工具(CollaborativeDateObjects,简称CDO和CDONTS)组件,用于邮件服务器和电子邮件动静。本章的其他部分将会商,怎样利用其他通用性较强的组件为Web网站或Intranet供应加强功效。
在Windows2000中的WinNTSystem32intesrv目次下可找到这些ASP可安装组件,该目次也安排一些组件请求的设置文件。上面按字母按次列出了一些组件。
·AdRotator组件用于把持可点击图象的呈现,如告白或题目。利用存储在设置文件中的信息,AdRotator可以根据设置文件划定的比率显现分歧的图象,同时也具有把可点击的告白从头定位到响应的URL和纪录图象点击次数的特征。
·BrowserCapabilities组件利用UserAgent字符串,该字符串由扫瞄器发往服务器,用来辨认响应的扫瞄器。它供应了反应特定扫瞄器功效的一系列属性,比方是不是撑持剧本、cookie或Java小程序。
·ContentLinking组件用于供应一系列便利导航的页面,这些页面可被改动或更新而不用编纂各个页面。该组件接纳一个文本文件(含有页面URL和显现按次),使创立按指定按次链接起来的一些页面很简单。
·ContentRotator组件接纳一种设置文件来指定拔出到其他页面中的HTML、文本或程序代码,依据设置文件指定的情形,显现内容的任何部分。
·Counters组件可以创立、递增和永世地存储各个在剧本代码中利用的整数计数器的数值。
·LoggingUtility组件供应对Web服务器日记文件的会见,而且同意在一个ASP页面内读取和更新这些数据。这是Windows2000中随IIS5.0和ASP3.0新增的特征。
·MyInfo组件为可在全部网站内会见的称号/值对的存储供应了一个存储空间,这些数据在服务器上以XML格局的文本文件存储(分歧于使用程序感化域,这些数据在Web网站局限以外仍旧保存)。
·PageCounter组件纪录会见一个页面的次数,能够用于跟踪页面的点击次数。
·PermissionChecker组件有助于避免当一个用户试图会见没有准确的权限设置的资本时引发的剧本毛病。
·Tools组件供应了一些在页面中能够接纳的办法,这些办法用于查验一个文件是不是存在、处置HTML窗体、天生一个随机整数。别的另有一些用在Macintosh苹果盘算机上的办法,能够反省是不是存在某个服务器插件程序,反省以后用户是不是为网站具有者。
别的一个由IIS/ASP供应的组件,即Status组件,只能用于Macintosh盘算机的团体Web服务器上。本书没有触及该组件,若要具体懂得该组件,可经由过程HTTP://localhost/iis/htm/asp/complqt0.htm查阅ASP/IIS供应的IIS5.0文档。
6.2.1利用示例页面
本书已供应了一系列的示例页面来讲明一切这些组件的用法。
能够从WroxWeb网站高低载这些实例页面,并在本人的盘算机上运转。鄙人载的文件的Chapter06子目次中会找到本章所用的程序代码。
在运转示例页面之前,确保MyInfo和Counter组件的“全局”实例化代码已包括在缺省Web站点的global.asa文件中。在示例文件中供应了global.asa文件中所必要的代码,能够将这些代码加到现有的global.asa文件中,不必要改换全部文件。
<!--declareinstanceoftheASPCounterscomponentwithapplication-levelscope
-->
<OBJECTID="objCounters"RUNAT="Server"SCOPE="Application"
PROGID="MSWC.Counters">
</OBJECT>
<!--declareinstanceoftheASPMyInfocomponentwithapplication-levelscope
-->
<OBJECTID="objMyInfo"RUNAT="Server"SCOPE="Application"PROGID="MSWC.MyInfo">
</OBJECT>
示例文件的主菜单页面(Default.asp)利用ContentLinking组件创立到每个页面示例的链接。因而,我们将起首研讨这个组件,也触及了AdRotator和Counters组件的有关成绩。
6.2.2ContentLinking组件
ContentLinking组件对网站长短常有效的工具,它供应了内容页面,大概包括对统一站点上其他页面的链接列表的页面。它主动把以后显现页面的URL与存储在服务器里的文本文件的页面列表婚配起来而且能同意用户经由过程页面列表按正反按次举行扫瞄。也就是说,即便会见者已在内容页面中点击了一个链接而且正在检察列表中的某一个页面,该组件仍旧会识别出所会见的页面在列表中的地位。
由于一切具体材料均在一个文本文件中,保护网站和页面的链接仅仅必要编纂这个文本文件。比方能够经由过程在内容链接列表文件中从头分列页面的按次,来改动它们的显现按次。
1.内容链接列表的文件
内容链接列表文件包含一个复杂的按显现按次分列的URL列表,同时也供应了响应的形貌,用于在内容页面中显现链接文本。假如必要,还能够增添对每一个页面的正文,正文能够匡助辨认链接,但对会见者来讲正文是不成见的。
列表文件关于每一个页面包括一个文本行。每行由URL、形貌和正文所构成,各部分由Tab字符(不是空格,不然文件将不克不及事情)分开,最初有回车停止。比方:
newpages.htmNewadditionstooursiteweupdatethisweekly
offers.htmSpecialOffersforthisweekweonlyupdatethismonthly
register.htmRegistrationfornewusers
main.htmThemainforumandchatareamustberegisteredfirst
index.htmBacktothecontentspage
请注重方针URL必需由一个绝对的假造或物理的路径来讲明,诸如forumenter.htm。URL不克不及利用“http:”、“//”大概“”作为开首,假如要创立上述如许含有相对URL的菜单,可使用ASP创建一个从头定向页面,并且在内容链接列表文件中对其举行指定,比方,创建一个名为redirect.asp的页面,包括以下代码:
<%
redirecttherequesttothesitespecifiedinthequerystring
Response.Clear
Response.RedirectRequest.QueryString("url")
%>
能够在内容链接列表文件中按下述体例利用redirect.asp文件:
redirect.asp?url=http://www.cyscape.com/CyScapeBrowserHawkWebPages
redirect.asp?url=http://www.softartisans.com/SAfileUpComponentPages
redirect.asp?url=http://www.stonebroom.com/swindex.htmStonebroomRegExPages
2.ContentLinking组件的成员
ContentLinking组件供应了八种办法,如表6-1所示。这些办法可以检索来自内容链接列表文件的条目,既能相对以后页面检索条目,也能够利用索引号检索相对条目。第一个条目标索引号是1。
表6-1ContentLinking组件的办法及申明
方法
说明
GetListCount(links_file)
前往文件links_file中条目标数目
GetListIndex(links_file)
前往文件links_file中以后页面的索引号
GetNextURL(links_file)
前往文件links_file中下个页面的URL
GetNextDescription(links_file)
前往文件links_file中下个页面的形貌
GetPreviousURL(links_file)
前往文件links_file中前一个页面的URL
GetPreviousDescription(links_file)
前往文件links_file中前一个页面的形貌
GetNthURL(links_file,n)
前往文件links_file中第n个页面的URL
GetNthDescription(links_file,n)
前往文件links_file中第n个页面的形貌
假如以后页面不在内容链接列表文件中,则:
·GetListIndex前往0。
·GetNextURL和GetNextDescription前往列表文件中最初一个页面的URL和形貌。
·GetPreviousURL和GetPreviousDescription前往列表文件中第一个页面的URL和形貌。
3.利用ContentLinking组件
一旦创立了本人的内容链接文件,就能够把该组件增加到页面中。这里有一个典范的示例,它遍历内容链接文件中的一切条目,而且创立一个页面列表(以超链接暗示页面)。
<%inVBScript:
SetobjNextLink=Server.CreateObject("MSWC.Nextlink")
%>
<UL>
<%
getthenumberofentriesinthemenufile
intCount=objNextLink.GetListCount("contlink.txt")
loopthroughtheentries
ForintLoop=1TointCount%>
<LI>
<AHREF="<%=objNextLink.GetNthURL("contlink.txt",intLoop)%>">
<%=objNextLink.GetNthDescription("contlink.txt",intLoop)%>
</A>
<%
Next
%>
</UL>
这段代码起首创立了一个ContentLinking工具。在一般的<UL>和</UL>标志之间,利用ContentLinking工具的GetListCount办法查找在内容链接列表文件有几条目。然后再遍历这些条目,关于每个条目在页面中放进一个<LI>标志,前面随着一个<A>标志。HREF属性的值从列表文件中利用GetNthURL办法检索失掉,用作链接文本的形貌利用GetNthDescription办法失掉。
注重,内容列表文件和利用它的ASP页面应处在统一文件夹中。不然,应供应一个绝对物理路径或一个完全的假造路径,以下所示:
inCount=objNextLink.GetListCount("linkscontlink.txt")physicalpath
inCount=objNextLink.GetListCount("/demo/contlink.txt")virtualpath
(1)创立一个内容页面
我们已利用ContentLinking组件为本章供应的示例创立了菜单页面。Chapter06文件夹中的页面Default.htm接纳上述代码创立菜单,如-2所示:
能够看到内容链接列表文件的内容显现在链接的上面,我们利用FileSystemObject工具完成这一事情。
<%
createaninstanceofaFileSystemObjectobject
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
openthetextfileasaTextStreamobject
SetobjTStream=objFSO.OpenTextFile(Server.MapPath("contlink.txt"),ForReading)
Response.WriteobjTStream.ReadAllreadthewholefileandputintopage
ObjTStream.Close
%>
假如你编纂了contlink.txt文件,下次再次挪用这个页面时,会看到菜单的条目产生了变更。注重文件中的最初三个条目,这三个条目利用后面先容的redirect.asp手艺,把相对(而不是绝对)的URL拔出到列表中。
(2)扫瞄这些页面
创立一个ContentLinking组件实例而且利用它的一个办法时,将把以后页面的URL与指定的内容链接列表文件中的条目相婚配。不但能用该组件创立一个内容列表(就像刚看到的那样),并且当在扫瞄器上翻开个中一个页面时,能够用该组件对列表中的各个页面举行导航。
这意味着能够用超链接或按钮从这些页面中的一个移到另外一个。比方,能够给页面增加Next和Back按钮,经由过程利用GetNextURL和GetPreviousURL办法能晓得列表中的哪个页面是前一个,哪个页面是下一个。另外一方面,能用GetNthURL办法跳到列表中的任何页面,用GetListIndex办法能晓得以后页面在列表中的地位。
上面是一段给页面增加Next和Back按钮的代码,我们要做的只是把这段程序放在内容链接文件所列出的每页中,大概用SSI的#include指令将它拔出个中。
<!--needaformtoforceNavigatortodisplaythebuttons-->
<FORMACTION="">
<%
wellinsertthisintoeachpageusinganSSI#includestatement
createaninstanceoftheContentLinkingcomponent
SetobjNextLink=Server.CreateObject("MSWC.NextLink")
setthecontentlinkinglistfilepathandname
strListFile="contlink.txt"
gettheindexofthecurrentpageinthelist
intThisPage=objNextLink.GetListIndex(strListFile)
IfintThisPage>1Thencangoback
%>
<INPUTTYPE=BUTTONVALUE="<Back"
ONCLICK="location.href=<%=objNextLink.GetPreviousURL(strListFile)%>;"
TITLE="Goto<%=objNextLink.GetPreviousDescription(strListFile)%>">
<%
EndIf
%>
<INPUTTYPE=BUTTONVALUE="Menu"ONCLICK="location.href=Default.asp;"
TITLE="ReturntothemainInstallableComponentsmenu">
<%
IfintThisPage<objNextLink.GetListCount(strListFile)Thencangoforward
%>
<INPUTTYPE=BUTTONVALUE="Next>"
ONCLICK="location.href=<%=objNextLink.GetNextURL(strListFile)%>;"
TITLE="Goto<%=objNextLink.GetNextDescription(strListFile)%>">
<%
EndIf
%>
</FORM>
第一步是创立ContentLinking组件,然后把列表文件名存进一个变量中,以便前面在创立页面里的客户端JScript代码时可以利用这个列表文件。别的如许做也便于页面的保护,由于假如想利用一个分歧文件名仅需在一个中央改动就能够了。
如今让我们懂得一下在链接列表中所处的地位。GetListIndex办法供应以后页面的索引号,从列表中的第一页入手下手。假如以后页面的索引号比1年夜,那末能够前进,以是我们在页面中创立Back按钮。假如以后页面的索引号比列表中的项数少,创立Next按钮。页面中老是包含一个Home按钮,以便会见者在任什么时候候都能容易地前往到内容页面。
假如翻开列在主菜单中的页面之一的话,将会看到利用这项手艺在每一个页面上创立的一系列导航按钮,创立按钮的代码在文件contlinkbuttons.inc中,可用#include指令将它拔出每一个页面中。-3所示为带有按钮的界面。
在-3中有三个按钮,利用GetPreviousDescription办法取得上个页面的链接文件,并把这个文本放进Back按钮的TITLE属性中,作为弹出的提醒。
<INPUTTYPE=BUTTONVALUE="<Back"
ONCLICK="location.href=<%=objNextLink.GetPreviousURL(strListFile)%>;"
TITLE="Goto<%=objNextLink.GetPreviousDescription(strListFile)%>">
Next按钮接纳GetNextDescription办法完成相似的事情。
(3)用JavaScript跳转
这些导航按钮利用JavaScript(而不是VBScript)装载新页面,如许就可以够和年夜多半古代扫瞄器兼容。比方Back按钮包括上面的属性:
ONLICK="location.here=<%=objNextLink.GetPreviousURL(strListFile)%>;"
当页面的HTML版本由ASP创立时,在<%…%>标志中的表达式用其数值代替,以是发往扫瞄器的网页看起来以下所示:
ONCLICK="location.herf=permissionchecker.asp;"
为何选择利用变量来暗示内容链接列表文件的名字?其缘故原由是在单个语句中包含一个三层的嵌套援用长短常贫苦的。
注重扫瞄器的缺省言语是JavaScript(或IE中的JScript),而不是VBScript,经由过程利用JavaScript,能够制止在OnClick代码中必需供应LANGUAGE参数,同时对非IE扫瞄器供应兼容性。
6.2.3AdRotator组件
AdRotator组件同意扫瞄器在援用ASP页面时每次显现分歧的图象,这项手艺常常用在显现告白的站点上。每次翻开或从头载进页面时,ASP接纳“扭转调剂文件”(rotatorschedulefile)中的信息选择一副图象,并拔出网页中。但是AdRotator组件能做更庞大的事情,它能够把图象设置成超等链接而不是一副运动的图象,并能纪录用户对每一个告白的点击次数。
在本章所先容的组件中,AdRotator组件多是最难利用的,由于它触及几个分歧的文件。在检察每一个文件之前,-4所示的事情历程总览大概有助于懂得它们之间的组合体例。
1.扭转调剂文件
AdRotator组件依附于该文件来指定显现的告白或图象。这个文件包含每一个图象文件的名字、显现的尺寸巨细和显现工夫的绝对百分数。该文件分为两部分,由一个仅含有一个星号(*)的行分开。
文件格局以下:
REDIRECTURL
WIDTHwidth
HEIGHTheight
BORDERborder
*
adURL
adHomeURL
text
impressions
个中:
·URL是实行从头定向的ASP文件或程序的假造路径及称号。
·width和height界说了页面中告白条的巨细(以像素为单元),缺省值为440×60。
·border划定了告白条界限的宽度(以像素为单元),缺省值为1,无界限时为0。
第一部分是可选的,设置使用于该文件中一切告白条的缺省值。这给设置一切图象的参数供应了一种办法,界限宽度可使用AdRotator组件中的border属性来设置。假如疏忽了一项或多项此类任选参数,并且没有明白设置工具属性,那末参数就利用其自己和缺省值。假如疏忽一切这些参数,仍需包括“*”作为文件的第一行。
第二部分,即“*”后的部分,必需存在于该文件中,它供应了各个告白条的细节。关于每一个告白条,上面四个参数要反复利用。这些参数是:
·adURL,是告白图象文件的假造路径和文件名。
·adHomeURL,是告白跳转到的URL,连字符(-)标明该告白条没有链接。
·text,扫瞄器不撑持图型文件时显现的文本。
·impressions,是一个整数,指了然此告白条显现的绝对工夫或工夫比率,比方一个文件包括三个告白条,并且它们的impressions值分离设置为4、6和10,那末标明前往的页面中有20%大概呈现第一个告白条,30%呈现第二个告白条,50%呈现第三个告白条。这没有指明告白条在扫瞄器中显现的实践工夫。注重每个告白条的实践呈现是随机的,并被修正以到达必要的比率。
上面看一个从头定向文件的例子:
REDIRECTAdRotFiles/ad_redirect.asp
WIDTH400
HEIGHT50
*
Adrotfiles/wrox.gif
http://www.wrox.com/
BetterBooksfromWroxpress
3
AdRotFiles/lunar.gif
http://www.going-to-the-moon.com/store.asp
AcmeLunarBoostSupplies
1
2.AdRotator组件的成员
AdRotator组件含有一个办法和三个属性,办法如表6-2所示:
表6-2AdRotator组件的办法及申明
方法
说明
GetAdvertisement(schedule_file)
利用指定的schedule_file中的信息创立并前往一个字符串,这个字符串含有把下一个符合的图象拔出到该页面所需的HTML
属性如表6-3所示:
属性
说明
Border
整数型,是指告白条界限的宽度(以像素为单元),若未设定,则接纳文件第一部分设定的值
Clickable
布尔型,划定告白栏图象文件是不是显现为一个超等链接,缺省值为True
TargetFram
字符串型,方针框(frame)的名字。假如用户点击图象文件的话,这个框用于显现告白主的页面。假如疏忽的话,页面装载到以后扫瞄器的方针框或窗口内,代替含有告白栏图象的页面,这个属性也能设置成一个尺度的HTML框标识:_top、_new、_child、_self、_parent和_blank
3.利用AdRotator组件
上面的代码申明了AdRotator组件的利用。创立了组件实例以后,设置属性参数并挪用GetAdvertisement办法,指定调剂文件的绝对物理路径。由组件前往的HTML代码经由过程利用Response.Write办法拔出到页面中。
<%VBScriptexample
QUOT=Chr(34)
SetobjAdRot=Server.CreateObject("MSWC.AdRotator")
objAdRot.Border=0noborder
objAdRot.Clickable=TRUEisahyperlink
objAdRot.TargetFrame="fraAdFrame"loadintonewwindownamedfraAdFrame
strHTML=objAdRot.GetAdvertisement("AdRotFilesad_schedule.txt")
Response.Write(strHTML)puttheHTMLintothepage
%>
GetAdvertisement办法的参数是相对以后目次或Web网站根目次的调剂文件物理路径和文件名。在下面的代码中,此文件取名为AdRotFiles,位于包括正在运转的ASP页面确当前目次下的子目次中。假如这个文件存进Web网站根目次下的AdRotFiles子目次,应利用“AdRotFilesMyAdFile.txt”。
挪用GetAdvertisement办法时,前往能拔出网页顶用于创立告白栏的HTML代码,关于上例中的扭转调剂文件中的第一个告白栏,能够失掉以下代码:
<AHREF="/AdRotFiles/AdRedirect.asp?
url=http://www.wrox.com/&image=/AdRotFiles/AdPics/wrox.gif">
如今,运转这个ASP网页时,会主动把页面browscap_cookie.htm发送给客户机,客户机便运转这个举动特征,然后前往cookie,随后BrowserCapabilities组件把cookie的内容增加到组件实例的可用属性的列表中,查询办法与查询browscap.ini文件创立的属性所用的办法不异。
width:<B><%=objBCap.width%></B><BR>
height:<B><%=objBCap.height%></B><BR>
…
BrowserCapabilities示例网页显现两类系列数值,一类是从由browscap.ini文件决意的属性中搜集的数据,另外一类来自客户端cookie页面。固然,不限于仅仅搜集来自客户端页面中的clientCaps举动的值,利用静态HTML手艺能够查询扫瞄器的任何属性大概是像navigator.appName如许的传统工具属性。BrowserCapabilities组件示例页面如-8所示:
当然了,现在国内CRM厂商的产品与其说是CRM,但从至少从我的角度分析上来看,充其量只是一个大型的进销存而已了,了解尚浅,不够胆详评,这里只提技术问题 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 那么,ASP.Net有哪些改进呢? 交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: Session:这个存储跟客户端会话过程的数据,默认20分钟失效 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 掌握asp的特性而且一定要知道为什么。
页:
[1]