MVC设计模式研究

2024-07-05|版权声明|我要投稿

MVC设计模式研究(精选10篇)

MVC设计模式研究 篇1

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

1 MVC的结构

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

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

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

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

2 MVC工作原理

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

3 MVC实现思路

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

每层作用如下:

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

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

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

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

4 MVC框架的简单实现

5 MVC设计模式优缺点

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

摘要: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.

MVC设计模式研究 篇2

“MVC”(Model-View-Controller)由Trygve Reenskaug提出,首先被应用在SmallTalk-80环境中,是许多交互和界面系统的构成基础。MVC作为一种开发模型,通常用于分布式应用系统的设计和分析中,以及用于确定系统各部分间的组织关系。对于界面设计可变性的需求,MVC把交互系统的组成分解成模型、视图、控制器三种部件。

模型(Model)部件保存由视图显示,由控制器控制的数据;它封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达和I/0操作。视图(View)部件把表示模型数据及逻辑关系和状态的信息以特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。

控制器部件是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。

二、MVC设计模式在ASP.NET中的实现

ASP.NET提供了一个很好的实现这种经典设计模式的类似环境。开发者通过在ASPX页面中开发用户接口来实现视图;控制器的功能在逻辑功能代码(.cs)中实现;模型通常对应应用系统的业务部分。

视图是模型的表示,它提供用户交互界面。在ASP.NET下,视图的实现很简单。可以像开发WINDOWS界面一样直接在集成开发环境下通过拖动控件来完成页面开发本。视图部分处理流程:首先,页面模板定义了页面的布局:页面配置文件定义视图标签的具体内容;然后,由页面布局策略类初始化并加载页面;每个用户部件根据它自己的配置进行初始化,加载校验器并设置参数,以及事件的委托等;用户提交后,通过了表示层的校验,用户部件把数据自动提交给业务实体即模型。

为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。因此,为了达到集中管理的目的引入了控制器。应用程序的控制器集中从客户端接收请求(典型情况下是一个运行浏览器的用户),决定执行什么商业逻辑功能,然后将产生下一步用户界面的责任委派给一个适当的视图组件。

控制器提供一个控制和处理请求的集中入口点,它负责接收、截取并处理用户请求;并将请求委托给分发者类,根据当前状态和业务操作的结果决定向客户呈现的视图。在这一部分主要定义了HttpReqDispatcher(分发者类)、HttpCapture(请求捕获者类)、Controller(控制器类)等,它们相互配合来完成控制器的功能。请求捕获者类捕获HTTP请求并转发给控制器类。控制器类是系统中处理所有请求的最初入口点。控制器完成一些必要的处理后把请求委托给分发者类;分发者类分发者负责视图的管理和导航,它管理将选择哪个视图提供给用户,并提供给分发资源控制。在这一部分分别采用了分发者、策略、工厂方法、适配器等设计模式。

MVC系统中的模型从概念上可以分为两类——系统的内部状态和改变系统状态的动作。模型是你所有的商业逻辑代码片段所在。

三、MVC模式的优缺点

1、MVC模式的优点

通过在ASP.NET中的MVC模式编写的,具有极其良好的可扩展性。它可以轻松实现以下功能:①实现一个模型的多个视图;②采用多个控制器;③当模型改变时,所有视图将自动刷新;④所有的控制器将相互独立工作。

2、MVC模式的不足

①增加了系统结构和实现的复杂性。对于简单的界面,严格遵循Mvc,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

②视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

③视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

四、结束语

与软件所处理问题的内在模型相比较,用户界面是需要经常发生变化的,采用MVC设计模式可以在满足对界面要求的同时,使软件的计算模型独立于界面的构成。也可以基于此模型建立大型分布式应用程序框架。

重构的MVC模式研究 篇3

传统的Java Web开发模式是基于Model2的MVC开发模式。基于这种模式的Web应用的运行逻辑是由一系列的页面切换构成的,每一个页面都是不可分割的最小单元,要更新页面中的数据必须对页面进行整体刷新。AJAX技术的出现,很好的改变了传统的web开发模式,提高了用户体验,它让用户体验的是一种连续的状态,避免了传统的web应用请求-等待-响应的流程,让用户可以连续发送多次异步请求,而无需等待服务器响应。

随着技术的发展,表现层的功能和设计已经变得越来越复杂,现在已经不再是表现层里只有HTML元素。在新的设计中,表现层已经成为了一个跨越Server端和Client端的子系统,既有对UI组件的管理,又有对AJAX通信的封装。它的复杂度甚至已经超过了原本被我们认为是绝对核心的业务逻辑层和持久化层。所以,进一步将MVC设计模式引入到表现层中已经成为一个非常现实的话题。文章阐述了传统MVC模式的特点,并对Ajax新技术的通信机制进行分析,在此基础上提出了重构的MVC模式。

1、传统的Web表现层技术

传统MVC设计模式重新定义了B/S模式结构应用的开发模式,MVC模式规定B/S结构应用应该分成3个部分:Model、View和Controlle, MVC模式分离的数据访问和数据表现,给系统提供了更好的解耦。MVC框架的核心思想是:将程序分成相对独立而又能协同工作的3个部分。通过使用MVC架构,可以降低模块间的耦合,提供应用的可扩展性。MVC的每个组件只关心组件内的逻辑,不应该与其他组件的逻辑混合。

对于B/S结构的应用程序,应用程序状态被保存在服务器端,因此客户端使用B/S结构应用程序是一种请求/响应的程序架构,当客户端的一个请求发送之后,在服务器的响应还未抵达客户端值钱,用户什么也不能做,只能处于等待状态,且看到的是一片空白。

传统的B/S结构的请求是一种独占式的请求,而其每个请求对应一个页面,因此当服务器响应到达客户端时,浏览器都会重新转载该响应,从而导致频繁的页面刷新。因为传统B/S结构应用的每个页面的使用时间都很短暂,因此不可能将该页面制作成丰富的页面。

目前基于MVC模式的web框架层出不穷,虽然各有优点,但都是以独占式的方式请求服务器资源,客户仍然需要等待。

2、Ajax技术介绍:

Ajax并不是一门全新的技术。Ajax所使用的JavaScript, CSS和DOM对象等早已存在。Ajax通过这些传统的对象改善用户的交互体验,让用户能异步发送请求:在浏览页面的同时,向服务器发送请求。

Ajax加入了XMLHttpRequest对象,这个对象提供了与服务器交互的能力,可以异步发送请求,提供与服务器异步通信的能力,无须独占用户在页面上执行的操作。因而,Ajax给用户一种全新的体验。

Ajax技术的出现,改变了传统Web应用的模式,它既是对传统Web应用的完善,也是对传统Web应用的革命。Ajax技术采用异步发送请求的方式代替采用表单提交来更新Web页面的方式,从而揭开了无刷新动态更新页面时代的序幕。Ajax可以成为Web应用开发史上的里程碑。

Ajax应用特别适用于交互较多、频繁读数据、数据分类良好的Web应用。大致上,使用Ajax技术有如下优势:减轻客户端的内存消耗。Ajax的根本理念是"按需取数据",所以最大可能地减少了冗余请求,避免客户端内存加载大量冗余数据。无刷新更新页面。通过异步发送请求,避免频繁刷新页面,从而减少用户的等待时间,提供给用户一种连续的体验。Ajax技术可以将传统的服务器工作转嫁到客户端,从而减轻服务器和带宽的负担,节约空间和带宽租用成本。

Ajax采用了"按需取数据"的模式,这种模式降低了数据的实际读取量,在传统的Web应用里,服务器的每次响应都是一个完整的页面;而在基于Ajax技术的Web应用里,服务器的响应只是必须更新的数据。如果服务器响应数据过大,那么传统Web应用将出现重新加载的白屏;由于Ajax采用异步的方式发送请求,页面的更新由JavaScript操作DOM完成,因此,在读取数据的过程中,浏览器中也不会出现白屏,而是原来的页面状态。

企业通过使用Ajax可以增强网站的功能,改善用户体验。用户可以通过滚动屏幕浏览大量的信息,可以更方便地将物品拖入在线购物车或者在线配置产品,而这些都无须刷新页面。事实上,相当多的企业都在考虑使用Ajax技术来改善用户的体验。

3. AJAX对Web开发模式的冲击

基于Model2的MVC开发模式中,存在一种假设----Web应用的运行逻辑是由一系列的页面切换构成的,这里的每一个页面一般来讲都不是特别复杂,往往有着非常特定的功能和目的。同时页面对于浏览器而言又是不可分割的最小单元,要更新页面中的数据必须对页面进行整体刷新。

利用AJAX的通信机制结合一套好的UI组件,我们完全可以把上面所有的这些操作都合并到一个界面当中。如果产品信息并不复杂,我们可以使用一个可编辑的Grid组件,让用户直接在Grid中进行产品信息的维护。如果产品信息比较复杂,我们可以在界面上再放置一个产品信息的维护表单,用户可以直接在Grid中选择要编辑的产品。所有这些编辑操作的结果都会暂时的缓存在客户端,直到用户完成了上面的各个步骤再一次性的利用AJAX技术提交到后台。这样,在整个操作过程当中用户始终不需要离开这个界面。

由上面的分析可见,AJAX一出场便推翻了Model2的基本假设,用户操作已不再是由一系列页面的更替和刷新构成的了。因此表现层开发技术的升级必然将导致对于MVC设计模式的重新思考和定位。

在传统Web应用中,有着大量的页面流,我们需要一种有效的机制对它进行管理。同时由于表现层的功能相对非常薄弱,控制器往往还要承担起为表现层准备数据的工作。这些在控制器中准备好的数据一般都是利用上下文(如Request的Attributes)以推的方式交给表现层,即推模式(Push Mode)。这种推模式在页面总是以整体刷新的方式获得更新的开发方式中并不会出现什么问题,看起来一切都可以良好的运转。可是当AJAX出现之后,这种运转机制就出现了问题。因为AJAX强调的是减少页面的整体刷新,代之以局部数据刷新。当一个局部数据刷新的请求从客户端被发起时,表现层必须有能力主动的获得所需要的数据。这种操作类似于客户端通过表现层从后端的数据模型中的拉取数据,即拉模式(Pull Mode)。这一功能需求又与传统的Model2思路产生了抵触。回顾上面的分析,我们已经在传统的Model2和AJAX之间找到了两个冲突点:1、对页面流的基本假设不同2、推模式和拉模式的矛盾

4、重构MVC开发框架

Model2和AJAX之间存在着不和谐,这是一个不争的事实。但并不是说我们就必须因此而全盘否定掉传统的MVC架构模式。事实上,企业在过渡到AJAX的过程当中,目前MVC开发框架中的主体仍可以保留下来,只是我们需要对其中的局部进行一些调整。我们将这个过程称之为对MVC开发框架的重构。在这个重构过程当中,首当其冲面临调整的就是控制层,我们需要重新为控制层找到一个定位。如果说在传统的Web应用开发模式中控制层的作用是解耦数据模型和页面的话,那么在新的表现层技术引入之后,控制层的作用就应该是解耦数据模型和表现层的数据接口。如此一来Server端的表现层逻辑就全面接管了与Client端的通信,对于Client端来讲控制层被隐藏到了表现层的后面,只负责表现层与数据模型之间的对接。相应的,原先MVC架构与Client端形成的三角关系也就演变成了垂直分布的三键模式。如图4所示:

我们可以把Server端中MVC的各个组成部分看作是一个封闭的子系统。这个子系统的功能就是从数据库中提取数据经过一系列处理之后交给Client端,同时对Client端提交的数据进行一些列处理之后再保存进数据库。同样如果我们把Clien端中MVC的各个组成部分也看作是一个封闭的子系统,它所完成的工作事实上跟Server端的子系统非常相似,只不过这个子系统的两个交互对象分别是用户和Server端。按照这种思路,最终形成的Web开发模式将是一种迭代式的MVC架构。这种迭代的开发方式对现有MVC的影响稍小,但能够起到的改善交互性的作用。

5、应用效果

利用重构的迭代式的MVC模式,在采用AJAX技术的同时,也保留了传统的MVC模式,带给客户新体验的时候,也保持了程序结构的层次性和藕合性。该模式已经在'网上购物平台'项目中得到应用。

6、总结和展望

传统Web应用主要由3层组成,而增加Ajax技术的Web应用将在传统的Web应用上额外增加一个Ajax引擎,能将控制器的部分功能转移到客户端页面。Ajax技术既是对传统Web技术的革命,也是对传统Web技术的一种改良和发展。Ajax对传统的MVC模式提出挑战,利用重构的迭代MVC模式,可以在不抛弃传统的MVC模式的情况下,有效提高web应用的开发效率和用户的体验效果。

参考文献

[1].http://www.jdon.com/jivejdon/thread/31553.html

[2].吴鹏, 尹思良, 张学杰:一种基于AJAX的JSF应用改进[J]云南大学学报2007, 29 (S2) :244~248

[3].游丽贞, 郭宇春:Ajax引擎的原理和应用[J]微计算机信息.2006.2-205:27-32

[4].刘高原刘觉夫张国平:结合Ajax和JSF技术开发Web应用[J]微计算机技术2007年第23卷第12-3期

MVC设计模式研究 篇4

[关键词]MVC JSP 网站

Internet的发展,为改变传统的商业运作模式提供了一种技术上的可行性的方案,而IT技术的发展迅速,使企业很难跟上其步伐,不能专注于自身业务的管理建设。目前急需采用一种框架式设计方案,以使企业商务网站平台建设大大简化,而基于MVC模型的商务网站平台建设满足了这种需求。

一、 传统的商务平台解决方案

传统的电子商务网站平台建设主要是基于ASP或JSP动态技术。ASP技术由于只能在微软的操作系统平台下建立,以及安全问题等限制了它的广泛应用,而JSP的动态网页技术一度成为主流,但是早期的网站绝大多数采用JSP+JavaBean开发技术。

1.ASP技术

ASP技术由于Windows系统固有的问题都会一成不变地累加到它的身上。尽管目前推出了COM组件技术使其功能变得强大,但是这种强大由于其自身设计漏洞问题暴露出很大的安全隐患。

2.JSP技术

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后生成HTML页面返回给客户端浏览器。JSP具备了Java技术的简单易用、完全面向对象、具有平台无关性且安全可靠、主要面向Internet网站的所有特点。

基于JSP技术的网站开发主要两种开发模式,成为模式一和模式二,而模式二开发技术就是基于MVC模型的技术。

二、 模式简介

1.模式一

模式一就是指JSP+JavaBean技术。在模式一中,JSP页面独自响应请求并处理结果返回客户端。所有的数据通过Bean来处理,可以实现页面的表现与页面的内容(逻辑)相分离。但是大量使用模式一可能带来一个副作用,就是会导致在页面里面嵌入了大量的Java控制代码,当要处理业务逻辑时非常复杂,尤其在大型网站建设中这种模式会导致页面维护困难。

2.模式二

模式二就是指JSP+Servlet+JavaBean技术。在模式二中,结合了JSP和Servlet技术,模型二充分利用了JSP和Servlet两种技术的原有特点。此模式技术主要基于MVC模型(Model-View-Control),它的主要思想是使用一个或者多个Servlet作为控制器。请求由前沿的Servlet(可能是多个Servlet构成的处理链)接收并处理后,会重新定向到JSP。在此模式里,JavaBean作为模型的角色,它充当JSP和Servlet通信的中间工具,Servlet处理完成后设置Bean的属性,JSP读取此Bean的属性,然后进行显示。

3.两种模式的比较

从设计角度,模式二具有更清晰的页面表现、清楚的开发者角色划分,可以充分地利用开发小组中的界面设计人员。这些优势在大型项目开发中表现得尤为突出,而使用模式一可以发挥每个开发人员特长,界面设计开发人员可以发挥界面显示效果的设计能力。在目前大型项目开发中,模式二更多的被采用。

三、 基于MVC模型的大型网站平台设计

1.MVC(模型-视图-控制器)模型原理

模型(Model)是网站的核心,用来完成企业主要的业务功能,它接收视图发来的请求,并将处理请求的结果返回给视图,虽然这个请求是由视图发出的,但是这个请求是由控制器来转发的,所以模型所进行的操作相对于视图来说是黑箱操作。这样可以用来封装部分数据,以满足面向对象原则。

视图(View)用来显示模型内容,是显示在用户面前用来与用户进行交互的平台,通常用一些可视化网页编辑软件实现。该部分只用来收集数据和显示模型,以及将用户的请求转发给控制对象,而不应当参与模型中业务流程的处理。同一个业务流程可能由于处理结果的不同而对应不同的视图。

控制器(Controller)对用户的请求做出反应,创建和设置模型,并将模型与视图进行协调,来共同完成用户请求。可以将控制对象理解为一个分发器,它会根据不同用户请求来选择不同模型和视图。并且控制对象同样不能参与业务流程的创建。

2.具体功能模块设计

针对大型商务网站的网页多样性,我们选取具有典型代表的订单处理过程来描述如何基于MVC模型设计。首先在表单中获得订单请求过程时先接受GET请求,执行数据库操作,保存到Request中,并把视图派发到下一个页面。在现实订单的页面中主要包括结果集的处理,假如订单是批量的,则通过迭代来显示所有信息。

3.网站平台设计效果

通过基于MVC模型设计的网站,在Servlet作为控制时,每个Servlet通常只能实现很少一部分功能,多个Servlet就可以结合起来完成复杂的任务,这样的好处是Servlet的重用性好,尽管会导致请求时间加长,但是这可以通过服务器的并行处理解决。

参考文献:

[1]孙卫琴:《精通Struts: 基于MVC的Java Web设计与开发》,2004.8

[2]胡俊彦路鑫鑫:基于MVC设计模式的动态电子政务Web统计模型[J].电脑开发与应用,2004(02)

[3]马溪骏鲁奎:利用JSP实现基于MVC模式的表单提交方法研究[J].计算机应用研究,2004(02)

MVC设计模式研究 篇5

MVC设计模式 (模型-视图-控制器模式) 以其模块化的设计与编码、功能扩展的灵活性、系统快速有效的维护性等方面的优点。然而MVC模式本身就是一个非常复杂的系统, 开发基于MVC模式的系统比简单的JSP开发要复杂许多, 它需要更多的时间学习和掌握, 同时新东西的引入会带来新的问题, 所以采用MVC实Web应用时, 最好选一个现成的MVC框架, 在此之下进行开发, 从而取得事半功倍的效果。

(二) MVC模式

MVC模式属于结构型设计模式, 即将应用类和对象组合获得比较复杂的结构。它源于传统的面向对象语言Small Talk-80, 它是第一个将表示逻辑和业务逻辑分开的设计模式。MVC (Model-View-Controller) 设计模式的出现使得模型层、视图层和控制层各层层次分明, 各个模块之间相互独立, 提高了灵活性和可重用性。MVC的核心是实现三层甚至多层的松散祸合, 它将应用程序抽象为三个部分, 三者既分工又合作地完成用户提交的每项任务。

1. 模型 (Model) 模型是应用程序的核心部分, 表示一个应用系统的数据, 并包含访问、维护和管理这些数据的逻辑。模型封装了应用问题的核心数据、逻辑关系和业务规则, 提供了完成问题处理的操作过程。一方面, 模型为控制器所调用;另一方面, 模型还为视图获取显示数据而提供了访问其数据的操作。

2. 视图 (View) 视图是实现模块的外观, 把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户, 此模块承担连接用户和应用程序之间的接口角色。一方面, View模块将用户的请求传递给应用程序, 触发应用程序对用户请求的处理逻辑;另一方面, View模块将应用程序对用户请求的处理结果返回给用户。当模型发生改变时, 视图也随之改变, 以维持系统数据的一致性。

3. 控制器 (Controller) 控制器是联系模型与视图之间的纽带, 它根据用户的操作判断要执行的业务逻辑, 它接受客户端的请求, 把用户数据传给业务逻辑模块, 并调用相应的业务逻辑模块进行处理, 最后根据用户所需要的响应调用相应的视图模块生成结果页面, 返回给客户端。

(三) Struts框架

1. Struts介绍

Struts是一个开源的MVC实现, 它提供了可在应用中继承、修改的基本控制器的功能。除了提供MVC的实现, Struts还提供了一些有价值的定制标签库, 比如模版标签库。逻辑标签库包含有迭代循环、if-then-else结构的定制标签。HTML标签库是许多有价值定制标签的代表, 包括实现form和用于Struts form处理、效验的定制标签。

2. Sruts框架的组件

Struts中使用的核心组件有:Action Servlet、Action、Action Form、Action Mapping、Action Forward。

(1) ActionServlet类是Struts框架的核心组件, 它充当框架的控制器, 用户向服务器发出请求时, 实际上是将请求发到Action Servlet, Action Servlet再将请求信息发送给与请求对应的Action类进行相应的业务操作。

(2) Action类真正实现应用程序的事务逻辑, 负责处理客户端的请求。

(3) ActionMapping类将特定请求映射到特定Action的相关信息存储在Action Mapping中, Action Servlet将Action Mapping传送到Action类的execute () 方法, Action将使用Action Mapping的find Forward () 方法, 此方法返回一个指定名称的Action Forward, 这样Action就完成了本地转发, 若没有找到具体的Action Forward, 就返回一个NULL。

(4) ActionForm类是Struts框架提供的DTO (数据传输对象) , 用于在视图和控制层之间传递HTML表单数据。Action Form还具有表单验证功能, 可以为模型过滤不合法的数据。

(5) ActionForward类代表控制指令所导向的一个来源, 也就是说对将要转向的视图地址的一个封装, 它的目的是控制器将Act ion类的处理结果转发至目的地。

(四) Sruts的工作流程

Struts是基于MVC设计模式的应用, 可以说是MVC设计模式功能的完美实现。MVC减弱了业务逻辑接口和数据接口之间的耦合, 可以让视图层更富于变化。结合Struts的体系结构, 我们可以得到Struts应用的一般工作流程。

ActionServlet是一个Front Controller, 它是一个标准的Servlet, 它将request转发给Request Processor来处理。Action Mapping是Action Config的子类, 实质上是对struts-config.xml的一个映射, 从中可以取得所有的配置信息。Request Processor根据提交过来的url, 如*.do, 从Action Mapping中得到相应的Action Form和Action。然后将request的参数对应到Action Form中, 进行Form验证。如果验证通过, 则调用Action的execute () 方法来执行Action, 最终返回Action Forward。

ActionForm使用了View Helper模式, 是对HTML中Form的一个封装。其中包含有validate方法, 用于验证Form数据的有效性。Action Form是一个符合Java Bean规范的类, 所有的属性都应满足get和set对应。对于一些复杂的系统, 还可以采用Dyna Action Form来构造动态的Form, 即通过预制参数来生成Form, 这样可以更灵活地扩展程序。

ActionErrors是对错误信息的包装, 一旦在执行Action或者Form.validate () 中出现异常, 即可产生一个Action Error并最终加入到Action Errors。在Form验证的过程中, 如果有Error发生, 则会将页面重新导向至输入页, 并提示错误。Action Form Bean中显示了Model的属性, 但它们不包含任何持续性逻辑或者业务逻辑。Action Form只是用来在Model、View之间传递Model信息。

Action是用于执行业务逻辑的Request Handler, 它是一个Back-end Controller, 每个Action都只建立一个instance。Action不是线程安全的, 所以不应该在Action中访问特定资源。一般来说, 应该使用Business Delegate模式来对Business tier进行访问以解除耦合。Struts提供了多种Action供选择使用。

页面显示是由一系列JSP组成的。为了使View的开发更加容易, Struts提供了一整套JSP自定义的tag库 (Tag Lib) 。这些tag库使我们能很容易地提供完全国际化的用户界面, 这些界面通常是与Model组件交互。Struts提供丰富的JSP标签库, 包括Html、Bean、Logic、Template等, 这有利于分开表现逻辑和程序逻辑。

(五) 结束语

MVC模式越来越得到人们的广泛应用, 特别是大型商业网站以及企业管理系统, 本文以对MVC模式进行了简要的介绍, 并对Struts框架以及Struts框架的应用进行了说明。MVC模式作为一个复杂的系统, 如果能够在一个MVC框架下进行开发, 例如Struts框架, 会得到事半功倍的效果。

摘要:Struts是一个广泛应用于基于MVC模式的Web应用程序框架。文章首先说明MVC设计模式的组成部分, 然后描述了Struts的一般组件体系结构, 最后着重介绍了应用Struts框架进行开发的一般工作流程。

关键词:Web应用,MVC设计模式,Struts框架

参考文献

[1]王力生, 沈骏.STRUTS框架应用中Web服务扩展模型的研究[J].微型机与应用, 2004, (10) :13-15.

[2]Kevin Duffey, Vikram Goyal, Ted Husted.JSP站点设计编程指南[M].电子工业出版社, 2002.

MVC设计模式研究 篇6

MVC模式主要由3个部分组成:模型 (Model) 、视图 (View) 和控制器 (Controller) , 在各个对象之间取得高层接口, 使应用程序的输入、处理和输出分开, 同时在程序与程序之间进行重用。

1.1 模型 (Model)

是程序执行的关键部分。所有的操作都是在这一部分实现的, 提供应用业务逻辑类。它若需要取得视图中的对象或更新视图时, 需要通过控制器来进行处理。模型表示业务逻辑和业务规则等, 在MVC的3个部件中, 拥有最多的处理任务。它可以用Java Bean和EJB等组件技术来处理数据库的访问。模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用, 所以减少了代码的重复性。

1.2 视图 (View)

视图是模型在屏幕上的显示 (HTML页面、JSP页面、Swing GUI) , 是用户接口。视图可以通过模型访问数据, 并根据客户端的要求来显示数据。视图必须保证当模型改变的时候, 数据显示也必须同时改变。在本系统中, 是用对应各个功能模块的JSP (Declare JSPs, Proposer JSPs, Unit JSPs等) 和对应这些JSP网页进行组织的模版JSP来实现的。这些JSP经过组合展示给用户程序的输入输出网页。

1.3 控制器 (Controller)

控制器处理用户与应用系统的交互操作, 其职责是控制提供模型中任何变化的传播, 确保用户界面与模型间的对应联系, 它接受用户的输入, 将输入反馈给模型, 进而实现对模型的计算控制, 是模型和视图协调工作的部件。

控制器接受用户的输入并调用模型和视图去完成用户的需求。当用户单击Web页面中的超链接和发送HTML表单时, 它只是接收请求并决定调用哪个模型组件去处理请求, 然后确定用哪个视图来显示模型处理返回的数据。控制器连接不同的模型和视图去完成用户的需求, 给定一些可重用的模型和视图。控制器可以根据用户的需求选择模型进行处理, 然后选择视图将处理结果显示给用户。如图1所示, 描述了模型、视图、控制器它们三者的关系:

MVC的处理过程是:首先控制器接收用户的请求, 并决定应该调用哪个模型来进行处理;然后, 模型用业务逻辑来处理用户的请求并返回数据;最后, 控制器用相应的视图格式化模型返回的数据, 并通过表示层呈现给用户。

MVC模型具有如下优点:

(1) MVC模式很好地解决了软件工程中如何使软件系统各模块之间最大限度地降低其复杂的耦合关系, 以及系统显示逻辑和业务逻辑之间的矛盾 (即用户界面的多变性和业务逻辑的相对不变性) , 尽可能地提高了系统的可维护性和可扩展性。

(2) 模型、视图、控制器三者的相互独立, 使得我们改变其中一个而不会影响其他两个 (或者说影响甚小) , 据此可以构造良好的松耦合构件。

(3) 所有的模型和视图都是由控制器连接和调用的, 控制器的这种桥梁枢纽作用使得它可以根据用户不同阶段的不同需求选择不同的模型进行处理, 并选择不同的视图将处理结果显示给用户, 极大地提高了系统的灵活性。

(4) 一个模型可以拥有多个视图或者说多个视图可以共享一个模型。多个视图能够提供多种数据显示方式, 以满足不同用户的需求。变化传播机制可以确保所有相关的视图和其模型达到同步, 当然这一切都在于控制器的协调。

(5) 模型的可移植性和伸缩性。模型的相对独立性使得它很容易被移植到新的平台工作, 很容易被改变业务规则而不影响 (或者说这种影响甚小) 视图和控制器。

(6) 潜在的框架结构。可以基于此模型建立应用程序框架, 而不仅是用在界面的设计中。

2 Struts架构

Struts架构是建立在标准的Servlet框架之上的, 它提供了一种简单的编程模式, 体现了所有开源架构的特点。它采用的主要技术是Servlet, JSP和custom tag library (用户定义标签库) 。Struts框架的基本构成如图2所示。

作为一个MVC的框架, Struts对Model、View和Controlle都提供了对应的实现组件, 对应上面的UML图, 分别进行介绍。

2.1 模型 (Model)

Struts的Model层由Action和Action Form对象组成, Action对象封装着具体的处理逻辑, 由它来调用业务逻辑模块, 并且把响应提交给View组件。Act ion Form对象用来描述客户端的表单数据, 利用它和Struts定义的标签实现对表单数据的良好封装的支持。Action对象和Action Form对象可以直接交互, 不需要Request和Response对象的支持。Struts一般用一组Java Bean来表示系统内部状态, 也可以用Entity EJB和Session EJB来实现更复杂的应用。

2.2 控制器 (Controller)

在Struts架构中, 主要的控制组件是Action Servlet和Action Mapping。由Act-ion Servlet接受所有的http请求, 并把请求填充进Form Bean。Form Bean对数据进行有效性检测, 检测通过后将参数传给模型部分的Action类。每一个请求到Action处理器的映射都由Action Mapping对象实现, 并且可以在Struts-confing.xml文件中配置。要修改映射, 只要修改这个配置文件。

2.3 视图 (View)

这部分由JSP技术实现。通过Struts提供的标记库html、Bean、Logic以及Temp late来创建JSP表单, 并实现了和Mode部分的Action Form的映射, 完成对用户数据的分装。这有利于显示与逻辑的分开。而且把用户名和密码保存到Action Form Bean中, 这样就不需和Request、Response对象进行数据交互。从而避免直接从不是很安全的HTTP连接发送这些重要信息。

Struts框架的处理流程清楚地体现了MVC系统的特点, 简单的Struts组件结构如图3所示。Struts Controller Action Servlet处理客户请求, 利用配置的Action Mapping对象把请求映射到Action处理器对象进行处理。Action处理对象访问Action Form中的数据, 处理和响应客户请求, 它还调用后台的Bean组件, 这些组件封装了具体的业务逻辑。Action处理器对象根据处理结果通知Controller, Controller进行下一步的处理。

Struts的核心是Controller, 即Action Servlet, 而Action Servlet的核心就是Struts2config。xml, Struts2config。xml集中了所有页面的导航定义。根据配置文件指定, 才使得Servlet Action、Action Mapping、Action、Action Form这几个不同层次的组件相互交互并协调工作。

Struts由一组相互协作的类、Serlvet以及JSP、Tag Lib组成。基于Struts构架的Web应用程序基本上符合MVC2的设计标准, 可以说是MVC设计模式的一种变化类型。根据上面对framework的描述, 我们很容易理解为什么说Struts是一个Web framwork, 而不仅仅是一些标记库的组合。但Struts也包含了丰富的标记库和独立于该框架工作的实用程序类。

3 结束语

Struts由一组相互协作的类和标记库构成, 它们构成一个可重用的MVC实现。相反, 在未使用Struts框架开发的Web应用中, 系统的业务数据处理功能通常与显示功能交织在一起, 这使得代码的可维护性很差, 并且不利于程序的调试和测试。

摘要:在互联网时代, 基于Web开发应用系统是一个必然选择, 它为用户提供高效、方便的使用环境。要开发结构良好、维护方便的Web应用系统, 首先应当选择合适的设计框架。Struts是目前流行的基于J2EE的架构方案, 是一个基于模型—视图—控制器MVC模式的开源架构, 非常适合于Web应用系统的开发。

关键词:MVC,Struts,开源架构,业务逻辑,J2EE

参考文献

[1]陈川.基于MVC设计模式构筑JSP/Servlet+EJB的Web应用[J].计算机工程, 2001 (11) .

[2]PETERSON, TOMMY.AJAX:MVC Redux[J].Computer World, 2005 (7) .

[3]叶晓彤.基于Struts与JDO的J2EE企业应用系统架构[J].微机发展, 2005 (7) .

[4]徐宪武, 刘永泰.基于MVC模式的WEB应用经典框架-STRUTS[J].科技情报开发与经济, 2004 (7) .

[5]E ALTHAMMER, W PREE.Design and implementation of an MVC-based architecture for E-commerce applications[J].InternationalJournal of Computers, 2001 (2) .

MVC设计模式研究 篇7

分布式企业应用软件结构复杂、涉及多种技术,对设计开发人员提出了很高的要求。在此情况下,运用设计模式——可复用的设计方案进行软件的设计开发十分必要。MVC模式已被证明是一种成功的软件设计模式,主要讨论了一种实现MVC模式的应用框架――Struts,并通过一个实例展示了Struts框架实现MVC模式的方法。

2 MVC设计模式

MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成3个层-模型层、视图层、控制层。其结构如图1所示。

视图(View)代表用户交互界面,对于Web应用来说,可为HTML界面、JSP页面或其他。MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求。

模型(Model)是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其他层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心。

控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求[1]。

3 Struts的体系结构

Struts是MVC设计模式的一种实现,将Servlet和JSP标记用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展,Struts的工作原理如图2所示[2]。

控制:Struts-config.xml与Controller相关联,在Struts中Controller角色就是Action Servlet。它提供了处理所有发送到Struts的HTTP请求的入口点并截取和分发这些请求到相应的动作类。所有的控制逻辑利用Struts-config.xml文件来配置。

视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP标签库,这有利于分开表现逻辑和程序逻辑[3]。

模型:模型以一个或多个Java bean的形式存在。Action通常称之为Action Bean,获取从Action Sevlet传来的Form Bean,取出Form Bean中的相关信息,并做出相关的处理。

核心:Struts的核心是Action Sevlet,Action Sevlet的核心是Struts-config.xml。

4 基于MVC模式的Struts框架应用

通过一个具体实例说明如何应用Struts框架构建应用程序。该实例是一个预算管理系统中的预算资料模块,包括资料录入、资料查询、资料修改和资料删除4个功能,用于完成预算资料的录入、查询、修改及删除。

4.1 构建视图

在Struts下使用JSP开发视图,在页面中没有包含任何的脚本程序,只是单纯地完成数据传送以及接收和显示返回的数据。对数据的处理以及页面的跳转都在业务层中来实现。这样做实现了业务逻辑和表示逻辑的完全分离,提高了应用程序的性能和可扩展性,并有利于程序的复用。

Struts框架提供了一组可扩展的自定义标记库,主要包括:Bean标记、Logic标记、HTML标记和模板标记。通过使用标记,可以简化创建用户界面的过程,并且更好地实现数据的封装。通过使用这些自定义标记创建的JSP表单,可以实现和业务层中的Action Form的映射,非常好地和系统的业务逻辑部分交互。

下面给出资料录入页面的部分实现代码

程序中首先引入了HTML、Bean和Logic标记库,然后用action指出调用的Action组件的绝对路径,标记封装了表单数据,在业务层中用相应的ActionForm组件可以将输入的数据全部得到。

可以看出在视图中没有进行任何的业务逻辑的处理,其主要作用是给出客户端显示的信息和处理结果,以及请求的转发,它是和用户交互的接口。

4.2 构建模型

模型采用Java Bean和EJB组件,设计和实现系统的业务逻辑。根据不同的请求从Action派生具体Action处理对象,完成“做什么”的任务来调用由Bean构成的业务组件,创建由Action Form的派生类实现对客户端表单数据的封装。

下面以Budget Info Add Form这个Action Form Bean进行说明:

这里表示Budget Info Add Form继承于Action Form,在这个Bean中定义了视图中所要显示数据信息的参数,包括infoType,资料分类;title,资料标题;content,资料内容;info File,资料文件。同时在Budget Info Add Form中提供了设定和访问这些参数的方法:

4.3 构建控制器

在Struts应用框架中,中心控制器(Action Servlet)是由Struts框架本身所提供,开发人员一般无须对该Action Servlet进行再次开发;负责具体业务处理的Action类则是开发者开发实现的重点,在这些Action对象中会进行所有的业务操作,处理完毕,由Struts的Action Servlet转向到JSP页面,将处理结果返回给客户端。

在预算资料模块中,实现了4个Action:Budget Info Add Action,用于资料录入;Budget Info Content Action,用于资料查询;Budget Info Update Action,用于资料修改;Budget Info Del Action,用于资料删除。

4.4 建立配置文件

truts框架中有两个配置文件web.xml和struts-config.xml,用于配置Struts系统中的各个模块之间的交互。通过对这两个配置文件的配置,把Struts框架中MVC的各个部分联系起来,实现了一个真正的MVC系统。

5 结语

Struts是一种基于MVC设计模式的企业级Web应用开发框架,它的设计目的是从整体上减轻构造企业Web应用的负担。其自带的标记库能大大提高开发效率,同时提高了系统的可维护性和可扩充性。在总结Struts框架技术及其工作原理的基础上给出了一个应用实例,为今后更好地应用Struts框架开发Web应用程序提供了参考。

摘要:Struts框架具有组件的模块化、灵活性和重用性的优点,同时简化了基于MVC的Web应用程序的开发。阐述了Struts框架实现MVC模式的原理与方法,并给出了具体的应用实例。

关键词:MVC,STRUTS,JSP,预算管理系统

参考文献

[1]冯倩.基于Struts架构的旅行社计算机管理系统的开发研究[D].昆明理工大学,2006.

[2]张桂元,贾燕枫.Struts开发入门与项目实践[M].北京:人民邮电出版社,2005:152-153.

MVC设计模式研究 篇8

MVC是一种经典的程序设计概念,此模式将应用程序分成3个部分,分别是模型层(Model)、视图层(View)、控制层(Controller),其关系如图1所示:

1.1 模型层(Model)

模型层是应用程序的核心部分,主要由Java Bean组件来充当,可以是一个实体对象或一种业务逻辑。负责表达和访问数据,执行商业逻辑和操作,维护应用程序状态。在MVC模型中,它控制视图的表现结果。它采用面向对象的方法, 将问题领域中的对象抽象为应用程序对象。在这些抽象的对象中封装了对象的属性和这些对象所隐含的逻辑。模型可以接收来自视图的查询并做出响应,在模型的数据变化的时候,它将通知视图并提供后者访问自身状态的能力,视图将根据模型的变化来更新自己,同时控制器也可以访问模型的功能函数以完成相关的任务[1]。

1.2 视图层(View)

视图层提供应用程序与用户之间的交互界面。它从模型中得到数据并按要求显示出来,当模型中的数据发生变化时,视图从模型中得到通知自动更新视图;它也可以将用户输入的信息传送给控制器。在MVC模式中,这一层并不包含任何的业务逻辑,仅仅提供一种与用户交互的视图,在Web应用中有JSP、HTML界面充当。

1.3 控制层(Controller)

控制层用于对程序中的请求进行控制,起到一种宏观调控的作用,它可以通知容器选择什么样的视图、什么样的模型组件,在Web应用中由Servlet充当。

2 基于JSP的MVC设计模式

JSP(Java Server Pages)是由Sun公司倡导、许多公司参与建立的动态网页技术标准。它在HTML代码中嵌入Java代码片段(Scriptlet)和JSP标签,构成JSP网页。在接收到用户请求时,服务器会处理Java代码片段,然后生成处理结果的HTML页面返回给客户端,客户端的浏览器将呈现最终的页面效果。JSP页面负责数据显示、业务逻辑、页面控制等所有的工作,这给Web设计带来了强耦合,维护困难,开发人员分工不明确,程序处理逻辑发杂等一系列问题。为了解决这种问题,Sun公司制定了两种设计模式,模式一(Model1)和模式二(Model2)。Model1设计模式中,主要分两层,视图层和模型层。图2称之为模式一,虽然模式一实现了页面显示和业务逻辑的分离,但是在JSP页面中不仅需要编写显示,而且很多业务逻辑、流程控制和调用Java Bean的程序代码都出现在JSP页面中,当业务逻辑非常复杂时,大量的内嵌代码会使得整个页面程序变得异常复杂,使整个项目再维护的时候显得非常困难。采用Model1模式开发小型项目非常的方便,每组页面实现一个功能,当需要对某个功能进行修改时,需要修改很多地方,这样不利用功能的扩展和更新。

为了解决模式一种的紧耦合、复用性差、维护成本高的缺点,此时提出了Model2模式,如图3所示。该图表示的是一种把JSP与Servlets联合使用来实现动态内容服务的方法,即MVC模式。它可以很好地表达用户与系统的交互模式以及整个系统的程序架构模式。在该模式中,JSP充当视图层,主要负责视图的显示servlet充当控制层,控制分发用户的请求,根据用户的请求,调用相应的业务Bean,并将结果返回给适当的页面进行显示,Java Bean充当模型层,主要负责业务逻辑的实现,因此在构建Web应用,采用Model2模式具有显著的优势。

3 改进的MVC模式

采用Model2模式开发项目时,在业务层中主要封装了实体Bean和业务Bean,实体Bean主要用来封装实体对象,而业务Bean主要是一些关于对数据库的操作。此时在业务Bean就会涉及到数据库的连接和关闭,当在使用的过程中,如果频繁的打开和关闭数据库是非常耗时和浪费系统资源的,此时我们可以在业务层中加入一个数据库连接池,避免了数据库频繁的打开和关闭,提高了系统性能。当一个项目的业务比较复杂时,此时在Servlet中不仅有一些流程控制代码和业务代码,还有大量的数据处理代码,此时应该尽量减少在Servlet中的代码,只让Servlet做接收数据,转发数据功能,其它的事情放到外面去做,为了实现该功能,将在Servlet中对数据的一些处理操作代码单独封装到Service层中,Servlet接收到用户请求后,根据请求的目标,直接跳转到对应的Ser-vice中,在Service中负责对数据的处理和调用相应的业务层。其实现流程图如图4所示。

4 基于MVC模式登陆模块的实现

现在结合登陆模块的开发,介绍MVC的在Java Web中的具体实现步骤,从而加深对MVC设计的理解。用户填写登陆信息的界面和通过验证并返回信息的界面都为视图(View);当用户填写的信息通过Form表单提交后,此时需要根据action跳转到指定的控制器(Controller),而此控制器主要是通过Servlet完成,Servlet需要在web.xml中进行配置;通过控制器调用模型层(Model),连接数据库,验证输入信息是否在数据库中存在。在此整个模块所涉及到的程序清单如下表一各模块的表述:

在数据库连接时,通常采用技术,此技术作为一种数据库访问技术,具有简单易用的优点。但使用这种模式进行应用程序开发,存在很多问题:首先,每一次Web请求都要建立一次数据库连接,而建立连接是一个费时并且耗费内存资源;其次,对于每一次数据库连接,使用完后都得断开,否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。因此,这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。此时我们采用数据库连接池进行数据库的打开和关闭。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”,预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。在配置数据库连接池时需要修改Tomcat中的server.xml和项目中WEB-INF下的web.xml文件,再在程序中获得已有连接。

在整个MVC设计中Model是其核心部分,对于用户登陆模块,需要将输入的数据或从数据库中读取的数据封装到User类,从而各个模块都能方便的使用该Java Bean对象了,而Java Bean在封装的时候只需要书写它的get Xxx和set Xxx方法就可以了,作为Model最重要的就是如何设计一个好的DAO模式来对数据库进行操作,为了以后能够更好的进行功能的扩充,在DAO组件中先定义一个User DAO接口,然后定义接口的User DAOImpl实现类,在接口的实现类中定义的各种方法来实现对数据的操作,但不负责数据库的连接和关闭操作,而要完成这一操作主要是通过代理来完成,并调用真实主题,通过一个DAOFactory工厂实现DAO的实例。部分代码如下:

将此过程用MVC设计流程显示如图5:

5 结束语

采用MVC模式清晰将表达和内容进行了分离,开发人员负责Servlet和Java Bean,网页设计人员负责JSP页面的开发,分工明确,非常适合大项目的开发,同时采用该模式开发设计清晰,独立性强,易扩充,易维护等优点,使各类人员都可以更加专注完成自己的工作,在Web开发中有显著的优势。

摘要:MVC(Model-View-Controller)设计模式是现代软件设计中一种非常重要的设计模式,也是WEB系统中常用的一种经典模式,它实现了界面显示与业务逻辑的分离。为了提高基于WEB系统中代码的可重复性、可维护性、可移植性和系统性能的稳定性,从数据库访问技术、XML技术和DAO设计模式的角度,提出一种MVC改进模式,并阐述了基于此模式进行开发的技术和原理。

MVC设计模式研究 篇9

关键词:MVC;档案管理;MIS

中图分类号:TP311.52 文献标识码:A 文章编号:1674-7712 (2012) 12-0082-01

采油厂经过多年的发展形成了大量的纸质文档、数据,同时,加上近年信息化形成了海量的电子数据信息,除了包括勘探开发的静态数据、动态数据等结构化数据外,还包括综合研究数据、成果文档数据、图形成果数据等各种非结构化的成果数据。针对油田现有油井数据资料,即油井属性数据、油井生产数据、层位属性数据等资料的收集、分析和整理,为建立档案管理系统提供依据。油井档案的数字化是为采油厂技术人员和管理人员拓宽知识结构、提高技术素质的重要途径。

一、油田档案馆网站信息平台设计

油田档案馆网站信息平台主站点包括前导页面和主页面。前导页面采用Flash技术,体现油田档案馆作为现代企业的时代形象。主要包含油田档案馆的标志的动画。主页面包含:档案馆概况、法规与制度、归档与借阅、数字档案馆、年鉴大事记、企业文化、知识天地、信息共享、链接导航九大板块。

“档案馆概况”板块主要用于介绍档案馆的发展历史、现状等相关信息;“法规与制度板块”则提供国家机关相关法律法规、中石油股份公司安全管理制度、企业相关规章制度、保密制度以及档案馆制度等相关知识的介绍与解读,方便企业员工与客户了解。“归档与借阅”板块则介绍档案馆中文档资料归档、借阅登记管理办法制度。而“知识天地”板块包括“常识趣闻”、“文海拾零”、“史海泛舟”和“地质知识”等子板块。“信息共享”板块则包括“常用软件”、“文件阅览”、“公司会议”、“协同工作”与“史料经典”。“数字档案馆”则是油田分公司档案管理系统登录入口。

网站后台管理系统主要是用于网站管理员对网站前台的信息管理、访客信息的统计和管理。

二、油田档案管理子系统设计

整个管理系统为油田档案馆提供管理服务,各二级单位通过局域网连接internet根据不同的权限可以进行各类档案目录查询和访问后台管理部分。后台管理主要是给管理员对相关档案以及其他功能管理的平台。根据油田的特点及要求,油田档案管理系统开发的采用当前流行的MVC-Struct框架。

档案管理子系统前台查询提供目录查询,目录查询系统根据后台档案业务管理可以自动生成最新目录,使用户总是能实时搜索有效目录;包括智能查询、分类查询及综合查询三种查询方式,可以按目录号、类目、案卷号、文件序号、责任者、题名、目录关键字等对目录进行快速查询,在此模块中根据逐级授权,可以将查询结果打印输出;可以查看查询结果中相关的文件分发情况、借阅情况。用户也可以远程查询,只需被分配权限登录系统即可。

后台管理主要是给管理员对相关档案以及其他功能管理的平台。后台管理严格受权限控制,是通过登录用户名和密码才能够进入,方便不同级别档案管理员对档案信息的管理。主要可分为以下管理模块:系统管理,数据库迁移管理,和报表管理。

三、用户界面的实现

档案信息管理系统的主要目的旨在客户提供详尽的房产信息或服务介绍,方便客户的信息索取,提供服务的预定或咨询接待,提供售后服务或动态服务状态查询,更高层次地满足客户需求;同时,为企业员工提供一个方便各类文件、通知管理的操作平台,减少了油田档案馆和消费者中间的流通环节,电子数据交换则减少了中间管理和人员的开销。

从功能上将整个系统分为:门户网站子系统和档案管理子系统部分,门户网站子系统部分主要提供相关信息的发布,而档案管理子系统则主要负责各类文档的管理,并从网站部分“数字档案馆”版块切入,分为前台查询和后台管理两部分,前台查询主要方便普通用户在日常工作中对档案目录信息需求的查询。

四、档案案卷数据库

本系统主要用管理各类文件,包括有科学技术研究级文件、基建文件级、仪器设备级、会计类级、职工档案级、油气勘探开发级、单井井史级、其他档案类(包括教学、医疗卫生、实物、新闻报道等),每类文件的描述都是不一样的,为了有效的管理各类文件,总结出对各类档案管理的共性特性,构建一个档案案卷级公共基础表,然后在此基础上结合每一类文件所需要的特性描述或者关键词、有针对性地反映每类文件的基本属性、价值取向等信息,派生或继承出各类案卷级表,如科技档案卷级表、基建档案卷级别表、仪器档案卷级别表、会计档案卷级别表、职工档案卷级别表、油气勘探开发档案卷级别表、单井井史档案卷级别表、教学档案卷级别表、医疗卫生档案卷级别表、新闻报道档案卷级别表、实物档案卷级别表等等,如图所示(由于篇幅限制的原因,派生的新类只画出科技档案卷级表、基建档案卷级别表)。进而,在各种派生类表的基础上,继承对应的各位文件或档案的数据表,如科学技术研究档案文件级表、基建档案文件级表、仪器档案文件级表、会计档案文件级表、职工档案文件级表、油气勘探开发档案文件级表、单井井史档案文件级表、教学档案文件级表、医疗卫生档案文件级表、新闻报道档案文件级表、实物档案文件级表等等。

总体上讲,本档案信息管理系统要求能实现数据的保密性、完整性和有效性,免受恶意攻击或盗用,确保运作能够满足增长的需求,系统组件可多次重复使用以及开放性设计节省投资成本,实现提高各类档案的日常管理工作的自动化水平,为档案部门提供密集、系统、准确的档案信息服务。

参考文献:

[1]杨璐荧.基于MVC架构的油田档案管理系统[D].电子科技大学,2007

[2]单宝迪.采油厂档案管理系统的设计与实现[D].电子科技大学,2008

[3]刘家真.档案管理软件开发问题的分析[J].北京理工大学学报,2004,3:15-19

[4]梁合功.胜利油田异构数据迁移系统设计与实现[D].上海交通大学,2010

MVC设计模式研究 篇10

大学教育已经普及, 大学教师的队伍也不断壮大, 随之而来的是教师论文数量的不断增多。如果通过手工作业来进行论文库的管理工作, 不仅工作量大, 而且容易出错, 更不方便大家查阅, 因此我们需要为教师开发一套论文管理系统, 以完善学校网络信息管理系统, 充分发挥校园网络的作用。

2 MVC简介

MVC架构是随着Smalltalk Language语言的发展提出的。MVC英文即Model-View-Controller (模型-视图-控制器) , 即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离。

本质上来说, MVC设计模式将应用分为以下三个部分:

模型:应用的核心。模型存储了一个应用所描述的所有状态和数据。当某个部分的状态或数据发生了重要的变化时, 模型将更新所有与其相关的视图。

控制器:呈现给用户用来进行操作的用户接口。控制器根据用户的操作判断所要执行的业务逻辑, 关联模型和视图。

视图:用来向用户显示数据信息的用户接口。

3 Struts框架结构

Struts是MVC的一种实现, 它将Servlet和JSP标记 (属于J2EE规范) 用作实现的一部分。Struts继承了MVC的各项特性, 并根据J2EE的特点, 做了相应的变化与扩展。

模型通常由Java Bean或EJB组件实现, 负责处理业务逻辑;

视图包括一组JSP文件, 这些文件主要由JSP标签或客户化标签构成, 它简化了JSP页面的编码工作;

在Struts框架中控制器主要包括Action Servlet类和Action类, Action Servlet是Struts的核心部件, 它接受用户的Http请求, 根据配置信息将请求转发给适当的Action对象, Action类负责调用模型的方法, 并帮助控制应用程序的流程;Struts包括Web.xml和Struts-config.xm】两个配置文件, 其中Web.xml是Web应用的发布描述文件, Struts--config.xml是与Struts相关的特殊信息配置的描述文件。

4 系统的设计与实现

4.1 系统功能概述

下面以开发Struts框架下的教师论文管理系统为例来进一步说明 Struts框架。

教师论文管理系统的主要作用是为不同用户管理论文提供方便, 方便用户的查询、汇总及分析。教师论文管理系统的角色可以划分为两类:

系统管理员:负责管理学院、系所、教师用户和角色权限

教师用户:发布、修改、删除、查看论文

这两类用户分别拥有自己的操作功能。根据操作划分模块, 每一个操作模块都要实现自身的功能, 并且在整个的操作流程中, 负责承上启下。

4.2 MVC模式详细设计

4.2.1 Model设计

模型组件负责完成访问和操纵数据库, 由JavaBean实现。在本系统中它包括系统库、论文库、专著库和学术库。模型层 (数据库服务器:Oracle9i ) 的主要功能是数据库链接、生成数据集、数据库更新。

Struts框架使用模型组件的一大优点是如果模型组件的实现发生了变化 , Action类不 需要做任何变动。

4.2.2 View设计

教师论文管理信息系统视图包括教师管理论文、专著等页面和管理员管理系统、人员等页面。

数据显示:根据要求授权给控制器「C向模型[M]请求数据集, 然后根据数据集显示出界面。操作结果显示:根据控制返回的数据决定显示的页面。

例如当管理员管理系统界面接收到查询某位教师论文的命令后, 把请求转到显示所有数据页面, 显示满足查询条件的记录。

4.2.3 Controller设计

本系统的控制层是通过校园网服务器 (Internet/Intranet) 实现对数据库更新的数据校验, 它包括:系统管理、论文管理、科技专著管理、学术报告管理等。

控制器负责整个应用程序的流程控制, 根据用户的请求类型以决定应用程序的操作, 用于解释用户的鼠标和键盘输入, 以通知模型或视图进行相应的更改。例如:控制器在当一个aspx页面初始化时将调用Pag_Init事件, 当加载aspx页面时将调用Page_Load事件, 当aspx页面从内存中被卸载时将调用Page_Unload事件。如果某个控件触发页面以使其被重新加载, 则将调用Control Event事件。可以直接将模型角色实现在控制器调用的函数中, 这种方法虽然实现了界面和代码 (视图和控制器、模型) 的分离, 但没能实现控制器和模型的分离。根据MVC模式的思想, 可以直接将与aspx文件相关联的后置代码拆分为模型和控制器, 用专门的一个类来处理数据, 后置代码作为控制器仅仅负责转化用户的输入。

Private Sub Page_ Load (ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

‘在此处放置初始化页的用户代码

If Not IsPostBack Then

‘判断用户权限 ()

Dim Modul name As String

Modul name=”教师管理”

If Not HasRight (Session.SessionID, Modul_ name) Then

Response.Redirect ("/hsgl/error.aspx")

End If

Try

Binddeviceinfor ()

Initdeviceinfor ()

Catch ex As Exception

1blStatus.Text =”连接SQL数据库出现错误!" + ex.Message+""

End Try

End If

End Sub

将控制器和模型分离后, 对任意模块的更改都不会引起其他模块的变更。当处理比较复杂的WebForm应用时, 可以采用Page Controller和Front Controlle模式。

5 结束语

Struts框架是一种非常优秀的基于 MVC2的应用框架 , 广泛地运用于各种软件开发平台之中, 本文对在教室论文管理信息系统中成功地运用 Struts框架作了简要概述 。Struts框架为程序员的程序设计提供了极大的方便, 缩短了系统的开发周期。它是一个具有良好的可扩展性的框架, 还能实现代码的重用, 可使Web应用开发效率大大提高。

参考文献

[1]Erich Gamma, Richard Helm, Ralph Johnson等著, 李英军等译.设计模式:可复用面向对象软件的基础[M].北京:机械工业出版社, 2000, 9.

[2]杨开英, 刘榭.Struts框架研究与应用[J].微计算机应用, 2005, 26 (2) :158.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:iwenmi@163.com

上一篇:维修农机具论文下一篇:一一对应

付费复制
期刊天下网10年专业运营,值得您的信赖

限时特价:7.98元/篇

原价:20元
微信支付
已付款请点这里联系客服
欢迎使用微信支付
扫一扫微信支付
微信支付:
支付成功
已获得文章复制权限
确定
常见问题