随笔-86  评论-767  文章-3  trackbacks-3

摘要 Web 系统设计中,随着业务逻辑的越来越复杂,如何提高 Web 系统的执行效率、可复用性、可扩展性、可维护性,降低构建和维护成本,一直是业界普遍关注的焦点。最近几年来,基于可重用的 FrameWork 技术逐渐成为业界研究和应用的新趋势。其中, Craig McClanahan 2000 5 月份提出的 Jakarta Struts FrameWork ,将目前最流行的两种 Server 端技术 --JSP Servlet 集合在一起,实现了 MVC 架构,提供了一种快速高效的构建 Web 应用程序的方法。 Struts 自从诞生之日起,就获得了 Apache Jakarta 开源社区的普遍关注。本文作者所在的小组,在 LPMT 中,运用 Struts 技术,快速构建了一个结构清晰、可复用、可扩展的 Web 系统。本文从 MVC 架构设计、 WebForm 技术实现、代码复用等方面,对 Struts LPMT 中的应用作一个总结。

       本论文分四部分,共七章。

第一部分为第一章,介绍什么是系统开发框架以及应用系统开发框架对软件开发的意义。第二部分为第二章,介绍 Struts MVC 架构的相关技术要点。第三部分为第三章,介绍 LPMT 的构建背景和系统概况。第四部分为第四、五、六、七章,介绍 Struts LPMT 中的应用,包括 MVC 架构设计、 WebForm 技术实现、代码复用等。

 

关键词 MVC  架构   Struts  软件复用   WebForm


Abstract During web system design,as more and more complex the business becomes,people is always focusing on how to enhance the system’s efficiency,reusable ability,extensible ability and reduce the cost of system.In the past few years,one of the research and develop trends of the field is reuse-based framework technology.One of them is the Jakarta Struts,which was conceived by Craig McClanahan in May of 2000, combining two of the most popular server−side Java technologies—JSPs and servlets—into a server−side implementation of the Model−View−Controller design pattern.It has been under the watchful eye of the Apache Jakarta open source community since that time.in LPMT,our group have rapidly created a reusable extensible system with clear architecture using Struts technology.This thesis focus on MVC design pattern,WebForm,resueable code,to sum up the implements of Jakarta Struts in LPMT.

This thesis divides into four parts altogether.

First part includes chapter one.In this part,starting with what framework is and its significance to software development.

Second part is chapter two.In this part,the writer introduce the theory of the MVC design pattern and Struts framework.

Third part is chapter three.This part is about the background of the LPMT and the system’s introduction.

Fourth part includes chapter four,chapter five,chapter six and seven.It is about the implements of Struts technology in LPMT,including MVC architecture design,webform creating and reusable coding.

 

KeyWords MVC  Architecture  Struts  Reuse-Based Software  WebForm


目录

MVC 设计模式的 Struts 技术实现 ... 2

第一章 应用系统开发框架对软件开发的意义 ... 7

1.1 什么是系统开发框架... 7

1.2 框架、构件与设计模式... 7

1.3 应用系统开发框架对软件开发的意义... 8

第二章 MVC 设计模式及 Struts 技术 ... 9

2.1 MVC设计模式... 9

2.2 Struts结构和处理流程... 10

2.2.1 Controller10

2.2.2 Model11

2.2.3 View.. 11

2.3 利用Struts框架进行MVC开发的流程... 11

第三章 一个轻量级的 Project Management Tool(LPMT) . 13

3.1 LPMT的用户需求... 13

3.2 LPMT的需求实现... 13

第四章 LPMT 中的 MVC 多层架构实现 ... 15

4.1 系统架构... 15

4.1.1 Data Persistence. 15

4.1.2 Logic. 15

4.1.3 Model15

4.1.4 Controller15

4.1.5 View.. 16

4.2 MVC模式的实现逻辑... 16

4.3 分页显示IssueMVC模式实现... 16

第五章 LPMT 中的控制结构 ... 18

5.1 Action中的控制结构实现... 18

5.2 ActionForm中的控制逻辑实现... 18

5.3 View中的控制逻辑实现... 18

第六章 LPMT 中的 WebForm 术实现 ... 20

6.1 Jakarta Struts 标签库... 20

6.2 WebFormJakarta Struts标签技术实现... 20

6.3 与单纯的JSP代码的比较... 23

第七章 LPMT 中的代码复用技术 ... 25

7.1 Model复用... 25

7.2 View复用... 28

7.3 Controller复用... 28

7.4 其他面向对象的代码复用... 28

7.4.1 封装性... 28

7.4.2 重载... 29

7.4.3 继承... 29

结论 ... 29

致谢语 ... 29

参考文献 ... 30

附录 ... 30

(1)    Struts-config.xml30

(2)    IssueAction.java. 31

(3)    IssueBean.java. 36

(4)    IssueDetail.jsp. 46


引言

在目前国内的面向中小企业的 Web 应用程序设计中,以单纯的 ASP/JSP/Servlet 代码构建的基于服务器端运行的系统占大多数。但上述系统有一个共同的缺陷,就是当业务逻辑越来越复杂的时候,系统构建所带来的复杂度和所耗费的成本将进一步提升,由于结构的不清晰所带来的系统可读性也进一步降低,后期的维护和扩展难度进一步增加。鉴于此,在 J2EE 领域,业界通常采用在 Server 集成一些可复用的组件比如 EJB 等以及 FrameWork 技术来使得系统结构清晰化,以及实现软件的可复用、可扩展和高效率。在这里,我们采用 Jakarta Struts 技术,通过和 Logical 层、 DataPersistence 的配合,快速构建一个可复用、可扩展的、结构清晰的 Web 应用程序 --LPMT

事实证明,作为一个日渐成熟的优秀的 FrameWork 技术, Struts 在构建的基于 MVC 设计模式的 Web 系统方面有得天独厚的优势。本文谨从 MVC 架构设计、控制逻辑实现、 WebForm 技术实现、代码复用等方面对 Struts LPMT 中的应用作一个技术总结。


第一章 应用系统开发框架对软件开发的意义

软件构件化是 21 世纪软件工业发展的大势趋。工业化的软件复用已经从通用类库进化到了面向领域的应用框架。 Gartner Group 认为: 2003 年,至少 70% 的新应用将主要建立在如软件构件和应用框架这类 构造块 之上;应用开发的未来就在于提供一开放体系结构,以方便构件的选择、组装和集成 。框架的重用已成为软件生产中最有效的重用方式之一。

1.1 什么是系统开发框架

框架是整个或部分系统的可重用设计部分,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。框架规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文 (Context) 关系。框架是构件技术、软件体系结构研究和应用软件开发三者发展结合的产物。在很多情况下,框架通常以构件库的形式出现,但构件库只是框架的一个重要部分。框架的关键还在于框架内对象间的交互模式和控制流模式。

框架是实现了某应用领域通用完备功能(除去特殊应用的部分)的底层服务。使用这种框架的编程人员可以在一个通用功能已经实现的基础上开始具体的系统开发。框架提供了所有应用期望的默认行为的类集合。具体的应用通过重写子类 ( 该子类属于框架的默认行为 ) 或组装对象来支持应用专用的行为。  

应用框架强调的是软件的设计重用性和系统的可扩充性 , 以缩短大型应用软件系统的开发周期,提高开发质量。与传统的基于类库的面向对象重用技术比较,应用框架更注重于面向专业领域的软件重用。应用框架具有领域相关性,构件根据框架进行复合而生成可运行的系统。框架的粒度越大,其中包含的领域知识就更加完整。

1.2 框架、构件与设计模式

框架 (Framework) 、构件 (Component) 和设计模式 (Design pattern) 是一个成熟的系统平台中三个重要的部分,同时又是三个很容易混淆的概念。框架往往是为实现一个或多个设计模式而设计的可重用可扩展的设计,是软件系统开发的半成品,而构件是框架当中的可重用的工具包、类库或者 API

构件通常是代码重用,而设计模式是设计重用,框架则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块 ; 代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。

  框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示 ; 设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。

1.3 应用系统开发框架对软件开发的意义

框架的最大好处就是重用。面向对象系统获得的最大的复用方式就是框架,一个大的应用系统往往可能由多层互相协作的框架组成。  

由于框架能重用代码,因此从一已有构件库中建立应用变得非常容易,因为构件都采用框架统一定义的接口,从而使构件间的通信简单。  

框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解成更小的构件,而且能描述构件间的内部接口。这些标准接口使在已有的构件基础上通过组装建立各种各样的系统成为可能。只要符合接口定义,新的构件就能插入框架中,构件设计者就能重用构架的设计。  

框架还能重用分析。所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的构件,采用相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。  

目前的主流的系统开发框架大都提供了对数据持久性、事务、安全性、负载均衡、应用集成等问题的现成的解决方案,因此采用框架技术进行软件开发的主要优点包括:  

(1)     领域内的软件结构一致性好;

(2)     建立更加开放的系统;

(3)     重用代码大大增加,软件生产效率和质量也得到了提高;

(4)     软件设计人员要专注于对领域的了解,使需求分析更充分;

(5)     存储了经验,可以让那些经验丰富的人员去设计框架和领域构件,而不必限于低层编程;

(6)     允许采用快速原型技术;

(7)     有利于在一个项目内多人协同工作;

(8)     大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性、灵活性增强。


第二章 MVC设计模式及Struts技术

MVC(Model-View-Controller ,模型 - 视图 - 控制器 ) 设计模式是一种 基于请求-响应 (Request Response) 模式的应用框架。 Struts Apache Software Foundation 针对 MVC 设计模式开发的运行于 Server 端开源项目。 Struts 基于 Java Servlet/JavaServer Pages 技术,试图提供一种能够分离表现层,并且允许表现层独立于传输层和数据持久层的开源框架。自 Struts 发布之日起,它就受到开源社区的欢迎和广泛支持,也日益成为开源社区的一个备受瞩目的项目。

2.1 MVC设计模式

MVC 结构的框架的组成部分包括以下的内容:

l        模型 (Model)

    模型包含了应用程序的核心,它封装了应用程序的数据结构和事务逻辑,集中体现了应用程序的状态。有时候仅包含状态信息,因为它并不了解视图或控制器的信息。 JavaBean 很适合扮演这个角色,因为其能够处理绝大部分事务逻辑和数据结构,还能与数据库或文件系统进行交互,承担维护应用程序数据的责任。

l        视图 (View)

    视图实现模块的外观,它是应用程序的外在表现。它可以访问模型的数据,却不了解模型的情况,同时它也不了解控制器的情况。当模型发生改变时,视图会得到通知,它可以访问模型的数据,但不能改变这些数据。 Web 界面的开发人员不需要了解或关心数据库发生什么事情,或者事务逻辑进行了什么操作,他只需要掌握 HTML 的知识,而不需要深入了解 Java JSP 页面适合完成这个功能,因为它只包含很少的非 HTML 代码。

l        控制器 (Controller)

控制器控制整个框架中各个组件的协调工作,对用户的输入做出反应,并且将模型和视图联系在一起,它创建并设置模块。 Servlet 能够接受客户端的 HTTP 请求,并且根据需要创建所需的 JavaBeans ,然后将模块产生的变化通知给视图。

Model View Controller 这三类组件各自的责任以及它们之间的关系如图 1 所示。

1.jpg

实现 MVC 设计模式的系统通常会包括业务逻辑层、数据逻辑层。

业务逻辑层 (Business Logic) :这是 FrameWork 所要解决问题的关键;对框架本身来说,这里仅仅只是概念和几个提供服务的基础组件,真正的实现与客户的业务逻辑接轨,还需要开发人员在框架上再次扩展;

数据逻辑层 (Data Logic) :绝大部分应用系统都需要涉及到数据交互,这一层主要包括了数据逻辑和数据访问接口。在 MVC 结构的框架中, Model 组件用于描述应用程序中的数据以及操作该数据的方法,与用户界面无关; View 组件负责将数据展现给用户; Controller 组件将用户操作翻译为对 Model 组件的操作;接到 Controller 传来的操作之后, Model 再更新 View ,以及反映出数据的变化。

MVC 框架下的 Web 应用系统中,由于 HTTP 本身缺乏状态信息,客户端必须对服务器进行再查询才能发现由输入所造成的改变,在这种情况下,控制器不能将应用程序的改变通知视图。一般情况下,客户端不得不再次查询视图才能看到更新后的情况,基于这样的改进后的框架称为 MVC 的模型 2 体系。

2.2 Struts结构和处理流程

Struts 利用 Jsp 页面、自定义的标签库、 Java Servlet Action 等类来实现服务器端建模,并为 MVC 模式设计提供相应的组件。

2.jpg

2.2.1 Controller

控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送回到客户端。在 Struts Controller 功能由图中 ActionServlet ActionMapping 对象构成:核心是一个 Servlet 类型的对象 ActionServlet ,它用来接受客户端的请求。 ActionServlet 包括一组基于配置的 ActionMapping 对象,每个 ActionMapping 对象实现了一个请求到一个具体的 Model 部分中 Action 处理器对象之间的映射。

2.2.2 Model

MVC 系统中的 Model 部分从概念上可以分为两类 ―― 系统的内部状态和改变系统状态的动作。 Struts Model 部分提供了 Action ActionForm 对象:所有的 Action 处理器对象都是开发者从 Struts Action 类派生的子类。 Action 处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的 View 组件以产生响应。 Struts 提供的 ActionForm 组件对象,它可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和 Struts 提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持, Action 处理器对象可以直接对它进行读写,而不再需要和 request response 对象进行数据交互。通过 ActionForm 组件对象实现了对 View Model 之间交互的支持。

2.2.3 View

Struts 应用中的 View 部分是通过 JSP 技术实现的。 Struts 提供了自定义的标签库可以使用,通过这些自定义标签可以非常好地和系统的 Model 部分交互,通过使用这些自定义标签创建的 JSP 表单,可以实现和 Model 部分中的 ActionForm 的映射,完成对用户数据的封装,同时这些自定义标签还提供了像模板定制等多种显示功能。

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

2.3 利用Struts框架进行MVC开发的流程

在利用 Struts 框架进行 MVC 开发的时候,我们采用如下开发流程:

(1)     收集和定义应用需求。

(2)     基于数据采集和显示的原则定义和开发 " 屏幕显示 " 需求。

(3)     为每一个 " 屏幕显示 " 定义访问路径。

(4)     定义 ActionMappings 建立到应用业务逻辑之间的联系。

(5)     开发满足 " 屏幕显示 " 需求的所有支持对象。

(6)     基于每一个 " 屏幕显示 " 需求提供的数据属性来创建对应的 ActionForm 对象。

(7)     开发被 ActionMapping 调用的 Action 对象。

(8)     开发应用业务逻辑对象 (Bean EJB ,等等 )

(9)     对应 ActionMapping 设计的流程创建 JSP 页面。

(10) 建立合适的配置文件 struts-config.xml web.xml

(11) 开发 / 测试 / 部署。

posted on 2005-01-27 14:41 eamoi 阅读(4271) 评论(2)  编辑  收藏 所属分类: Java毕业设计文档

评论:
# re: MVC设计模式的Struts技术实现(1) 2005-02-03 10:06 | hoho
不错不错.
不过现在Struts可是1.2啦,楼主是不是要更新一下?  回复  更多评论
  
# re: MVC设计模式的Struts技术实现(1) 2005-11-23 23:14 | bluebird
好,顶一下  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: