提起ASP很多人就認為是一堆HTML指令碼和被括在<%和%>之中的一些代碼還有就是一些javascript指令碼等籌在一起的一些代碼的集合,這樣的代碼,再加上各類的不同格式的注釋,看起來就一個字:亂。也不管別人能不能看得懂,只要是能實現自己的目的就可以了。
因為ASP的代碼也是指令碼,給了客戶也不可能不被人看到其中的內容,經多包容在DLL中一部分商務邏輯,但是還是覺得ASP代碼是最不值錢的代碼,沒有人回去購買,可以隨時從別人的網站中查看源碼的形式得到別人辛辛苦苦編寫出來的獨特風格的東東。這些原因使ASP的發展成為了一種編的快忘的也快的代碼,可讀性,維護性也是各種語言中最為差的代碼。
其實,ASP代碼也可以像其他語言一樣的物件導向,模組化,將很多頁面整合封裝到一個類中,運用類中的不同方法來顯示不同的頁面,這樣你可以將同一商務邏輯下的頁面和邏輯封裝到一個類裡,用不同的方法來實現。說了這麼多,可能大家的思路都亂了,趕快給大家一點範例來看看:
<%
'****************************************
'* 類名:clsWebWorkFlowLog
'* 功能:工作流程日誌跟蹤類
'* History:
'* 作成:doface
'* 日期:2003/10/24 Ver 1.0
'* 改動:
'* 日期:
'****************************************
class clsWebWorkFlowLog
'定義公開屬性存放Connection對象
public ActiveConnection
private oResponse
'========================================
'= 過程名:main
'= 參 數:
'= 功 能:主調函數
'= 根據不同動作參數執行不同的操作
'= 傳回值:
'========================================
sub main()
select case Request("act")
case "list"
list()
case else
list()
end select
end sub
'========================================
'= 過程名:list
'= 參 數:
'= 功 能:顯示列表畫面
'= 傳回值:
'========================================
sub list()
dim oRs
set oRs = ActiveConnection.execute("select *,(select name from wf_config where id=w.wf_id) as wfname from wf_log w where step_id=1 and user_id=" & session("usr")("uid"))
'(select * from wf_log where id in (select max(id),wf_id,tab_id,rec_id from wf_log group by wf_id,tab_id,rec_id where wf_id= and tab_id=))
%> <p align="left"><img border="0" src="http://edu.cnzz.cn/images/desk/workflow-new.gif" WIDTH="32" HEIGHT="32"><font color="#FF0000"><b>待辦事宜:</b></font></p>
<center>
<table bgColor="#FFFFFF" border="1" borderColorDark="#ffffff" borderColorLight="#c0c0c0" cellSpacing="0" width="99%" height="25">
<tr>
<td bgColor="#808080" height="15"><font color="#FFFFFF">流程名稱</font></td>
<td bgColor="#808080" height="15"><font color="#FFFFFF">申請人</font></td>
<td bgColor="#808080" height="15"><font color="#FFFFFF">申請時間</font></td>
<td bgColor="#808080" height="15"><font color="#FFFFFF">完成時間</font></td>
<td bgColor="#808080" height="15"><font color="#FFFFFF">狀態</font></td>
<td bgColor="#808080" height="15"><font color="#FFFFFF">操作</font></td>
</tr><%
do while not oRs.eof
dim maxID,Next_id
if glbFunc.getMaxID(oRs("id").value,ActiveConnection,maxID,Next_id) then
%><tr>
<td bgColor="#ffffff" height="19"><%=oRs("wfname")%></a></td>
<td bgColor="#ffffff" height="19"><%=session("usr")("name")%> </td>
<td bgColor="#ffffff" height="19"><%=oRs("exetime")%> </td>
<td bgColor="#ffffff" height="19"> </td>
<td bgColor="#ffffff" height="19"><%=glbFunc.getCurZT(oRs("id").value,ActiveConnection)%></td>
<td bgColor="#ffffff" height="19"><p align="left"><a href="../PubExeTab/PubExeTab.asp?act=view&tab_id=<%=oRs("tab_id")%>&id=<%=oRs("rec_id")%>"><img src="http://edu.cnzz.cn/images/action/view.gif" border="0" alt="詳細" WIDTH="16" HEIGHT="16"></a> <a href="javascript:newin('wfimage.asp?act=list&id=<%=oRs("wf_id")%>&bz=1&step_id=<%=next_id%>',true,false,false,false,true);"><img src="http://edu.cnzz.cn/images/action/lcchuli.gif" border="0" alt="流程追蹤" WIDTH="16" HEIGHT="16"></a> </p></td><%
end if
%></tr><%
oRs.movenext
loop
%></table>
</center>
<%
end sub
end class
'****************************************
'* 類結束
'****************************************
'****************************************
'ASP頁面開始
'****************************************
'輸出標準HTML頭
glbFunc.writeHEAD
dim oWebWorkFlowLog
set oWebWorkFlowLog = new clsWebWorkFlowLog
set oWebWorkFlowLog.ActiveConnection = glbFunc.getADOConnection
oWebWorkFlowLog.main
glbFunc.writeTail()
%>
可以添加更多的方法,這樣這一個類就能完成以前多個ASP檔案的功能。訪問的時候,在 .ASP之後加上參數(要訪問哪個函數)即可區分出來。