MVC是一種優秀的設計模式.在MVC設計模式中,M代表Model,C代表Controller,V代表Viewer,也既是模型層,控制層和視圖層.
Model是實現商務邏輯的地方,Controller是起著控制轉寄的作用,而Viewer則是顯示資料.
下面以使用者登陸驗證為例,詳細介紹MVC實現架構:
當使用者要進入WEB系統後台,必須要通過驗證,即通過使用者名稱和密碼進行登陸,驗證通過則允許進行瀏覽查看,否則提示使用者輸入錯誤.
設計模型層:
這裡模型是使用者,該使用者的屬性只有使用者名稱(username)和密碼(password),因此,username和password是登陸使用者的屬性.那麼可以設計如下的類進行封裝這個使用者模型層.
Rem 登陸使用者模型層
Rem 類名稱:使用者登陸屬性類
Rem 建立時間:2009-3-5
Dim LoginUser
Set LoginUser= New LoginUser_'執行個體化一個對象
Class LoginUser_
Private my_username'私人屬性使用者名稱
Private my_password'私人屬性使用者密碼
Private Sub Class_Initialize()
End Sub
Private Sub Class_Terminate()
End Sub
Public Property Get username'下面都是一些Get和Set方法
username = my_username
End Property
Public Property Let username(ByVal Value)
my_username = Value
End Property
Public Property Get password
password = my_password
End Property
Public Property Let password(ByVal Value)
my_password = Value
End Property
End Class
好了,下面設計資料訪問層,也就是DAO.資料訪問層主要是對使用者登陸驗證的各種方法.我寫的代碼如下:
<!--#include file="../common/tool.asp"-->'防SQl注入類
<!--#include file="../ActionForm/LoginUser.asp"-->'調用模型層使用者屬性
<!--#include file="../common/conn.asp"-->'資料庫連接類
<%
Rem 使用者登陸的資料訪問層(資料處理)
Rem 建立時間:2009-3-5
Dim LoginUserDao
Set LoginUserDao= New LoginUserDao_
Class LoginUserDao_
Private Sub Class_Initialize()
End Sub
Private Sub Class_Terminate()
End Sub
Rem 擷取使用者的表單值
Rem 當不為空白,返回結果為1;為空白返回結果為0
Public Function GetUserForm()
LoginUser.username=CheckString.CheckStr(Request.Form("username"))
LoginUser.password=CheckString.CheckStr(Request.Form("password"))
If LoginUser.username<>"" And LoginUser.password<>"" Then
GetUserForm=1
Else
GetUserForm=0
End If
End Function
Rem 驗證使用者的登陸
Public Function CheckUserLogin(username,password)
OleDbSQLHelper.Db_Conn username,password,"select username,password from [hg_admin_user] where username='"&username&"' and password='"&password&"'"
If Not(OleDbSQLHelper.m_Rs.Eof And OleDbSQLHelper.m_Rs.Bof) Then
Session("username")=Trim(OleDbSQLHelper.m_Rs("username"))
Response.Redirect "index.asp"
Else
Response.Write("<Script>alert('對不起,你的使用者名稱和密碼不正確');history.go(-1)</script>")
End If
End Function
End Class
%>
最後來設計BLL,也就是商務邏輯層.
<!--#include file="../Dao/LoginUserDao.asp"-->'引用DAL層的方法
<%
Rem 後台使用者登陸控制層(資料轉寄)
Rem 建立時間:2009-3-5
Dim LoginUserAction
Set LoginUserAction= New LoginUserAction_'實體化一個對象
Class LoginUserAction_
Private Sub Class_Initialize()
End Sub
Private Sub Class_Terminate()
End Sub
Public Sub CheckUserLoginAction()
If LoginUserDao.GetUserForm=1 Then'不為空白時進行登陸驗證
LoginUserDao.CheckUserLogin LoginUser.username,LoginUser.password'向函數傳值
End If
End Sub
End Class
%>
視圖層設計:
在視圖層中,我們只需要這樣調用BLL中的方法
<!--#include file="../hg_admin_manage/Action/LoginUserAction.asp"-->
<%
LoginUserAction.CheckUserLoginAction
%>
以上代碼在WinXP+IIS5.0環境下測試通過.基於這樣的分層架構代碼層次清晰,邏輯性強,有良好的健壯性和可擴充性,便於後期的維護