提起ASP很多人就认为是一堆HTML脚本和被括在<%和%>之中的一些代码还有就是一些JAVASCRIPT脚本等筹在一起的一些代码的集合,这样的代码,再加上各类的不同格式的注释,看起来就一个字:乱。也不管别人能不能看得懂,只要是能实现自己的目的就可以了。
因为ASP的代码也是脚本,给了客户也不可能不被人看到其中的内容,经多包容在DLL中一部分业务逻辑,但是还是觉得ASP代码是最不值钱的代码,没有人回去购买,可以随时从别人的网站中查看源码的形式得到别人辛辛苦苦编写出来的独特风格的东东。这些原因使ASP的发展成为了一种编的快忘的也快的代码,可读性,维护性也是各种语言中最为差的代码。
其实,ASP代码也可以像其他语言一样的面向对象,模块化,将很多页面集成封装到一个类中,运用类中的不同方法来显示不同的页面,这样你可以将同一业务逻辑下的页面和逻辑封装到一个类里,用不同的方法来实现。说了这么多,可能大家的思路都乱了,赶快给大家一点范例来看看:
复制代码 代码如下:
<%
'****************************************
'*类名:clsWebWorkFlowLog
'*功能:工作流日志跟踪类
'*History:
'*作成:doface
'*日期:2003/10/24Ver1.0
'*改动:
'*日期:
'****************************************
classclsWebWorkFlowLog
'定义公开属性存放Connection对象
publicActiveConnection
privateoResponse
'========================================
'=过程名:main
'=参数:
'=功能:主调函数
'=根据不同动作参数执行不同的操作
'=返回值:
'========================================
submain()
selectcaseRequest("act")
case"list"
list()
caseelse
list()
endselect
endsub
'========================================
'=过程名:list
'=参数:
'=功能:显示列表画面
'=返回值:
'========================================
sublist()
dimoRs
setoRs=ActiveConnection.execute("select*,(selectnamefromwf_configwhereid=w.wf_id)aswfnamefromwf_logwwherestep_id=1anduser_id="&session("usr")("uid"))
'(select*fromwf_logwhereidin(selectmax(id),wf_id,tab_id,rec_idfromwf_loggroupbywf_id,tab_id,rec_idwherewf_id=andtab_id=))
%><palign="left"><imgborder="0"src="../images/desk/workflow-new.gif"WIDTH="32"HEIGHT="32"><fontcolor="#FF0000"><b>待办事宜:</b></font></p>
<center>
<tablebgColor="#FFFFFF"border="1"borderColorDark="#ffffff"borderColorLight="#c0c0c0"cellSpacing="0"width="99%"height="25">
<tr>
<tdbgColor="#808080"height="15"><fontcolor="#FFFFFF">流程名称</font></td>
<tdbgColor="#808080"height="15"><fontcolor="#FFFFFF">申请人</font></td>
<tdbgColor="#808080"height="15"><fontcolor="#FFFFFF">申请时间</font></td>
<tdbgColor="#808080"height="15"><fontcolor="#FFFFFF">完成时间</font></td>
<tdbgColor="#808080"height="15"><fontcolor="#FFFFFF">状态</font></td>
<tdbgColor="#808080"height="15"><fontcolor="#FFFFFF">操作</font></td>
</tr><%
dowhilenotoRs.eof
dimmaxID,Next_id
ifglbFunc.getMaxID(oRs("id").value,ActiveConnection,maxID,Next_id)then
%><tr>
<tdbgColor="#ffffff"height="19"><%=oRs("wfname")%></a></td>
<tdbgColor="#ffffff"height="19"><%=session("usr")("name")%></td>
<tdbgColor="#ffffff"height="19"><%=oRs("exetime")%></td>
<tdbgColor="#ffffff"height="19"></td>
<tdbgColor="#ffffff"height="19"><%=glbFunc.getCurZT(oRs("id").value,ActiveConnection)%></td>
<tdbgColor="#ffffff"height="19"><palign="left"><ahref="../PubExeTab/PubExeTab.asp?act=view&tab_id=<%=oRs("tab_id")%>&id=<%=oRs("rec_id")%>"><imgsrc="../images/action/view.gif"border="0"alt="详细"WIDTH="16"HEIGHT="16"></a><ahref="javascript:newin('wfimage.asp?act=list&id=<%=oRs("wf_id")%>&bz=1&step_id=<%=next_id%>',true,false,false,false,true);"><imgsrc="../images/action/lcchuli.gif"border="0"alt="流程追踪"WIDTH="16"HEIGHT="16"></a></p></td><%
endif
%></tr><%
oRs.movenext
loop
%></table>
</center>
<%
endsub
endclass
'****************************************
'*类结束
'****************************************
'****************************************
'ASP页面开始
'****************************************
'输出标准HTML头
glbFunc.writeHEAD
dimoWebWorkFlowLog
setoWebWorkFlowLog=newclsWebWorkFlowLog
setoWebWorkFlowLog.ActiveConnection=glbFunc.getADOConnection
oWebWorkFlowLog.main
glbFunc.writeTail()
%>
可以添加更多的方法,这样这一个类就能完成以前多个ASP文件的功能。访问的时候,在.ASP之后加上参数(要访问哪个函数)即可区分出来。