使用XML,spring和struts框架的多框架分布式应用MVC设计模式
摘要 – 模块、视图、控制器(MVC)是一个分割用户交互逻辑与业务逻辑的基本设计模式。由于现在应用的大小变得非常大,MVC设计模式可以减弱不同应用联系的耦合性。这篇论文展示了一个基于J2EE平台的MVC web应用框架,使用XML扩展了它,以使其更灵活、可扩展以及容易维护。这是一个多联系的系统,系统包括了表现层、业务层、数据持久层以及数据库层。这样可以分离代码,提高应用过的可维护性和重用性。在这篇论文中,我们使用spring和struts框架实现了MVC。我们的研究表明,使用多个框架和MVC概念来设计应用相对于单个框架来说更加容易。
关键词 – MVC,Spring,XML
I. 介绍
现在,Web是一个非常复杂的问题。由于公司和组织有了更多的要求,编程的复杂性和网站的性能是一个重要的问题。不同类型的通信设备的复杂性正在增长,而企业需要应用运行在Web和许多通信设备上。于是,随着互联网上数据的负载的增长,我们不得不关系架构的问题。我们来简单讨论一下目前在MVC领域所做的研究。
I.1 没有MVC:在最初的网站设计阶段,页面使用html来设计。html仅仅是纯文本。这就是最初的可以在网络上工作的标记语言。现在,它依旧作为所有的基于互联网的编程语言的基础模块来工作。用户不得不与静态的页面交互。在页面上写入的信息必须手动的修改。随着时间的增长,人们需要一种语言能够与用户交互,页面可以根据每个用户的需求来改变。
I.2 MVC模块1:架构中的第一个主要的改变来自于MVC框架的Model的引入。
一个架构。这个框架完全依赖于以页面为中心的实现。在这个模型中,一个Java Server Page控制所有的表现、业务逻辑以及程序的流程。在这个模型中,业务逻辑的概念被引入了。业务逻辑以Java Beans和脚本控件的方式硬编码。所有的代码都写在JSP页面中。让我们假设一种需要基于我们接收的数据传输jsp应用流。
图1 在MVC-1框架中以页面为主的导航
I.3 MVC模块2:模块1的架构可以解决一些web和互联网编程中的问题,但是依旧有许多的问题并没有解决。它基于jsp页面的导航,所以我们可以考虑到在框架中加入视图来解决问题。在这个过程中就出现了模块2框架。这些问题是用Servlet和JSP一起来解决。Servlet处理最初的请求并且处理部分数据。他创建beans然后将结构转发到其中的一个jsp页面。Servlet决定由页面列表中的哪个页面来显示。
图2 MVC-2架构
在这个模块2架构中,JSP页面仅仅用来作为表现层。业务逻辑层从页面中移除。这使得页面更容易的展示并且更轻量,更容易在互联网中显示。
在这个模块中,所有的控制器和应用逻辑都被Servlet处理。Servlet使用Java编程语言来编写。所以,Servlet更容易处理编程的部分。在这种场景下,Servlet编程对整个应用变得非常有用,并且作为了整个应用的核心。
在模块2架构中,Servlet变成了一个所有常见任务的看门人,他提供常用的服务,比如:认证、授权、错误控制以及应用程序流。这个架构解决了大部分的问题,但是在实施这个框架时,仍旧有许多新的问题。
II. 使用多种框架来实现架构
Web和互联网是一直在发展的领域,并且对于应用的需求也在增长。一个简单的框架是不能处理应用的框架的。为了迎合当前应用的需求,设计一种实现这些框架的架构是很有必要的。
Struts框架被设计用来控制web应用前端。它为应用提供了许多的特性来与用户交互。它也包含MVC 2的设计特性。
Spring框架被设计用来处理多种任务。Spring既可以在桌面应用也可以在网络应用中工作。它遵循MVC 2的原则。
在一个应用中同时使用Struts和Spring框架来实现MVC的设计原则,我们就可以提高应用的性能。
Struts框架包括了三个主要的模块,以下简要描述之。
图3 Struts模块架构
首先是View块,它控制整个模块的表现部分。View块包括以下这些你编写的用于特定应用的JSP文件:一个JSP自定义标签库的集合、国际化的资源文件。
第二块为Controller。这是用来整个应用导航的部分。它包括XML配置文件,这些配置文件包括了导航路径的标签。
第三个块是Model。这个部分执行业务逻辑的工作,获取数据并且存储到数据库中。这块包括以下这些内容:Java Beans Enterprise、Java Beans Database。下图展示了struts框架中的组件的工作。
图1 Struts架构中的组件
Struts中的MVC
在Spring MVC框架中的三个主要的部分是:Servlet控制器(控制器部分)、Java Server Pages或者任何其他的表现技术(视图部分)、应用业务逻辑:以各种符合应用的格式(模块部分)。
Spring组件
在Spring中,我们依旧遵循MVC的原则。它对桌面和互联网应用在设计上进行了优化。Spring由三个核心的协作工作组件来组成:1.控制器:处理导航逻辑和与Service相关的的业务逻辑打交道。2.模块:控制器与视图之间的控制器用来填充视图的数据的格式。3.视图:生成请求的回复。从模块来拉取数据。
Spring MVC中的核心组件是以下这些:
1. DispatcherServlet:Spring的前端控制器。它是第一个与请求交互的控制器。我们可以说,它是Servlet的一个实现。它控制应用的整个流程。
2. Controller:用户创建的用来处理请求、封装导航逻辑的组件。它将业务逻辑委托给服务层类。
3. View:负责生成输出。根据结果和设备的不同,不同的视图可能被选择用来实现不同类型的输出。
4. ModelAndView:ModelAndView是spring框架的核心部分。它实现了应用的业务逻辑功能。它被控制器控制,保存和它关联的业务逻辑和视图。任何时候,它都带有视图的名称和填充的数据。
5. ViewResolver:输出依照接收到的ModelAndView的结果来显示,它被用来映射逻辑视图名称到一个实际的视图实现。这部分区分并且实现输出媒体内容与显示方式。
6. HandlerMapper:DispatcherServlet用来映射输入请求到特定控制器的决策接口。他识别请求,并且调用负责处理的控制器来提供服务。
接下来的图演示了模块时怎样工作的。在这个图中,DispatcherServlet是整个应用的重点。Struts部分完成它的工作并将请求发送给DispatcherServlet。Servlet决定负责处理的控制器,然后它将会调用控制器,控制器执行并返回ModelAndView。
图5:Spring框架中的顺序应用流
III. 建议的方法
这种方法是基于实现Spring和Struts两个框架的结合来开发应用。结合起来的应用的序列图在前面解释过了。它是应用的主要的驱动动力。这种方法假设基本的web应用知识是必不可少的。我们已经测试过了以上的概念,并且发现它非常成功。以上的架构的主要益处如下:
1. 它将提供一个非常明确的在执行、执行形式、控制器、处理者、JavaBeans模型以及视图之间的分割。
2. Spring的MVC是非常灵活的。不像Struts,它强迫你的Action和Form类具体的继承。我们使用两者共同的优势。
3. Spring MVC是完全基于接口的。Spring MVC框架的每个部分都是可配置的。
4. 提供了控制器,使得它很容易的处理许多来自用于界面的请求。
5. 我们可以使用JSP或者其他任何技术来显示视图、结果给使用不同设备的用户。
6. Spring控制器依照控制反转特性,它是可配置的。这使得它们可以很容易的测试和继承其他的spring管理的类。
7. Spring MVC web层相对于Struts web层来说,通常更容易测试。由于控制器的避免强制混合和明确依赖于DispatcherServlet。
8. Web层变成了一个更薄的在业务逻辑层之上的层。这鼓励更好的实现。
9. Struts框架被设计仅仅用来实现web接口。Spring框架为桌面和网络应用来设计。当两个框架结合起来,它将提供灵活的实现。
IV. 总结
多框架的架构工作起来比任何单独框架的架构更好。使用多框架为开发大的可扩展的应用带来的便利,我们可以在多请求的情况下提高大数据库应用的性能、处理能力以及最大的使用量。它也将为企业和程序员开启新的空间和新的商业机会。为了达到更好的性能,最好使用多框架。由于java代码的数量巨大,我不能够在这里提供它。
V 以后的研究
开放技术是最好的吸引学者和研究人员工作技术。J2EE是当前广阔的领域,他也是开发技术。架构随着技术的改变而完善。有许多的框架可以使用J2EE技术来用作。单一的框架永远不能够为应用的特性提供完整的解决方案。将来会有许多的工作需要用其它的框架来实现并且加强MVC架构。