基于J AVA W EB 中M VC 模式的研究与应用
杨静
(郧阳师范高等专科学校计算机科学系,湖北十堰442000)
摘要:MVC(Model-View-Controller)设计模式是现代软件设计中一种非常重要的设计模式,也是WEB 系统中常用的一种
经典模式,它实现了界面显示与业务逻辑的分离。为了提高基于WEB系统中代码的可重复性、可维护性、可移植性和系统
性能的稳定性,从数据库访问技术、XML 技术和DAO 设计模式的角度,提出一种MVC 改进模式,并阐述了基于此模式
进行开发的技术和原理。
关键词:MVC;Model;设计模式;Java  Web
中图分类号:TP393          文献标识码:A文章编号:1009-3044(2014)28-6668-04
Research and application of MVC model in WEB Based on JAVA
YANG Jing
(Department of Computer Science,Yunyang Teatechers’College, Shiyan 442000, China)
Abstract: MVC (Model- View- Controller) design pattern is a very important design patterns in modern software design, the
WEB system is used in a classical model, it implements the interface display and business logic separation. In order to improve the
code in the WEB system repeatability, maintainability, portability and performance based on system stability, access technology,
XML technology and DAO design pattern from the perspective of the database, put forward a kind of improved MVC model,
and describes the technology and principle of development based on this model.
Key words: MVC; M odel; design patterns; Java Web
DOI:10.14004/jki.ckt.2014.0546
1 MVC 设计模式
前女排队长曾春蕾宣布怀孕MV C 是一种经典的程序设计概念,此模式将应用程序分成3 个部分,分别是模型层(Model)、视图层(View)、控制层(Controller),
其关系如图1所示:
方法应用事件
图1  MVC 关系图
1.1  模型层(Model)
模型层是应用程序的核心部分,主要由Ja va Bea n 组件来充当,可以是一个实体对象或一种业务逻辑。负责表达和访问数据,执行
商业逻辑和操作,维护应用程序状态。在M VC 模型中,它控制视图的表现结果。它采用面向对象的方法, 将问题领域中的对象抽
象为应用程序对象。在这些抽象的对象中封装了对象的属性和这些对象所隐含的逻辑。模型可以接收来自视图的查询并做出响应,在模型的数据变化的时候,它将通知视图并提供后者访问自身状态的能力,视图将根据模型的变化来更新自己,同时控制器也可以访问模型的功能函数以完成相关的任务[1] 。
1.2 视图层(View)
视图层提供应用程序与用户之间的交互界面。它从模型中得到数据并按要求显示出来,当模型中的数据发生变化时,视图从
收稿日期:2014-09-26
作者简介:杨静(1980-),女,湖北神农架人,讲师,学士,主要研究方向为网络技术和数据挖掘。
第10 卷第28 期(2014 年10 月)Computer Knowledge and Technology 电脑知识与技术基于javaweb的美食食谱网站
模型中得到通知自动更新视图;它也可以将用户输入的信息传送给控制器。在M VC 模式中,这一层并不包含任何的业务逻辑,仅仅提供一种与用户交互的视图,在W eb 应用中有J S P、HTML 界面充当。
1.3 控制层(Controller)
控制层用于对程序中的请求进行控制,起到一种宏观调控的作用,它可以通知容器选择什么样的视图、什么样的模型组件,在Web 应用中由S ervlet 充当。
2 基于JSP 的MVC 设计模式
JSP(Java Server Pa ges)是由S un 公司倡导、许多公司参与建立的动态网页技术标准。它在H TML 代码中嵌入Ja va代码片段(S criptlet)和JSP 标签,构成JSP 网页。在接收到用户请求时,服务器会处理Ja va 代码片段,然后生成处理结果的H TML 页面返回给客户端,客户端的浏览器将呈现最终的页面效果。JSP 页面负责数据显示、业务逻辑、页面控制等所有的工作,这给Web 设计带来了强耦合,维护困难,开发人员分工不明确,程序处理逻辑发杂等一系列问题。为了解决这种问题,Sun 公司制定了两种设计模式,模式一(Model1)和模式二(Model2)。Model1 设计模式中,主要分两层,视图层和模型层。图2 称之为模式一,虽然模式一实现了页面显示和业务逻辑的分离,但是在J SP 页面中不仅需要编
写显示,而且很多业务逻辑、流程控制和调用J avaBean 的程序代码都出现在JSP 页面中,当业务逻辑非常复杂时,大量的内嵌代码会使得整个页面程序变得异常复杂,使整个项目再维护的时候显得非常困难。采用M odel1 模式开发小型项目非常的方便,每组页面实现一个功能,当需要对某个功能进行修改时,需要修改很多地方,这样不利用功能的扩展和更新。
为了解决模式一种的紧耦合、复用性差、维护成本高的缺点,此时提出了Model2 模式,如图  3 所示。该图表示的是一种把JSP 与S ervlets 联合使用来实现动态内容服务的方法,即MV C 模式。它可以很好地表达用户与系统的交互模式以及整个系统的程序架构模式。在该模式中,JS P 充当视图层,主要负责视图的显示servlet 充当控制层,控制分发用户的请求,根据用户的请求,调用相应的业务Bea n,并将结果返回给适当的页面进行显示,JavaBea n 充当模型层,主要负责业务逻辑的实现,因此在构建Web 应用,采用Model2 模式具有显著的优势。
图3    MVC 模式2
3 改进的MVC 模式
采用Model2 模式开发项目时,在业务层中主要封装了实体Bea n 和业务Bean,实体Bea n 主要用来封装实体对象,而业务Bea n 主要是一些关于对数据库的操作。此时在业务B ean 就会涉及到数据库的连接和关闭,当在使用的过程中,如果频繁的打开和关闭数据库是非常耗时和浪费系统资源的,此时我们可以在业务层中加入一个数据库连接池,避免了数据库频繁的打开和关闭,提高了系统性能。当一个项目的业务比较复杂时,此时在Servlet 中不仅有一些流程控制代码和业务代码,还有大量的数据处理代码,此时应该尽量减少在Servlet 中的代码,只让Servlet 做接收数据,转发数据功能,其它的事情放到外面去做,为了实现该功能,将在S ervlet 中对数据的一些处理操作代码单独封装到Service层中,Servlet 接收到用户请求后,根据请求的目标,直接跳转到对应的Ser⁃  vice 中,在Service 中负责对数据的处理和调用相应的业务层。其实现流程图如图4 所示。
图  4 改进后的MVC
4 基于MVC 模式登陆模块的实现
现在结合登陆模块的开发,介绍M VC 的在J ava Web 中的具体实现步骤,从而加深对M VC 设计的理解。用户填写登陆信息的界面和通过验证并返回信息的界面都为视图(View);当用户填写的信息通过Form  表单提交后,此时需要根据a ction 跳转到指定的
本栏目责任编辑:谢媛媛软件设计开发6669
Computer Knowledge and Technology 电脑知识与技术第10 卷第28 期(2014 年10 月)
控制器(Controller),而此控制器主要是通过S ervlet 完成,Servlet 需要在 l 中进行配置;通过控制器调用模型层(Model),连接数
据库,验证输入信息是否在数据库中存在。在此整个模块所涉及到的程序清单如下表一各模块的表述:
表  1 模块的描述信息
在数据库连接时,通常采用J DBC 技术,此技术作为一种数据库访问技术,具有简单易用的优点。但使用这种模式进行W eb 应用程序开发,存在很多问题:首先,每一次Web 请求都要建立一次数据库连接,而建立连接是一个费时并且耗费内存资源;其次,对于每一次数据库连接,使用完后都得断开,否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。因此,这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。此时我们采用数据库连接池进行数据库的打开和关闭。数据库连接池的基本思想就是为数据库连接建立一
个“缓冲池”,预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。在配置数据库连接池时需要修改Tom ca t 中的l 和项目中WE B-IN F 下的l 文件,再在程序中获得已有连接。
在整个MV C 设计中Model 是其核心部分,对于用户登陆模块,需要将输入的数据或从数据库中读取的数据封装到User 类,从而各个模块都能方便的使用该JavaBea n 对象了,而JavaBea n 在封装的时候只需要书写它的getXxx 和setXxx 方法就可以了,作为Model 最重要的就是如何设计一个好的D AO 模式来对数据库进行操作,为了以后能够更好的进行功能的扩充,在D AO 组件中先定义一个UserD AO 接口,然后定义接口的UserDAOIm pl 实现类,在接口的实现类中定义的各种方法来实现对数据的操作,但不负责
数据库的连接和关闭操作,而要完成这一操作主要是通过代理来完成,并调用真实主题,通过一个DAOFa ctory 工厂实现D AO 的实例。部分代码如下:
接口的实现类:
//带参构造方法
春晚武术震惊世界
public UserDAOImpl(Connection conn)
易迅优惠券免费领取
{ = conn;
}
//用户查
public b oolean f indLogin(User u ser) t hrows E xception {
…………
String sql="sele ct una m e from use r whe re una me=? a nd upa ssword=?";
…………
Re sultSe t rs= cute Que ry();
…………
re turn fla g;
}}
/
/代理的功能是关闭数据库,调用真实主题
public b oolean f indLogin(User u ser) t hrows E xception
{boolea n fla g=fa lse;
try{ flag=this.da o.findLogin(use r
);
}catch(Exception e){
6670软件设计开发本栏目责任编辑:谢媛媛
第 10 卷第 28 期 (2014 年 10 月) Computer Knowledge and Technology 电脑知识与技术
throw e;
}finally{ this.dbc.close(); }
re turn fla g; }}
/
/D AOFa ctory
public static UserDAO
getUserDAOInstance(){ re turn ne w U se rDa oP roxy(); }
将此过程用 MV C 设计流程显示如图 5:
5 结束语
图 5 登陆流程图
采用 MV C 模式清晰将表达和内容进行了分离,开发人员负责 Servlet 和 Ja vaBea n ,网页设计人员负责 JSP 页面的开发,分工明
确,非常适合大项目的开发,同时采用该模式开发设计清晰,独立性强,易扩充,易维护等优点,使各类人员都可以更加专注完成自 己的工作,在 Web 开发中有显著的优势。
参考文献:
[1]  雷钧.MV C  设计模式在J2EE 平台上的应用[J].  微计算机信息,2006,22(7):45-48.
[2] 万健,刘建华. 基于MV C 模式的JSP 技术开发WebGIS[J]. 工程地球物理学报,2009,6(2):241-243. [3] 范芸,范慧霞. JS P 动态网站开发基础与上机指导[M]. 北京:清华大学出版社, 2010:245.
(上接第 6637页)
Model 代码 100%自动生成,DAL 代码自动生成率为 90.1%,BLL 代码自动生成率 74.7%,WebUI 代码自动生成率 62.3%,平均代 码自动生成率 79.4%。通过上述数据可以看出,采用本文提出的软件开发自动化技术,当用户需求发生变化时,能够及时的响应, 减轻了开发者的工作量,提高了开发效率,使开发者能够更专注去解决需求中的关键问题。
3 结束语
散步ppt本文利用一种面向 M IS 的软件开发自动化开发技术开发框架,给出一种适应中小型 MIS 的开发方法,能应对用户需求的动态 性。在九江市农产品质量安全监测网设计与实现中,依据使用开发框架的流程,能快速产生原型系统让使用者进行试用并反馈, 并最终得的一个用户满意的系统。从实际应用的分析结果可以看出,开发者工作量降低,可以更多的专注于解决问题,框架具有 较强的实用性,对于农产品质量安全监测系统的开发具有良好的参考价值。
参考文献:
[1]  王晓宇,钱红兵.基于UML 类图和顺序图的C++代码自动生成方法的研究[J].计算机应用与软件,2013,30  (1):  190-195. [2] 周兵,许俊,吴亚平.中小 MIS  快速原型构建与自动代码生成[J].计算机技术与发展,2012,22 (5):28-31.
[3]    陈清,吴海涛,王璐.基于代码自动生成技术的管理信息系统的实现[J].计算机与数字工程,2013,41(2):    268-270.
[4] Cheng X,Qiu X X.Design and Implementation of a Software Automation Development Framework for Management Information System  [C]//A dva nce d Mate rials Re sea rch. 2014,989:  4488-4492.
[5]  张志杰. 基于分层结构的管理信息系统架构设计[J]. 计算机技术与发展,2010,20  (10):146-149. [6]  周育红,闫锋欣. 数字资源跨平台整合系统的设计与实现[J]. 计算机技术与发展,2010,20  (1):243-246.
[7] 朱晓辉,王杰华,石振国.NET 下基于PowerDesigner 和CodeSm ith 的软件自动化开发技术[J]. 计算机科学, 2010,37(7):156-159.
本栏目责任编辑:谢媛媛
软件设计开发
巧虎快乐上学
6671