APP下载

MVC设计模式研究

2016-03-22高昂魏惠茹李晓东李博

电脑知识与技术 2016年1期
关键词:设计模式视图控制器

高昂+魏惠茹+李晓东+李博

摘要:MVC设计模式的思想是把软件系统中的各个模块进行分离,减少各层次之间的联系,使得层次之间更加清晰,提高了可读性,便于维护。

关键词:MVC;设计模式;控制器;模型;视图

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)01-0088-02

Research on MVC Design Pattern

GAO Ang,WEI Hui-ru,LI Xiao-dong,Li Bo

(Zhengzhou Chenggong University of Finance and Economics, Zhengzhou 451200, China)

Abstract: The idea of MVC design pattern is to separate each module of the software system, reduce the connection between each level, make the level of the more clear, improve the readability, easy to maintain.

Key words: MVC; design pattern; controller; model; view

MVC(Model-View-Controller)设计模式即“模型-视图-控制器”是在20世纪80年代编程语言Smalltalk-80发明的一种软件设计模式,至今已经广泛应用在软件开放中,并且受到越来越多的使用者和开发者的欢迎。下面以JSP MVC为例来讨论MVC的结构、工作原理、简单实现方法以及MVC设计模式的优缺点。

1 MVC的结构

MVC设计模式将一个应用程序分为三个部分:模型(Model),视图(View),控制器(Controller)。

图1 MVC体系结构

模型(Model)用来表示数据和业务逻辑,对应的组件是JavaBean。在MVC设计模式的三个组成部分中,模型主要用于数据处理。模型返回的数据与数据格式无关,也就是说与数据展示没有关系。模型提供的数据能被多个视图所使用,这样就提高了数据处理部分代码的重用性。

视图(View)是用户看到并与之交互的界面,对应的组件是JSP或HTML文件。视图提供可交互的客户界面,向客户显示模型数据。在视图中没有真正的数据处理发生,视图只是将模型里返回的数据作为一种输出数据进行展示并允许用户操作。

控制器(Controller)用来接受用户的请求,调用对应的模型去处理数据,根据模型处理的结果选择不同视图去展示数据并完成与用户的交互。在JSP中,对应的组件通常使用Servlet。

2 MVC工作原理

MVC设计模式的工作原理是客户端的所有请求都发送给控制器Servlet,Servlet接受请求,调用对应的模型处理数据,根据模型处理结果调用不同视图响应;同时Servlet还根据JSP的需求生成相应的JavaBean对象并传送给JSP,JSP通过直接调用方法或者useBean的自定义标签,得到JavaBean中的数据。Servlet扮演了一个控制器的角色,负责生成JSP页面所要用到的JavaBean对象,并且控制流程的处理,根据不同的请求来决定转发到哪个JSP页面。

3 MVC实现思路

MVC设计模式具体实现是JavaBean作为模型层,Servlet作为控制层,JSP作为视图层。JSP专门用于表现数据而无须进行其他操作,使得JSP页面没有或只含有很少的Java代码。使得页面清晰,提高了可读性,便于维护。

每层作用如下:

JavaBean作为Model层,负责存储与应用程序相关的数据,实现各个具体应用的业务逻辑功能。

JSP作为View层,用于用户界面的显示。它主要通过信息共享,从JavaBean中取出数据,插入的HTML页面中。

Servlet作为Controller层,接收并处理客户端请求,通过JavaBean访问数据库或其他资源,提供View层中要用到的数据,根据处理结果决定转向哪个JSP视图进行交互。

这种设计模式通过JSP页面、Servlet、JavaBean的合作来实现交互处理,很好地实现了表示层、逻辑层和数据层的分离。

4 MVC框架的简单实现

package lxd.servlet;

import java.io.*;

import javax.servlet.*;

import javax.servlet.annotation.*;

//采用注解的形式定义控制器的URL

@WebServlet("/ControllerServlet")

public class ControllerServlet extends GenericServlet {

public ControllerServlet() {

//控制器构造

}

public void init(ServletConfig config) throws ServletException {

//控制器初始化

}

public void service(ServletRequest request, ServletResponse response)

throws ServletException, IOException {

//结果页面

String path="具体页面";

//根据传来的key值,决定跳转页面

String key=request.getParameter("key");

if("操作类型1".equals(key)){

//调用JavaBean

//获取具体path页面

}

if("操作类型2".equals(key)){

//调用JavaBean

//获取具体path页面

}

//结果转向

request.getRequestDispatcher(path).forward(request, response); }

public void destroy() {

//控制器销毁}}

5 MVC设计模式优缺点

MVC设计模式的思想是把应用系统中的各个部件分离,减少部件间的耦合度,这样软件的开发分工就很明确,可以把数据库开发,程序业务逻辑开发,页面开发分开,每一层都具有相同的特征,方便以后的代码维护。但是,分层也提高了对开发人员的要求,产生较多的文件,增加文件管理的难度。

参考文献:

[1] 李晓东. 项目驱动教学法在计算机程序设计语言课中的探索[J]. 软件, 2015(4): 107-109.

[2] 李晓东. ORM对象持久化技术研究[J]. 软件导刊, 2015(5): 52-53.

[3] 高昂. JDBC数据库访问技术探究[J]. 信息与电脑:理论版, 2015(13): 93-94.

[4] 李晓东. DAO设计模式研究[J]. 软件导刊, 2014(7): -37.

[5] 李立. 浅析Java异常处理机制[J]. 电脑知识与技术, 2012(27): 6483-6484.

[6] 魏惠茹. Hibernate对象持久化技术的研究[J]. 电脑知识与技术, 2011(19): 4733-4734.

[7] 魏惠茹. 泛型程序设计的研究[J]. 电脑知识与技术, 2009(23): 6435-6436.

[8] 李霞. MVC设计模式的原理与实现[D]. 长春:吉林大学, 2004.

[9] 刘亮. 基于MVC的通用型模式的设计与实现[J]. 中国科学技术大学学报, 2010(6): 635-639.

[10] 冉春玉. MVC模式及Struts框架应用研究[J]. 武汉理工大学学报, 2004(6): 66-69.

猜你喜欢

设计模式视图控制器
“1+1”作业设计模式的实践探索
三维协同设计模式下的航天项目管理实践与展望
交通机电工程设计模式创新探讨
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
MOXA RTU控制器ioPAC 5542系列
倍福 CX8091嵌入式控制器
4V三输出同步降压型控制器
互动式设计模式研究