|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。 写在后面的话:
一切写程序的人都晓得,当你渐渐对您要完成的功效睁开的时分,很年夜的时分,第一天写的器材第二天就忘了写到那边了,良多的时分,不能不写上具体的程序开辟条记,这在ASP的体系开辟中感到特别文件、函数庞大的时分,当我们盘算对网站的一部分功效举行修正的时分,感到无从动手大概感到要修正的中央。这时候候,假如您学过任何一门面向工具的编程的言语的话,天然想到怎样能把代码功效完成模块话,asp实质上不是面向工具的编程,但VBSCRPIT6.0供应了类,我们能够经由过程类完成代码的封装,完成模块话。
起首,我要在这里写上一些很官方的观点,意在申明面向工具是很详细化的,很实体的形式,不克不及让有些人瞥见“工具”就被吓跑了。
工具,就是能看到,感应,听到,触摸到,尝到或闻到的器材,在这里我们如许“界说”:工具是一个自包括的实体,用一组可辨认的特征和举动来标识。
在面向工具的编程(oop)的编程体例,用利用上面的两个术语。
类:这是工具的模板,界说了工具的特征。
实例:这是一个实在的工具,能够与之交互的器材。
属性,办法和事务
在OOP中,上面的术语形貌工具的特征:
属性:这是一个名次,形貌了某个工具的属性。
办法:这是一个动词,形貌了工具能够完成的事情,大概但愿它完成的事情。
事务:形貌了工具为响应某个举措而实行的操纵。
在编程时,工具的面向工具编程和面向工具计划的一部分,它们具有十分年夜的上风,很多人以为这是一个庞大的主题,但实践上,它十分复杂,能够用四个复杂的术语来注释:笼统、封装、多态和承继。
笼统:这是一个埋没庞大性,类的外部事情情形,以是用户不用晓得它的运作体例,就像。假如想要看电视,就不用晓得电视机时怎样事情的,只需翻开电视机,搜刮频道便可,on/off开关笼统了实践的操纵,在string例子里,有一个trim办法,它能够删除字符串尾部的空格,一样不必要晓得他是怎样完成这个义务的,只需晓得它有这个功效便可。
封装:每一个工具都包括举行操纵所必要的一切信息,这个工具称为封装,因而工具不比依附其他工具来完成本人的操纵,在术语TOupper()办法中,string不用到其他中央猎取信息来把一切的字符转换为年夜写。
多态:这个术语用于暗示分歧的工具能够实行不异的举措,但要经由过程他们本人的完成代码来实行,称号一样,但底层完成的代码是纷歧样的。
承继:它界说了类怎样互相联系关系,共享特征的,承继的事情体例是,界说类和子类,个中子类承继了父类的一切特征,承继的主要性是,它迫使范例类似的类具有分歧性,并同意共享代码,假如决意创立一个新类,就不用界说父类的一切特征。
在ASP中利用类,完成模块化
上面我经由过程举上几个复杂的例子申明一下,注重,这里夸大的是一种头脑,假如在您开辟ASP网站的时分能用一个类(基类)睁开的话,这是很有需要的(也是很有难度的)。
我们先选择一个复杂的例子:
我们要显现典范论坛用户的信息,当输出用户的ID今后能,显现出该用户的一些信息,这是一个历程,能够如许思索,我们把用户看成一个工具,他有的属性是ID,性别,积分,权限,完成的办法有显现这些信息,ok,如许写:
Classblueidea
Privatebname,bpoint,bsex,blevel
...................
endclass
这里先声了然一个名为blueidea的类,接着是一些公有变量,用于存储blueidea类的属性,这些变量在代码的内部不克不及会见,这就是数据回护,要界说这些变量,利用了property语句取得值直接的付给公有变量
-----------------------------------------------------------------
PropertyGetgetname
getname=bname
EndProperty
PropertyLetgetname(nameid)
bname=nameid
Ifnameid=""Then
bname="没注册用户"
EndIf
EndProperty
------------------------------------------------------------------
PropertyGetgetsex
getsex=bsex
EndProperty
PropertyLetgetsex(sex)
bsex=killint(sex,0,0)
Ifbsex=0Then
bsex="男"
Else
bsex="女"
Endif
EndProperty
------------------------------------------------------------------
PropertyGetgetpoint
getpoint=bpoint
EndProperty
PropertyLetgetpoint(point)
bpoint=killint(point,0,0)
EndProperty
------------------------------------------------------------------
这里有个killint函数,是判别数据正当性的,它的本相是:
PrivateFunctionkillint(i,killstr,killsub)
IfNotIsNumeric(i)Then
i=killstr
ElseIfi<=0Then
i=killsub
Endif
killint=Int(Left(i,5))
EndFunction
该函数功效很明白,不再烦琐说。
因为我们要经由过程积分判别用户级别,这里界说了一个公有函数:
PrivateFunctiongetlevel()
bpoint=killint(bpoint,0,0)
Ifbpoint<500Then
blevel="低级会员"
ElseIfbpoint>=500Andbpoint<=100Then
blevel="初级会员"
Else
blevel="最终会员"
EndIf
Getlevel=blevel
EndFunction
我们要得是回送用户的信息,必需界说一个public公用函数,显现信息:
PublicFunctionshowuser()
response.write("<h5>以下显现<fontcolor=red>"&bname&"</font>的材料:</h5>")
response.write("<h5>性别:<fontcolor=red>"&bsex&"</font></h5>")
response.write("<h5>积分:<fontcolor=red>"&bpoint&"</font></h5>")
getlevel
response.write("<h5>级别:<fontcolor=red>"&blevel&"</font></h5>")
EndFunction
Endclass
利用这个类的时分如许利用:(我在这里写了一个表单处置的)
Setblueideauser=newblueidea
blueideauser.getname=Trim(request("id"))
blueideauser.getsex=request("sex")
blueideauser.getpoint=request("point")
blueideauser.showuser
是否是想看看效果,那就看看这里: http://www.5do8.com/net/aspclass/class.asp
把持读取数据库信息的类:
参考源码
称号:ado_5do8
感化:读取数据库的各项操纵
来历-耕作村http://www.5do8.comhttp://www.Blueidea.com-5do8
创作:5do8
接洽:5do8@5do8.com
更新:2005年11月13日
受权:蓝色幻想网站积分凌驾3000,耕作村一切注册用户
类的接口:ado_5do8.ConnectString=数据库相对路径
ado_5do8.rs_top挪用数量,表的称号
Classado_5do8
Privateconn,sqlstr,rs,iid,itable,isession
sqlstr:数据库地点,为相对路径,公有
conn:翻开数据库的毗连,公有
------------------------------------------------------------------
rem打消一些不想要的数字
PrivateFunctionlitter_in(r1,r2)
IfIsNumeric(r1)andIsNumeric(r2)Then
Dimdimrr
Ifr1>r2Then
dimrr=r2
Else
dimrr=r1
EndIf
Else
dimrr=0
Endif
litter_in=dimrr
EndFunction
-----------------------------------------------------------------
PrivateFunctionkillint(i,killstr,killsub)
IfNotIsNumeric(i)Then
i=killstr
ElseIfi<=0Then
i=killsub
Endif
killint=Int(Left(i,5))
EndFunction
-----------------------------------------------------------
privateSubstartconn()
OnErrorResumeNext
Setconn=server.CreateObject("adodb.connection")
strconn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(sqlstr)
conn.openstrconn
IfErrThen
err.Clear
SetConn=Nothing
mess="产生毛病,不克不及毗连数据库"
response.write(mess)
response.End
Else
mess="毗连数据库conn乐成...........<br/>"
response.write(mess)
EndIf
EndSub
----------------------------------------------------------------
privateSubcloseconn()
conn.close
Setconn=Nothing
response.write("<strongstyle=color:red>封闭conn毗连</strong>...<hr/>")
Endsub
-----------------------------------------------------------------
PrivateSubclosers()
rs.close
Setrs=Nothing
response.write("<strongstyle=color:#085420>封闭数据库RS</strong>.......<br/>")
EndSub
-----------------------------------------------------------------
PropertyGethavese
havese=isession
EndProperty
PropertyLethavese(yoursession)
isession=yoursession
Ifyoursession=""Then
isession="nodef"
EndIf
EndProperty
-----------------------------------------------------------------
PublicFunctionmakesession(arraydata)
IfIsArray(arraydata)then
makear=arraydata
Else
makear=Array(0,0,0,0)
EndIf
Ifisession=""Then
isession="nodef"
Endif
session(isession)=makear
EndFunction
-----------------------------------------------------------------
privateFunctiongetsession()
thisget=session(isession)
IfNotIsArray(thisget)Then
thisget=Array(0,0,0,0)
EndIf
Getsession=thisget
Endfunction
-----------------------------------------------------------------
PropertyGetConnectString
ConnectString=sqlstr
EndProperty
PropertyLetConnectString(str)
sqlstr=str
EndProperty
-----------------------------------------------------------------
PropertyGetgetid
getid=iid
EndProperty
PropertyLetgetid(id)
iid=id
EndProperty
-----------------------------------------------------------------
PropertyGetgettable
gettable=itable
EndProperty
PropertyLetgettable(table)
itable=table
EndProperty
-----------------------------------------------------------------
------------------------------------------------------------------
publicFunctionreadarraysession(iStart,ipageno,irowid)
rowid=killint(irowid,0,0)
start=killint(istart,0,0)
pageno=killint(ipageno,5,5)
data=getsession
iRows=UBound(data,2)
iCols=UBound(data,1)
response.write("<h5>总数取得了:")
response.write("<b>"&iRows+1&"</b>条信息</h5><hr/><ulstyle=width:100%;>")
Ifrowid=0then
IfiRows>(ipageno+iStart)Then
iStop=ipageno+iStart-1
Else
iStop=iRows
EndIf
ForiRowLoop=StarttoiStop
Response.Write("<listyle=padding:4px0;><ahref=?k=read&rowid="&irowloop+1&">"&data(1,iRowLoop)&"</a><spanstyle=padding:4px04px10px;background-color:#ccc;>较慢,不保举点击--><ahref=?k=list&id="&data(0,irowloop)&">更新</a></span></li>")
Next
Response.Write"</ul><divstyle=top:20px;background-color:#ccc;color:#020;font-weight:bold;bordr-top:2pxsolid#008;padding:10px0;color:#b00>列表(<ahref=default.asp>回到典范形式</a>):"
ifStart>0then
Response.Write"<AHREF=""?k=read&Start="&iStart-ipageno&"&pageno="&ipageno&""">Previous</A>"
endif
ifiStop<iRowsthen
Response.Write"<AHREF=""?k=read&Start="&iStart+ipageno&"&pageno="&ipageno&""">Next</A>"
endIf
response.write"</div>"
Else
rowid=litter_in(rowid-1,iRows)
response.write("<divstyle=width:85%><h4style=text-align:center><ahref=?k=read&pageno="&pageno&"&start="&start&">前往列表</a></h4></h2><hr/><h5>"&server.htmlencode(data(1,rowid))&"</h5><p>"&server.htmlencode(data(2,rowid))&"<h5>+-----"&server.htmlencode(data(3,rowid))&"")
response.write("<div>")
Endif
EndFunction
-----------------------------------------------------------------
PublicFunctionlist_ids()
sql3="select*from"&itable&"whereid="&iid&""
startconn()
Setrs=conn.execute(sql3)
Ifrs.eofAndrs.bofThen
data=Array(0,0,0,0)
Else
data=Rs.GetRows()
EndIf
closers
closeconn
response.write(UBound(data)&":")
response.write(server.htmlencode(data(2,0)))
Endfunction
-----------------------------------------------------------------
PublicFunctionrs_top(num,table,whe)
startconn()
sql="selecttop"&num&"*from"&table&""
sql2="selectcount(*)asszd_countfrom"&table&""""&whe&""
Setrs=conn.execute(sql2)
szd_count=rs("szd_count")
closers
Setrs=Conn.Execute(sql)
dimdata
IfRs.EofThen
data="nodata"
Else
data=Rs.GetRows()
Endif
closers
closeconn()
Callmakesession(data)
EndFunction
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EndClass
利用的时分:
Dimaction
action=request("k")
Ifaction="view"Then
Callviewnew
ElseIfaction="list"Then
Calllist()
ElseIfaction="read"Then
Callread()
Else
Callff()
Endif
Subff()
%>
<formstyle="border-top:2pxsolid#008;border-bottom:2pxsolid#008;margin:auto;background-color:#eee;padding:20px5px;color:#008;font-weight:bold;">
<label>显现信息总数:<inputname="n"type="text"maxlength="4"size="10"/>每页数量:<inputname="pagesize"type="text"maxlength="4"size="10"value="5"/><inputname="arrstart"type="hidden"value="0"></label>
<h5style="border-top:1pxsolid#000;padding:5px0">操纵:<inputname="k"type="submit"value="view"/></h5>
</form><%Endsub%>
<%Subviewnew()
f_num=killint(request("n"),1,1)
pagesize=killint(request("pageno"),5,5)
arrstart=killint(request("start"),0,0)
rowid=killint(request("rowid"),0,0)
Setcs=newado_5do8
cs.ConnectString="data/a.mdb"
cs.havese="shi"
cs.rs_topf_num,"site_szd",""
cs.readarraysessionarrstart,pagesize,rowid
Endsub
Sublist()
response.write("<h5><ahref=default.asp>前往默许形式</a></h5>")
response.write"上面显现详细信息:<hr/>"
id=request("id")
id=killint(id,1,1)
Setlistid=newado_5do8
listid.ConnectString="data/a.mdb"
listid.getid=id
listid.gettable="site_szd"
listid.list_ids()
EndSub
Subread()
response.write"<divstyle=background-color:#ccc;padding:20px0;color:080;font-weight:bold;border-bottom:2pxsolid#008>页面剖析终了,要更新请选择<ahref=default.asp>回到典范形式</a>参数:Start,入手下手元素;pageno,每页条数</div>"
pagesize=killint(request("pageno"),5,5)
arrstart=killint(request("start"),0,0)
rowid=killint(request("rowid"),0,0)
Setcs=newado_5do8
cs.havese="shi"
cs.readarraysessionarrstart,pagesize,rowid
Endsub
Functionkillint(i,killstr,killsub)
IfNotIsNumeric(i)Then
i=killstr
ElseIfi<=0Then
i=killsub
Endif
killint=Int(Left(i,5))
EndFunction
%>
缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。 |
|