作者简介:王时绘(1965-),男,湖北武汉人,湖北大学数学与计算机科学学院教授,研究方向为计算机网络与数据库;吴力挽(1980-),男,湖北蕲春人,
湖北大学数学与计算机科学学院硕士研究生,研究方向为信息系统分析与集成;童小刚(1984-),男,湖北武汉人,湖北大学数学与计算机科学学院硕士研究生,研究方向为信息系统分析与集成。
MVC 设计模式在ASP 角身份验证中应用与实现
王时绘,吴力挽,童小刚
(湖北大学数学与计算机科学学院,湖北武汉430062)
摘
要:介绍了MVC 设计模式的思想,以ASP 角身份验证为具体实例,研究了MVC 设计模式在角身份验证的
设计与运用,并在此基础上构建了一个基于B/S 三层架构的角身份验证系统。项目实际应用证明采用MVC 设计模式能加快系统的开发效率,系统具有较好的扩展性和可维护性,分层架构清晰,耦合度低。关键词:MVC ;设计模式;身份验证;耦合度中图分类号:TP311.11
文献标识码:A
文章编号:1672-7800(2009)08-0035-03
引言
ASP 是Microsoft 开发的动态网页语言,在微软的服务器软件IIS 上解释执行。由于ASP 入门简单,上手较快,很多开发者常常将ASP 代码与Html 语言混杂在一起,造成代码混乱,难
于维护,可重用性低,健壮性弱。本文从设计模式角度,利用
MVC 重构ASP 角身份验证代码,采用Model-View-Con -troller 三层架构,系统分层架构清晰,逻辑性强,健壮性好,便于后续的扩展和维护,也为开发ASP 其他系统模块提供了较
大的参考价值。
1MVC 设计思想概述
1.1MVC 的层次结构
MVC 是目前广泛流行的一种设计模式,它把一个系统应用按照输入输出分为3个核心部件:模型,视图
和控制器。
模型(Model ):该层封装的是业务对象的属性数据和业务
逻辑。模型接受业务视图的请求,并根据请求返回最终结果。模型只需编写一次,就可以被多个视图调用,增加代码的复用性。
控制器(Controller ):主要是接受用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,并通过表示层呈现给用户。
视图(View ):是用户看到的并与之交互的界面。视图对象使用对象模型的查询方法以获取数据,并将数据显示给用户。
1.2MVC 的层次关系
模型、视图与控制器的分离,使得一个模型可以具有多
个显示视图。如果用户通过某个视图的控制器改变了模型的数据,其它依赖于这些数据的视图也都会发生变化。模型、视图、控制器三者之间的关系和各自的主要功能如图1所示。
首先用户的请求通过视图发送给控制器,由控制器接收
从视图发过来的请求,做出判断调用相应的模型,接着模型将处理后的信息反馈给视图,最后视图还要将返回的信息发送给控制器,由控制器判断下一步操作所应该调用的视图,每一步的操作都遵循这一关系
。
图1MVC 层次关系
2
用户角身份验证系统设计
本系统采用微软的ASP 语言进行系统应用开发,使用Mi -
croSoft SQL 2000做数据库,利用IIS 服务器软件来解释执行.整
个系统采用MVC 模式进行设计,下面说明基于MVC 实现方式。
2.1系统流程图
本系统的程序运行流程图见图
2。
第8卷%第8期
2009年8月
Vol.8No.8Aug.2009
2009年软件导刊
2.2数据库设计
由于只是一个简单的登陆系统,数据表只需建立两个字段:用户名(UserName)和密码(Password),建表如表1。
表1数据表
字段数据类型长度
UserName VarChar20
Password VarChar20
2.3建立模型(Model)
模型层可以说是整个系统工作的核心,基本上所有的业务逻辑和数据操作都在该层实现。这一层可以分为服务层(Ser-vice)和数据访问层(DAO)。服务层职责是对模块的“原子用例”进行实现,数据访问层用于配合服务层的数据存储操作。
2.3.1服务层(Service)的实现
服务层是对业务对象属性数据的封装。服务层主要是为数据访问层提供业务对象的属性数据。这里建立用户模型User-Bean,其中,UserName和PassWord是该模型的属性数据。通过Get和Let方法对Username和Password进行访问。如果要获取UserName和PassWord的值,可以通过UserBean.UserName和UserBean.PassWord来调用。下面给出部分核心代码:
Public Property Get username
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
2.3.2数据访问层(DAO)的实现
数据访问层主要是抽象和封装对数据库各种操作方法的实现.对数据的增加、修改和删除都可以封装在数据访问层。在这一层中,封装了两个方法。一个是GetUserForm(),其作用是通过Request函数获取页面的表单值,并将其值通过Function 来返回。另一个是CheckUserLogin(),其作用是对传来的表
单值,以参数形式传入SQL语句中,和数据表中的用户名和密码进行核对比较,根据比较结果实现页面跳转。下面给出关键代码:
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
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('对不起,你的用户名和密码不正确');(-1)</script>")
End If
End Function
%>
2.4控制层设计(Controller)
控制层不做任何的数据处理,它只接受浏览器的请求,并决定执行什么业务逻辑功能。在ASP中,没有可采用的控制类库来进行请求控制转发。这里,笔者建议采用跨页面传值的形式来进行请求转发。通过Request.QueryString获取传值内容,并根据其内容来执行触发操作(如图3所示)。关键代码如下:<!--#include file="../Dao/LoginUserDao.asp"-->'引用DAO 层的方法
Public Sub CheckUserLoginAction()
If LoginUserDao.GetUserForm=1Then'不为空时进行登陆验证
LoginUserDao.CheckUserLogin LoginUser.user-name,LoginUser.password
End If
End
Sub
第8期Application of MVC Design Patter in ASP Role Identity Verification
Abstract :This paper introduces the MVC design pattern of thought to the role of ASP authentication for specific examples to study the role of MVC design pattern at the design of authentication and application,and on this basis to build up a Based on B /S three-tier ar -chitecture the role of identity verification system.Projects to prove the practical application of the use of MVC design pattern can speed up the development of the efficiency of the system,the system has better scalability and maintainability,layered architecture clear and low coupling.
Key Words :MVC;Design Mode;Authentication;Coupling Degree
下面只给出ASP 视图层的关键代码。<!--#include file ="../hg_admin_manage/Action/LoginUser -Action.asp"-->LoginUserAction.CheckUserLoginAction
3结束语
在本系统中,笔者按照MVC 模式进行开发,严格采用三层
架构,使页面代码和业务逻辑完全分离。这为ASP 开发带来了一种全新的思路和模式。使ASP 具有分层和架构的概念,为开发ASP 其他模块具有借鉴意义。本文的所有代码均在Winxp+
IIS5.1+SQL 2000环境下测试通过。
总而言之,基于用MVC 模式开发的系统,系统模块之间耦合度较低,模块之间的结构关系更加清晰,具有良好的可扩展性和可维护性,这为以后系统的升级提供了方便。同时,也减少了软件开发的成本,有利于软件的工程化管理。当然,MVC 也
有不足,MVC 的缺点是由于它没有明确的定义,所以完全理解
MVC 并不是很容易。使用MVC 需要精心的计划,由于它的内
部原理比较复杂,所以需要花费一些时间去思考。
参考文献:[1]林凯.基于MVC 设计模式的Struts 框架研究[J ].科技信息,2008(8).
mvc和三层架构的理解[2]王长涛,马斌,张楠,等.基于MVC 设计模式Struts 架构研究及应用[J ].科技广场,2008(1).
[3]Scott Mitchell.ASP 设计[M ].北京:中国电力出版社,2001.
[4]张固,汪晓平.ASP 网络应用系统典型模块开发实例导航[M ].北京:人民邮电出版社,2004.
[5]
Eric Freeman &Elisabeth Freeman with Kathy Sierra &Bert Bates .Head First 设计模式(中文版)[M ].北京:中国电力出版社,2007.
(责任编辑:卓
光)
王时绘,吴力挽,童小刚:MVC 设计模式在ASP 角身份验证中应用与实现37··
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论