开篇:润墨网以专业的文秘视角,为您筛选了一篇基于MVC设计模式的Struts框架研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:Struts是基于mvc设计模式的非常优秀的 Web应用框架,在Web应用开发中很好地将显示与逻辑分离,提高了代码的可重用性和灵活性。文中首先分析了struts框架及其对Model,View和Controller层的实现原理,并通过一个实例演示Struts框架实现MVC模式的方法。
关键词:MVC设计模型;Struts框架;Servlet;Jsp
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)15-30789-02
Research of Struts Frame Work Based on MVC Design Pattern
XIA wei
(Bengbu College of Modern Education Technology Center, Bengbu 233000, China)
Abstract:Struts is an excellent framework based on MVC design pattern for Web applications. It separates view and business logic and increases reusability and flexibility of the code for Web development. This paper briefly analyzes the principle of Struts framework technology and the implementing technology for model, view and controller of Struts based on MVC design pattern. And through a demonstration examples Struts Framework MVC model approach.
Key words:Struts framework; MVC design pattern; Servlet; Jsp
1 引言
当前,SUN公司提出的J2EE (Java 2 Enterprise Edition)已经逐渐成为企业Web应用开发的标准,这当中的Servlet/JSP技术也在众多网站得到了广泛的应用,然而,在仅使用JSP技术开发的Web应用中,业务逻辑处理、动态显示用的Java代码以及HTML混合在一起,使得阅读、调试和维护都困难重重。
为了使开发的Web应用具有良好的可扩展性和易于分工,我们必须要做到:
(1)将业务逻辑与用户界面分离;
(2)将动态页面显示逻辑与静态的HTML代码分离。
由Apache Jakarta项目组提供的Struts应用框架正是用来解决这些问题的,它基于MVC的设计思想,很好地实现了业务逻辑与用户界面的分离,同时,它提供了大量的自定义标记库,可以在JSP页面中分离动态显示逻辑与静态的HTML,使页面代码更清晰,可读性大大提高。
2 MVC设计模式简介
MVC是Model-View-Controller的简称,它是一种设计模式,来源于面向对象语言Smalltalk,最近几年被推荐为SUN公司J2EE平台的设计模式,它强制性地把应用程序的输入、处理和输出分开。MVC把应用程序分成3个核心模块:模型(Model)、视图(View)和控制器(Controller),它们分别担负不同的任务,以提高应用程序的可扩展性。图1显示了这几个模块各自的功能以及它们的相互关系。
图1 MVC组件类型的关系和功能
2.1 View
用户视图模块,这是用户界面部分。与Web应用程序一样,主管应用程序与人之间的接口。一方面它为用户提供了输入手段,并触发应用逻辑运行;另一方面,它又将逻辑运行的结果一某种形式显示给用户。
2.2 Controller
流程控制模块。该部分是用户界面与Model的接口。一方面它解释来自于View的输入,将其解释成为系统能够理解的对象,同时它也识别用户动作,并将其解释为特定方法的调用;另一方面,他处理来自于Model的事件和Model逻辑执行的结果,调用适当的View为用户提供反馈。
2.3 Model
事务逻辑模块,这是整个模型的核心。它表示的是解决方案空间真正的逻辑。它采用面向对象的方法,将问题领域中的对象抽象为应用程序对象。在这些抽象的对象中封装了对象的是属性和这些对象所隐含的逻辑。
2.4 MVC处理过程
首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。
3 Struts体系结构
Struts框架是在MVC模式基础上开发的新一代Web框架,在它的支持下可以快速开发基于Web的应用,而且提高了MVC的分层应用。它的标记库具有强大的页面开发功能。Struts框架的处理流程清楚地体现了MVC系统的特点,简单的Struts组件结构如图2所示。客户端通过Browser发出请求后,请求被Struts的控制器ActionServlet获得,ActionServlet在Struts-config.xml配置文件中查找有效映射,然后将相应的ActionMapping对象转发给Action处理器对象进行处理。Action处理器对象访问ActionForm中的数据,处理和响应客户的请求,它还调用后台的Bean组件,这些组件封装了具体的业务逻辑。Action处理器对象根据处理结果通知控制器,控制器进行下一步的处理。
图2 Struts框架的组件结构图
3.1 控制器(Controller)
控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送回到客户端。在Struts中Controller功能由图中ActionServlet和ActionMapping对象构成:核心是一个Servlet类型的对象ActionServlet,它用来接受客户端的请求。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action处理器对象之间的映射。
3.2 模型(Model)
MVC系统中的Model部分从概念上可以分为两类――系统的内部状态,和改变系统状态的动作。Struts为Model部分提供了Action和ActionForm对象:所有的Action处理器对象都是开发者从Struts的Action类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。Struts提供的ActionForm组件对象,它可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和Struts提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action处理器对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。通过ActionForm组件对象实现了对View和Model之间交互的支持。Struts通常建议使用一组JavaBean表示系统的内部状态,根据系统的复杂度也可以使用像Entity EJB 和 Session EJB等组件来实现系统状态。Struts建议在实现时把"做什么"(Action)和"如何做"(业务逻辑)分离,这样可以实现业务逻辑的重用。