ASP模拟MVC模式程式設計 |
大家都知道JAVA裡最流行的是MVC模型的程式設計方式,如果你不知道MVC的概念,可以去網上搜尋下,應該會馬上找到N多資料。PHP5推出之後,也開始使用MVC模式開發,看來MVC确實有很大的吸引力! 我在平時開發ASP項目的時候,也借鑒了JAVA的這個開發模式,雖然實作的不是很好,但也使代碼結構清晰了不少,大大友善了美工修改程式! 下面是我的代碼,具體說明看注釋。 程式主要實作是背景管理者的操作:添加,删除,修改 分兩個程式,adminusers_class.asp,adminusers_gl.asp 相當于JAVA力一個servlet,一個bean!是以沒有完全的實作MVC,隻是模拟了一下! adminusers_class.asp代碼如下: <% rem *****************通用網站管理系統*********************************** rem 頁面功能:網站背景管理者管理類 rem @author 蔡曉亮 rem @version 1.0 rem @date 2005-2-22 %> <!--#include file="conn.asp"--> <% '管理者管理類 Class AdminUsersGl Dim ASO Private adminuser_name Private adminuser_password Private admingroup_id Private adminuser_isshow Private adminuser_selfconfig Private adminuser_realname '構造函數開始 Private Sub Class_Initialize Set ASO=Server.CreateObject("Adodb.RecordSet") End Sub '析構函數開始 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) Response.Redirect("messages.asp?mess_name=ADD_SUCCESS&back_page=adminusers_gl.asp?action=add") 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 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") ASO.close '修改某管理者 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) Response.Redirect("messages.asp?mess_name=MODIFY_SUCCESS&back_page=adminusers_gl.asp?action=list") '取得管理者清單 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" while not ASO.eof if ASO("adminuser_isshow")="Y" then show="是" show="否" 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 '删除管理者 Public Function AdminUsers_Del(adminuser_id) sql="delete from ce_adminusers where adminuser_id="&adminuser_id Response.Redirect("messages.asp?mess_name=DEL_SUCCESS&back_page=adminusers_gl.asp?action=list") '擷取所有管理者組清單 Public Function Get_AdminGroups() sql="select admingroup_id,admingroup_name from ce_admingroups where admingroup_language='"&LANGUAGE&"' order by admingroup_id asc" response.Write(" <select name=admingroup_id>") response.Write("<option value="&ASO("admingroup_id")&">"&ASO("admingroup_name")&"</option>") response.Write("</select>") '擷取所有管理者組清單,并選中目前所在管理者組 Public Function Get_AdminGroups_S() if ASO("admingroup_id")=admingroup_id then s="selected" s="" response.Write("<option value="&ASO("admingroup_id")&" "&s&">"&ASO("admingroup_name")&"</option>") '公用屬性,供外部程式調用 Public Property Get AUName AUName = adminuser_name End Property Public Property Get AUPassword AUPassword = adminuser_password Public Property Get AUGroupid AUGroupid = admingroup_id Public Property Get AUIsshow AUIsshow = adminuser_isshow Public Property Get AUSelfconfig AUSelfconfig = adminuser_selfconfig Public Property Get AURealname AURealname = adminuser_realname End Class adminusers_gl.asp代碼如下: rem 頁面功能:網站背景管理者添加修改表單 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 '建立類的執行個體 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 if action="modi" then adminuser_id=trim(replace(request("adminuser_id"),"'","")) GL.AdminUsers_Xx adminuser_id if action="modideal" then adminuser_password_n=trim(replace(request("adminuser_password_n"),"'","")) adminuser_password_o=trim(replace(request("adminuser_password_o"),"'","")) 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 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 if action="del" then GL.AdminUsers_Del adminuser_id 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 '調用公用函數産生頭部代碼 <%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>使用者名 :</strong></td> <td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_name" type="text" size="40"></td> <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> <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> <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> <td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>真實姓名 :</strong></td> <td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_realname" type="text" size="40"></td> <td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>管理者組 :</strong></td> <td width="77%" align="left" bgcolor="#f1f1f1"> GL.Get_AdminGroups </td> <td width="23%" height="32" align="right" bgcolor="#f1f1f1"><strong>備 注 :</strong></td> <textarea name="adminuser_selfconfig" cols="60" rows="10"></textarea></td> <td width="23%" height="32" align="right" bgcolor="#f1f1f1"> </td> <input type="submit" name="submit" value="添加"> <input type="reset" name="reset" value="重置"> </td> </form> </table> <%end if%> <%if action="modi" then%> <form name="form1" method="post" action="adminusers_gl.asp?action=modideal"> <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> <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> <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> <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> <td width="77%" align="left" bgcolor="#f1f1f1"> <input name="adminuser_realname" type="text" size="40" value="<%=GL.AURealname%>"></td> GL.Get_AdminGroups_S <textarea name="adminuser_selfconfig" cols="60" rows="10"><%=GL.AUSelfconfig%></textarea></td> 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">名稱</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> Set GL = Nothing ShowBottomHtml '調用公用函數産生尾部代碼 以上程式寫的不是很好,但結構還是比較清晰的,在adminusers_gl.asp中分别對action進行判斷,去調用類中的不同方法,在下面頁面部分,盡量使ASP代碼減少,這樣美工就能很輕松的修改程式界面了! 如果你覺得程式寫的不好,請不要見笑,歡迎大家和我交流。 我的blog:jblog.create-e.org QQ:5226983 |