莫相离 发表于 2015-1-16 22:06:02

ASP网站制作之ASP模板类代码

ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;ClassTemplate

Privatem_FileName,m_Root,m_Unknowns,m_LastError,m_HaltOnErr
Privatem_ValueList,m_BlockList
Privatem_RegExp
PrivateSubClass_Initialize
Setm_ValueList=CreateObject("Scripting.Dictionary")
Setm_BlockList=CreateObject("Scripting.Dictionary")
setm_RegExp=NewRegExp
m_RegExp.IgnoreCase=True
m_RegExp.Global=True
m_FileName=""
m_Root="."
m_Unknowns="remove"
m_LastError=""
m_HaltOnErr=true
EndSub

PrivateSubClass_Terminate
Setm_RegExp=Nothing
Setm_BlockMatches=Nothing
Setm_ValueMatches=nothing
EndSub

PublicPropertyGetClassName()
ClassName="Template"
EndProperty

PublicPropertyGetVersion()
Version="1.0"
EndProperty
PrivateFunctionLoadFile(ByValchartype)
DimFilename,fso,hndFile
Filename=m_Root
IfRight(Filename,1)"/"AndRight(Filename,1)""ThenFilename=Filename&"/"
Filename=Server.MapPath(Filename&m_FileName)
SetStreamObject=Server.CreateObject("Adodb.Stream")
StreamObject.Type=1
StreamObject.Mode=3
StreamObject.Open
StreamObject.Position=0
StreamObject.LoadFromFileFilename
StreamObject.Position=0
StreamObject.Type=2
StreamObject.CharSet=chartype
LoadFile=StreamObject.readtext()
IfLoadFile=""ThenShowError("0x11<br>CouldNotLoadTheFile"&m_FileName&"!")
EndFunction

PrivateSubShowError(ByValmsg)
m_LastError=msg
Response.Write"<spanstyle=""font-size:12px;color:red"">ErrorID:"&msg&"</span>"
Ifm_HaltOnErrThenResponse.End
EndSub

PublicSubset_root(ByValValue)
m_Root=Value
EndSub
PublicFunctionget_root()
get_root=m_Root
EndFunction
PublicPropertyLetRoot(ByValValue)
set_root(Value)
EndProperty
PublicPropertyGetRoot()
Root=m_Root
EndProperty

PublicSubset_file(ByValhandle,ByValfilename,ByValchartype)
m_FileName=filename
m_BlockList.AddHandle,LoadFile(chartype)
EndSub
PublicFunctionget_file()
get_file=m_FileName
EndFunction
PublicSubset_unknowns(ByValunknowns)
m_Unknowns=unknowns
EndSub
PublicFunctionget_unknowns()
get_unknowns=m_Unknowns
EndFunction
PublicPropertyLetUnknowns(ByValunknown)
m_Unknowns=unknown
EndProperty
PublicPropertyGetUnknowns()
Unknowns=m_Unknowns
EndProperty

PublicSubset_block(ByValParent,ByValBlockTag,ByValName)
DimMatches
m_RegExp.Pattern="<!--s+BEGIN"&BlockTag&"s+-->(*)<!--s+END"&BlockTag&"s+-->"
IfNotm_BlockList.Exists(Parent)ThenShowError("0x12<br>UndefinedBlockTag"&Parent&"!")
setMatches=m_RegExp.Execute(m_BlockList.Item(Parent))
ForEachMatchInMatches
m_BlockList.AddBlockTag,Match.SubMatches(0)
m_BlockList.Item(Parent)=Replace(m_BlockList.Item(Parent),Match.Value,"{"&Name&"}")
Next
setMatches=nothing
EndSub

PublicSubset_var(ByValName,ByValValue,ByValAppEnd)
DimVal
IfIsNull(Value)ThenVal=""ElseVal=Value
Ifm_ValueList.Exists(Name)Then
IfAppEndThenm_ValueList.Item(Name)=m_ValueList.Item(Name)&Val_
Elsem_ValueList.Item(Name)=Val
Else
m_ValueList.AddName,Value
EndIf
EndSub

PublicSubunset_var(ByValName)
Ifm_ValueList.Exists(Name)Thenm_ValueList.Remove(Name)
EndSub

PrivateFunctionInstanceValue(ByValBlockTag)
Dimkeys,i
InstanceValue=m_BlockList.Item(BlockTag)
keys=m_ValueList.Keys
Fori=0Tom_ValueList.Count-1
InstanceValue=Replace(InstanceValue,"{"&keys(i)&"}",m_ValueList.Item(keys(i)))
Next
EndFunction

PublicSubparse(ByValName,ByValBlockTag,ByValAppEnd)
IfNotm_BlockList.Exists(BlockTag)ThenShowError("0x12<br>UndefinedBlockTag"&Parent&"!")
Ifm_ValueList.Exists(Name)Then
IfAppEndThenm_ValueList.Item(Name)=m_ValueList.Item(Name)&InstanceValue(BlockTag)_
Elsem_ValueList.Item(Name)=InstanceValue(BlockTag)
Else
m_ValueList.AddName,InstanceValue(BlockTag)
EndIf
EndSub

PrivateFunctionfinish(ByValcontent)
SelectCasem_Unknowns
Case"keep"finish=content
Case"remove"
m_RegExp.Pattern="{[^       
}]+}"
finish=m_RegExp.Replace(content,"")
Case"comment"
m_RegExp.Pattern="{([^       
}]+)}"
finish=m_RegExp.Replace(content,"<!--TemplateVariable&#36;1Undefined-->")
CaseElsefinish=content
EndSelect
EndFunction

PublicSuboutput(ByValName)
IfNotm_ValueList.Exists(Name)ThenShowError("0x13<br>CouldNotFindTag"&Name&"!")
Response.Write(finish(m_ValueList.Item(Name)))
EndSub
EndClass在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要ASP商有很高的信用度。楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。

小魔女 发表于 2015-1-18 20:29:31

不能只是将它停留在纸上谈兵的程度上。

兰色精灵 发表于 2015-1-27 06:13:20

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

再见西城 发表于 2015-2-5 04:19:49

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。

只想知道 发表于 2015-2-11 04:29:20

不能只是将它停留在纸上谈兵的程度上。

蒙在股里 发表于 2015-3-1 21:42:48

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

谁可相欹 发表于 2015-3-11 00:47:00

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

小妖女 发表于 2015-3-17 17:10:57

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

老尸 发表于 2015-3-24 16:51:20

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
页: [1]
查看完整版本: ASP网站制作之ASP模板类代码