ASP网页编程之ASP一个仿phplib的模板类
减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。模板用php用惯了,用phplib用惯了,没有他以为很不恬逸上彀查找没有人写,本人写了一个,asp程度不高,但愿
能有妙手指导修正。
<%
====================================
Name:TemplateClass
Purpose:ParseandoutputHTMLpage
Date:10.2002
Author:pig
Email:pigzjq@sina.com
Phone:13910320759
====================================
classTemplate
dimgs_root
dimgs_handle()
dimgs_file()
dimgs_keys()
dimgs_keyVars()
dimgs_vars()
机关函数
PrivateSubTemplate_Initialize()
callof_setRoot(".")
callof_redimVar()
EndSub
functionof_redimVar()
redimgs_handle(0)
redimgs_file(0)
redimgs_keys(0)
redimgs_keyVars(0)
redimgs_vars(0)
endfunction
设置模板寄存路径
functionof_setRoot(byValps_root)
ifps_root""then
gs_root=ps_root
endif
endfunction
设置文件称号函数
functionof_setFile(byValps_fileHandle,byValps_fileName)
ifps_fileName""then
li_maxNum=UBound(gs_handle)
gs_handle(li_maxNum)=ps_fileHandle
gs_file(li_maxNum)=gs_root+"/"+ps_fileName
li_maxNum=li_maxNum+1
redimPreservegs_handle(li_maxNum)
redimPreservegs_file(li_maxNum)
endif
endfunction
设置要交换的参数变量
functionof_setVar(byValps_key,byValps_var)
ifps_key""andps_var""then
li_keyIndex=of_getIndex(gs_keys,ps_key)
ifli_keyIndex="no"then
li_maxNum=UBound(gs_keys)
gs_keys(li_maxNum)=ps_key
gs_keyVars(li_maxNum)="{"&ps_key&"}"
gs_vars(li_maxNum)=ps_var
li_maxNum=li_maxNum+1
redimPreservegs_keys(li_maxNum)
redimPreservegs_keyVars(li_maxNum)
redimPreservegs_vars(li_maxNum)
else
gs_keys(li_keyIndex)=ps_key
gs_keyVars(li_keyIndex)="{"&ps_key&"}"
gs_vars(li_keyIndex)=ps_var
endif
endif
endfunction
界说重载笔墨块儿
functionof_setBlock(byValps_parent,byValps_handle,byValps_name)
if(notof_loadFile(ps_parent))then
ls_error="of_loadFileunabletoload"+ps_parent
response.write(ls_error)
of_setBlock=false
exitfunction
endif
ifps_name=""then
ps_name=ps_handle
endif
ls_string=of_getVar(ps_parent)
ls_pattern="<!--s*BEGIN"&ps_handle&"s*-->(.*)<!--s*END"&ps_handle&"s*-->"
SetregEx=NewRegExp
regEx.Pattern="
"
regEx.IgnoreCase=false
regEx.global=true
ls_string=regEx.Replace(ls_string,"")
regEx.Pattern=ls_pattern
regEx.Multiline=true
regEx.global=false
SetMatches=regEx.Execute(ls_string)
ls_string=regEx.Replace(ls_string,"{"&ps_name&"}")
ForEachMatchinMatches
ls_value=Match.value
Next
regEx.Pattern="<!--s*BEGIN"&ps_handle&"s*-->"
regEx.IgnoreCase=false
regEx.global=true
ls_value=regEx.Replace(ls_value,"")
regEx.Pattern="<!--s*END"&ps_handle&"s*-->"
regEx.IgnoreCase=false
regEx.global=true
ls_value=regEx.Replace(ls_value,"")
callof_setVar(ps_handle,ls_value)
callof_setVar(ps_parent,ls_string)
endfunction
装载变量内容
functionof_loadFile(byValps_handle)
li_keyIndex=of_getIndex(gs_keys,ps_handle)
ifli_keyIndex="no"then
li_fileIndex=of_getIndex(gs_handle,ps_handle)
ifli_fileIndex="no"then
ls_error="loadfile:"+ps_handle+"isnotavalidhandle."
response.write(ls_error)
of_loadFile=false
exitfunction
endif
ls_fileName=gs_file(li_fileIndex)
ls_fileName=server.mappath(ls_fileName)
SetMyFileObject=Server.CreateObject("Scripting.FileSystemObject")
li_exist=MyFileObject.FileExists(ls_fileName)
ifli_existthen
SetMyTextFile=MyFileObject.OpenTextFile(ls_fileName)
ls_file=MyTextFile.readAll()
MyTextFile.Close
callof_setVar(ps_handle,ls_file)
else
ls_error="loadfile:"+ls_fileName+"isnotavalidfileorpath."
response.write(ls_error)
of_loadFile=false
exitfunction
endif
endif
of_loadFile=true
endfunction
变量交换历程
functionof_replace(byvalps_handle)
if(notof_loadFile(ps_handle))then
ls_error="of_replace:unabletoload"+ps_handle
response.write(ls_error)
of_replace=false
exitfunction
endif
ls_str=of_getVar(ps_handle)
li_minIndex=LBound(gs_keys)
li_maxIndex=UBound(gs_keys)
fori=li_minIndextoli_maxIndex
SetregEx=NewRegExp
regEx.Pattern=gs_keyVars(i)
regEx.IgnoreCase=True
ls_str=regEx.Replace(ls_str,gs_vars(i))
next
of_replace=ls_str
endfunction
猎取存储变量
functionof_getVar(byvalps_keyName)
li_keyIndex=of_getIndex(gs_keys,ps_keyName)
if(li_keyIndex="no")then
of_getVar=""
else
ls_varName=gs_vars(li_keyIndex)
of_getVar=ls_varName
endif
endfunction
查找数组中响应字符串的索引值
functionof_getIndex(byvalps_array,byvalps_handle)
li_minIndex=LBound(ps_array)
li_maxIndex=UBound(ps_array)
li_index="no"
fori=li_minIndextoli_maxIndex
if(ps_array(i)=ps_handle)then
li_index=i
exitfor
endif
next
of_getIndex=li_index
endfunction
剖析变量
functionof_parse(byvalps_target,byvalps_handle,byvalps_append)
ls_string=of_replace(ps_handle)
ifps_append=truethen
ls_org=of_getVar(ps_target)&ls_string
ifpi_time=2then
response.write(ls_string)
exitfunction
endif
callof_setVar(ps_target,ls_org)
else
callof_setVar(ps_target,ls_string)
endif
endfunction
functionof_print(byvalps_keyName)
li_keyIndex=of_getIndex(gs_keys,ps_keyName)
ls_varString=gs_vars(li_keyIndex)
SetregEx=NewRegExp
regEx.Pattern="{[^
}]+}"
regEx.IgnoreCase=True
ls_varString=regEx.Replace(ls_varString,"")
of_print=ls_varString
endfunction
endclass
%>
挪用页面:
<%
dimc_html
setc_html=newTemplate
callc_html.of_redimVar()
callc_html.of_setFile("main","index.htm")
callc_html.of_setBlock("main","block_test","myTest")
callc_html.of_setVar("TEST","testblock1")
callc_html.of_parse("myTest","block_test",true)
callc_html.of_setVar("TEST","testblock2")
callc_html.of_parse("myTest","block_test",true)
callc_html.of_setVar("TEST1","success")
callc_html.of_parse("MAIN_OUTPUT","main",false)
ls_result=c_html.of_print("MAIN_OUTPUT")
response.write(ls_result)
%>
模板文件:
{TEST1}
<tableborder=1>
<!--BEGINblock_test-->
<tr><tdwidth=250class=h1height=40bgcolor=#f0f0f0align=center>
{TEST}
</td></tr>
<!--ENDblock_test-->
</table>
但愿对用惯了phplib中的壮大功效的伴侣能有所匡助
我但愿交代一切php和asp的喜好者
我的qq:9457009楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习 Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件 没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
页:
[1]