ASP模擬MVC模式編程
文檔提供者:
newebug () 于 2005-3-15
大家都知道JAVA里最流行的是MVC模型的編程方式,如果你不知道MVC的概念,可以去網(wǎng)上搜索下,應該會(huì )馬上找到N多資料。PHP5推出之后,也開(kāi)始使用MVC模式開(kāi)發(fā),看來(lái)MVC確實(shí)有很大的吸引力!
我在平時(shí)開(kāi)發(fā)ASP項目的時(shí)候,也借鑒了JAVA的這個(gè)開(kāi)發(fā)模式,雖然實(shí)現的不是很好,但也使代碼結構清晰了不少,大大方便了美工修改程序!
下面是我的代碼,具體說(shuō)明看注釋。
程序主要實(shí)現是后臺管理員的操作:添加,刪除,修改
分兩個(gè)程序,adminusers_class.asp,adminusers_gl.asp
相當于JAVA力一個(gè)servlet,一個(gè)bean!所以沒(méi)有完全的實(shí)現MVC,只是模擬了一下!
adminusers_class.asp代碼如下:
<%
rem *****************通用網(wǎng)站管理系統***********************************
rem 頁(yè)面功能:網(wǎng)站后臺管理員管理類(lèi)
rem @author 蔡曉亮
rem @version 1.0
rem @date 2005-2-22
%>
<!--#include file="conn.asp"-->
<%
‘管理員管理類(lèi)
Class AdminUsersGl
Dim ASO
Private adminuser_name
Private adminuser_password
Private admingroup_id
Private adminuser_isshow
Private adminuser_selfconfig
Private adminuser_realname
‘構造函數開(kāi)始
Private Sub Class_Initialize
Set ASO=Server.CreateObject("Adodb.RecordSet")
End Sub
‘析構函數開(kāi)始
Private Sub Class_Terminate
Err.Clear
Set ASO=Nothing
End Sub
‘添加管理員
Public Function AdminUsers_Add(adminuser_name,adminuser_password,admingroup_id,adminuser_realname,adminuser_selfconfig,adminuser_isshow,adminuser_language)
sql="select adminuser_name from ce_adminusers where adminuser_name=‘"&adminuser_name&"‘"
ASO.Open sql,conn,1,3
if ASO.RecordCount<>0 then
Response.Redirect("messages.asp?mess_name=DATA_ADD_FAILURE&back_page=adminusers_gl.asp?action=add")
end if
if ASO.RecordCount=0 then
ASO.Close
sql="insert into ce_adminusers(adminuser_name,adminuser_password,admingroup_id,adminuser_realname,adminuser_selfconfig,adminuser_isshow,adminuser_language) values(‘"&adminuser_name&"‘,‘"&adminuser_password&"‘,"&admingroup_id&",‘"&adminuser_realname&"‘,‘"&adminuser_selfconfig&"‘,‘"&adminuser_isshow&"‘,‘"&adminuser_language&"‘)"
Response.Write(sql)
ASO.Open sql,conn,1,3
Response.Redirect("messages.asp?mess_name=ADD_SUCCESS&back_page=adminusers_gl.asp?action=add")
ASO.Close
end if
End Function
‘取得某管理員信息
Public Function AdminUsers_Xx(adminuser_id)
sql="select adminuser_id,adminuser_name,adminuser_password,admingroup_id,adminuser_isshow,adminuser_selfconfig,adminuser_language,adminuser_realname from ce_adminusers where adminuser_id="&adminuser_id
ASO.Open sql,conn,1,3
if ASO.RecordCount=0 then
Response.Redirect("messages.asp?mess_name=GET_Xx_FAILURE&back_page=adminusers_gl.asp?action=list")
else
adminuser_name=ASO("adminuser_name")
adminuser_password=ASO("adminuser_password")
admingroup_id=ASO("admingroup_id")
adminuser_isshow=ASO("adminuser_isshow")
adminuser_selfconfig=ASO("adminuser_selfconfig")
adminuser_language=ASO("adminuser_language")
adminuser_realname=ASO("adminuser_realname")
end if
ASO.close
End Function
‘修改某管理員
Public Function AdminUsers_Modideal(adminuser_id,adminuser_name,adminuser_password,admingroup_id,adminuser_isshow,adminuser_selfconfig,adminuser_language,adminuser_realname)
sql="update ce_adminusers set adminuser_name=‘"&adminuser_name&"‘,adminuser_password=‘"&adminuser_password&"‘,admingroup_id="&admingroup_id&",adminuser_isshow=‘"&adminuser_isshow&"‘,adminuser_selfconfig=‘"&adminuser_selfconfig&"‘,adminuser_language=‘"&adminuser_language&"‘,adminuser_realname=‘"&adminuser_realname&"‘ where adminuser_id="&adminuser_id
response.Write(sql)
ASO.Open sql,conn,1,3
Response.Redirect("messages.asp?mess_name=MODIFY_SUCCESS&back_page=adminusers_gl.asp?action=list")
ASO.Close
End Function
‘取得管理員列表
Public Function AdminUsers_List()
sql="SELECT ce_admingroups.admingroup_name, ce_adminusers.adminuser_id,ce_adminusers.adminuser_name, ce_adminusers.adminuser_logintimes, ce_adminusers.adminuser_isshow FROM ce_admingroups INNER JOIN ce_adminusers ON ce_admingroups.admingroup_id = ce_adminusers.admingroup_id"
ASO.Open sql,conn,1,3
while not ASO.eof
if ASO("adminuser_isshow")="Y" then
show="是"
else
show="否"
end if
response.write"<tr><td align=right class=td1 width=27% height=25><p align=center>"&ASO("adminuser_name")&"</td><td width=30% align=right class=td1><div align=center>"&ASO("admingroup_name")&"</div></td><td width=13% align=right class=td1><div align=center>"&ASO("adminuser_logintimes")&"</div></td><td width=10% height=25 class=td2><div align=center>"&show&"</div></td><td width=10% class=td2><div align=center><a href=adminusers_gl.asp?action=modi&adminuser_id="&ASO("adminuser_id")&">修改</a></div></td><td width=10% class=td2><div align=center><a href=adminusers_gl.asp?action=del&adminuser_id="&ASO("adminuser_id")&">刪除</a></div></td></tr>"
ASO.movenext
wend
ASO.Close
End Function
‘刪除管理員
Public Function AdminUsers_Del(adminuser_id)
sql="delete from ce_adminusers where adminuser_id="&adminuser_id
ASO.Open sql,conn,1,3
Response.Redirect("messages.asp?mess_name=DEL_SUCCESS&back_page=adminusers_gl.asp?action=list")
ASO.Close
End Function
‘獲取所有管理員組列表
Public Function Get_AdminGroups()
sql="select admingroup_id,admingroup_name from ce_admingroups where admingroup_language=‘"&LANGUAGE&"‘ order by admingroup_id asc"
ASO.Open sql,conn,1,3
response.Write(" <select name=admingroup_id>")
while not ASO.eof
response.Write("<option value="&ASO("admingroup_id")&">"&ASO("admingroup_name")&"</option>")
ASO.movenext
wend
response.Write("</select>")
ASO.Close
End Function
‘獲取所有管理員組列表,并選中當前所在管理員組
Public Function Get_AdminGroups_S()
sql="select admingroup_id,admingroup_name from ce_admingroups where admingroup_language=‘"&LANGUAGE&"‘ order by admingroup_id asc"
ASO.Open sql,conn,1,3
response.Write(" <select name=admingroup_id>")
while not ASO.eof
if ASO("admingroup_id")=admingroup_id then
s="selected"
else
s=""
end if
response.Write("<option value="&ASO("admingroup_id")&" "&s&">"&ASO("admingroup_name")&"</option>")
ASO.movenext
wend
response.Write("</select>")
ASO.Close
End Function
‘公用屬性,供外部程序調用
Public Property Get AUName
AUName = adminuser_name
End Property
Public Property Get AUPassword
AUPassword = adminuser_password
End Property
Public Property Get AUGroupid
AUGroupid = admingroup_id
End Property
Public Property Get AUIsshow
AUIsshow = adminuser_isshow
End Property
Public Property Get AUSelfconfig
AUSelfconfig = adminuser_selfconfig
End Property
Public Property Get AURealname
AURealname = adminuser_realname
End Property
End Class
%>
adminusers_gl.asp代碼如下:
<%
rem *****************通用網(wǎng)站管理系統***********************************
rem 頁(yè)面功能:網(wǎng)站后臺管理員添加修改表單
rem @author 蔡曉亮
rem @version 1.0
rem @date 2005-2-22
%>
<%
Response.Buffer=true
Response.Expires=0
%>
<!--#include file="../include/common.config.asp"-->
<!--#include file="../include/common.function.asp"-->
<!--#include file="../include/md5.asp"-->
<!--#include file="adminusers_class.asp"-->
<%
action=trim(replace(request("action"),"‘",""))
Set GL = New AdminUsersGl ‘建立類(lèi)的實(shí)例
%>
<%
if action="add" then
adminuser_name=trim(replace(request("adminuser_name"),"‘",""))
adminuser_password=md5(trim(replace(request("adminuser_password"),"‘","")),32)
admingroup_id=trim(replace(request("admingroup_id"),"‘",""))
adminuser_realname=trim(replace(request("adminuser_realname"),"‘",""))
adminuser_selfconfig=trim(replace(request("adminuser_selfconfig"),"‘",""))
adminuser_isshow=trim(replace(request("adminuser_isshow"),"‘",""))
adminuser_language=LANGUAGE
if adminuser_name<>"" then
GL.AdminUsers_Add adminuser_name,adminuser_password,admingroup_id,adminuser_realname,adminuser_selfconfig,adminuser_isshow,adminuser_language
end if
end if
if action="modi" then
adminuser_id=trim(replace(request("adminuser_id"),"‘",""))
GL.AdminUsers_Xx adminuser_id
end if
if action="modideal" then
adminuser_id=trim(replace(request("adminuser_id"),"‘",""))
adminuser_name=trim(replace(request("adminuser_name"),"‘",""))
adminuser_password_n=trim(replace(request("adminuser_password_n"),"‘",""))
adminuser_password_o=trim(replace(request("adminuser_password_o"),"‘",""))
admingroup_id=trim(replace(request("admingroup_id"),"‘",""))
adminuser_isshow=trim(replace(request("adminuser_isshow"),"‘",""))
adminuser_selfconfig=trim(replace(request("adminuser_selfconfig"),"‘",""))
adminuser_realname=trim(replace(request("adminuser_realname"),"‘",""))
adminuser_language=LANGUAGE
if adminuser_id<>"" and adminuser_password_n<>"" then
adminuser_password_n=md5(adminuser_password_n,32)
‘response.Write(adminuser_password_n)
GL.AdminUsers_Modideal adminuser_id,adminuser_name,adminuser_password_n,admingroup_id,adminuser_isshow,adminuser_selfconfig,adminuser_language,adminuser_realname
end if
if adminuser_id<>"" and adminuser_password_n="" then
‘response.Write(adminuser_password_n&"cxl")
GL.AdminUsers_Modideal adminuser_id,adminuser_name,adminuser_password_o,admingroup_id,adminuser_isshow,adminuser_selfconfig,adminuser_language,adminuser_realname
end if
end if
if action="del" then
adminuser_id=trim(replace(request("adminuser_id"),"‘",""))
GL.AdminUsers_Del adminuser_id
end if
%>
<%
title="管理員管理"
css="<link rel=stylesheet href=style/css/style.css type=text/css>"
body="<body topmargin=5 leftmargin=5 bgcolor=#555555>"
ShowHeadHtml title,LANGUAGE,css,body ‘調用公用函數產(chǎn)生頭部代碼
%>
<%if action="add" then%>
<table cellpadding="0" cellspacing="1" border="0" width="100%" class="border" align=center height="85">
<form name="form1" method="post" action="adminusers_gl.asp?action=add">
<tr>
<td height="50" colspan="2" align="center" bgcolor="#f1f1f1"><font class="title"><b><%=title%></b></font></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>用戶(hù)名 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_name" type="text" size="40"></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>密 碼 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_password" type="password" size="40"></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>重復密碼 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_password2" type="password" size="40"></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong><span class="td1">是否有效</span> :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input type="radio" value="Y" name="adminuser_isshow" checked>
是 <input type="radio" value="N" name="adminuser_isshow">否</td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>真實(shí)姓名 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_realname" type="text" size="40"></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>管理員組 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1">
<%
GL.Get_AdminGroups
%>
</td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>備 注 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1">
<textarea name="adminuser_selfconfig" cols="60" rows="10"></textarea></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"> </td>
<td width="77%" align="left" bgcolor="#f1f1f1">
<input type="submit" name="submit" value="添加">
<input type="reset" name="reset" value="重置">
</td>
</tr>
</form>
</table>
<%end if%>
<%if action="modi" then%>
<table cellpadding="0" cellspacing="1" border="0" width="100%" class="border" align=center height="85">
<form name="form1" method="post" action="adminusers_gl.asp?action=modideal">
<tr>
<td height="50" colspan="2" align="center" bgcolor="#f1f1f1"><font class="title"><b><%=title%></b></font></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>用戶(hù)名 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_id" type="hidden" value=<%=adminuser_id%>><input name="adminuser_name" type="text" size="40" value="<%=GL.AUName%>"></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>新 密 碼 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_password_n" type="password" size="40"><input name="adminuser_password_o" type="hidden" value="<%=GL.AUPassword%>"></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>重復新密碼 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_password2_n" type="password" size="40"></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong><span class="td1">是否有效</span> :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input type="radio" value="Y" name="adminuser_isshow" <%if GL.AUIsshow="Y" then%>checked<%end if%>>
是 <input type="radio" value="N" name="adminuser_isshow" <%if GL.AUIsshow="N" then%>checked<%end if%>>否</td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>真實(shí)姓名 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_realname" type="text" size="40" value="<%=GL.AURealname%>"></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>管理員組 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1">
<%
GL.Get_AdminGroups_S
%>
</td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>備 注 :</strong></td>
<td width="77%" align="left" bgcolor="#f1f1f1">
<textarea name="adminuser_selfconfig" cols="60" rows="10"><%=GL.AUSelfconfig%></textarea></td>
</tr>
<tr align="center">
<td width="23%" height="32" align="right" bgcolor="#f1f1f1"> </td>
<td width="77%" align="left" bgcolor="#f1f1f1">
<input type="submit" name="submit" value="添加">
<input type="reset" name="reset" value="重置">
</td>
</tr>
</form>
</table>
<%end if%>
<%
if action="list" then
%>
<table width="100%" align=center border="0" cellspacing="1" cellpadding="0">
<tr><td colspan=6></td></tr>
<tr bgcolor="#999999"><td align=right class=td1 width="27%" height="25">
<p align="center">名稱(chēng)</td>
<td width="30%" align=right class=td1><div align="center">所屬組</div></td>
<td width="13%" align=right class=td1><div align="center">登陸次數</div></td>
<td width="10%" height="25" class=td2><div align="center">是否有效</div></td>
<td width="10%" class=td2><div align="center">修改</div></td>
<td width="10%" class=td2><div align="center">刪除</div></td>
</tr>
<%
GL.AdminUsers_List
%>
<tr>
<td height="25" colspan="6" align=right bgcolor="#F1F1F1" class=td1> </td>
</tr>
</table>
<%end if%>
<%
Set GL = Nothing
%>
<%
ShowBottomHtml ‘調用公用函數產(chǎn)生尾部代碼
%>
以上程序寫(xiě)的不是很好,但結構還是比較清晰的,在adminusers_gl.asp中分別對action進(jìn)行判斷,去調用類(lèi)中的不同方法,在下面頁(yè)面部分,盡量使ASP代碼減少,這樣美工就能很輕松的修改程序界面了!
如果你覺(jué)得程序寫(xiě)的不好,請不要見(jiàn)笑,歡迎大家和我交流。
我的blog:jblog.create-e.org QQ:5226983