收藏 分享(赏)

用Struts建立MVC应用的介绍.doc

上传人:精品资料 文档编号:7624149 上传时间:2019-05-22 格式:DOC 页数:8 大小:128.50KB
下载 相关 举报
用Struts建立MVC应用的介绍.doc_第1页
第1页 / 共8页
用Struts建立MVC应用的介绍.doc_第2页
第2页 / 共8页
用Struts建立MVC应用的介绍.doc_第3页
第3页 / 共8页
用Struts建立MVC应用的介绍.doc_第4页
第4页 / 共8页
用Struts建立MVC应用的介绍.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、用 Struts 建立 MVC 应用的介绍1Model 1 和 Model 2 简介我们在开发 Web 应用时经常提到的一个概念是 Model 1/Model2,那么到底它是什么意思呢?其实它是对采用 JSP 技术构成 Web 应用的不同模型的描述。下面对这个概念做一个简单的介绍。Model 1在使用 JAVA 技术建立 Web 应用的实例中,由于 JSP 技术的发展,很快这种便于掌握和可实现快速开发的技术就成了创建 Web 应用的主要技术。JSP 页面中可以非常容易地结合业务逻辑(jsp:useBean)、服务端处理过程(jsp:scriplet)和 HTML(),在 JSP 页面中同时实现

2、显示,业务逻辑和流程控制,从而可以快速地完成应用开发。现在很多的 Web 应用就是由一组 JSP 页面构成的。这种以 JSP 为中心的开发模型我们可以称之为 Model1。当然这种开发模式在进行快速和小规模的应用开发时,是有非常大的优势,但是从工程化的角度考虑,它也有一些不足之处:1. 应用的实现一般是基于过程的, 一组 JSP 页面实现一个业务流程,如果要进行改动,必须在多个地方进行修改。这样非常不利于应用扩展和更新。2. 由于应用不是建立在模块上的, 业务逻辑和表示逻辑混合在 JSP 页面中没有进行抽象和分离。所以非常不利于应用系统业务的重用和改动。考虑到这些问题在开发大型的 Web 应用

3、时必须采用不同的设计模式 这就是 Model2Model 2Model 2 表示的是基于 MVC 模式的框架。 MVC 是 ModelViewController 的简写。“Model“ 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件实现), “View“ 是应用的表示面(由 JSP 页面产生),“Controller“是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。从而弥补了Model1 的不足。Model 2 具有组件化的优点从而更易于实现对大规模系统的开发和管理,但是开发

4、MVC 系统比简单的 JSP 开发要复杂许多,它需要更多的时间学习和掌握。同时新东西的引入会带来新的问题(这让我想起来关于“自动计算“的一篇文章,中间提到为了降低系统的复杂度,却导致更高的复杂度)。1. 必须基于 MVC 组件的方式重新思考和设计应用结构。原来通过建立一个简单的 JSP 页面就能实现的应用现在变成了多个步骤的设计和实现过程。2. 所有的页面和组件必须在 MVC 框架中实现,所以必须进行附加地开发工作。MVC 本身就是一个非常复杂的系统,所以采用 MVC 实现 Web 应用时,最好选一个现成的 MVC 框架,在此之下进行开发,从而取得事半功倍的效果。现在有很多可供使用的 MVC

5、框架,由于 Struts有完整的文档并且相对来讲比较简单,所以用它开发 MVC 系统还是比较方便地。2Struts 的结构和处理流程简介Struts 是 Apache 组织的一个项目,像其他的 Apache 组织的项目一样,它也是开放源码项目。Struts 是一个比较好的 MVC 框架提供了对开发 MVC 系统的底层支持,它采用的主要技术是Servlet,JSP 和 customtag library。获取它的使用版本和具体信息可以查阅http:/jakarta.apache.org 网站。Struts 框架的基本构成由下图所示:图 1 struts uml 图作为一个 MVC 的框架,Str

6、uts 对 Model、View 和 Controller 都提供了对应的实现组件,对应上面的 UML 图,分别进行介绍,并且看看它们是如何结合在一起的。1. Controller:控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送回到客户端。在 Struts 中 Controller 功能由图中 ActionServlet 和 ActionMapping对象构成:核心是一个 Servlet 类型的对象 ActionServlet,它用来接受客户端的请求。ActionServlet 包括一组基于配置的 ActionMapping 对象,每个 ActionMapping

7、 对象实现了一个请求到一个具体的 Model 部分中 Action 处理器对象之间的映射。2. Model:MVC 系统中的 Model 部分从概念上可以分为两类系统的内部状态,和改变系统状态的动作。Struts 为 Model 部分提供了 Action 和 ActionForm 对象:所有的 Action 处理器对象都是开发者从 Struts 的 Action 类派生的子类。Action 处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的 View 组件以产生响应。Struts 提供的 ActionForm 组件对象,它可以通过定义属性描述客户端表单数据。开发者可以从它

8、派生子类对象,利用它和 Struts 提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action 处理器对象可以直接对它进行读写,而不再需要和 request、response对象进行数据交互。通过 ActionForm 组件对象实现了对 View 和 Model 之间交互的支持。Struts 通常建议使用一组 JavaBean 表示系统的内部状态,根据系统的复杂度也可以使用像EntityEJB 和 SessionEJB 等组件来实现系统状态。Struts 建议在实现时把“ 做什么“(Action)和“ 如何做“ (业务逻辑)分离。这样可以实现业务逻辑的重用。3. View

9、:Struts 应用中的 View 部分是通过 JSP 技术实现的。Struts 提供了自定义的标记库可以使用,通过这些自定义标记可以非常好地和系统的 Model 部分交互,通过使用这些自定义标记创建的 JSP 表单,可以实现和 Model 部分中的 ActionForm 的映射,完成对用户数据的封装,同时这些自定义标记还提供了像模板定制等多种显示功能。Struts 框架的处理流程清楚的体现了 MVC 系统的特点,简单的 Struts 组件结构如图 2 所示。Struts ControllerActionServlet 处理客户请求,利用配置的 ActionMapping 对象把请求映射到 A

10、ction 处理器对象进行处理。Action 处理对象访问 ActionForm 中的数据,处理和响应客户请求,它还调用后台的 Bean 组件,这些组件封装了具体的业务逻辑。Action 处理器对象根据处理结果通知Controller,Controller 进行下一步的处理。图 2 Struts 框架的组件结构图3利用 Struts 框架开发 MVC 系统要做的工作由于 Struts 已经为我们提供了一个非常好的 MVC 框架,我们利用 Struts 开发 MVC 系统时可以大大加快开发的速度。在开发时可以采用的一个开发流程如下(引自资料 3):1. 收集和定义应用需求。2. 基于数据采集和显

11、示的原则定义和开发“屏幕显示“需求 。3. 为每一个“屏幕显示“定义访问路径。4. 定义 ActionMappings 建立到应用业务逻辑之间的联系。5. 开发满足“屏幕显示“需求的所有支持对象。6. 基于每一个“屏幕显示“需求提供的数据属性来创建对应的 ActionForm 对象7. 开发被 ActionMapping 调用的 Action 对象。8. 开发应用业务逻辑对象 (Bean,EJB,等等)。9. 对应 ActionMapping 设计的流程创建 JSP 页面。10. 建立合适的配置文件 struts-config.xml , web.xml。11. 开发/测试/部署具体在使用 S

12、truts 框架时,对应各个部分的开发工作主要包括:1. Model 部分:采用 JavaBean 和 EJB 组件,设计和实现系统的业务逻辑。根据不同的请求从 Action 派生具体 Action 处理对象。完成“做什么“ 的任务来调用由 Bean 构成的业务组件。创建由 ActionForm 的派生类实现对客户端表单数据的封装。2. Controller 部分:Struts 为我们提供了核心控制部分的实现。我们只需要配置ActionMapping 对象3. View 部分:为了使用 Model 中的 ActionForm 对象,我们必须用 Struts 提供的自定义标记创建 HTML 表单

13、。利用 Struts 提供的自定义标记库编写用户界面把应用逻辑和显示逻辑分离。Struts 框架通过这些自定义标记建立了 View 和 Model 之间的联系。Struts 的自定义标记还提供了很多定制页面的功能。4. 同时需要编辑两个配置文件:web.xml 和 struts-config.xml。通过它们配置 Struts 系统中的各个模块之间的交互。下面对这两个配置文件做一些介绍:web.xml 文件的配置:web 应用中的 web.xml 是第一个要配置的地方,它描述了系统的 Controller 对象。在web.xml 中增加如下标记actionorg.apache.struts.a

14、ction.ActionServletapplication说明:这个 servlet 对象就是 Struts 提供的 Controller,还可以为它指定初始化参数,比如对系统应用属性的支持。action*.do说明:实现客户请求的 url 信息和服务器端具体处理的映射关系。/WEB-INF/struts-bean.tld/WEB-INF/struts-bean.tld说明:添加对 Struts 提供的应用所使用的自定义标记库的引用。struts-config.xml 文件的配置:struts-config.xml 是用于建立 Controller 和 Model 之间的关系的。它描述了 C

15、ontroller 所使用的把请求对应到具体处理的法则,同时它还描述了客户提供的数据与 ActionForm 组件的对应映射关系。在 struts-config.xml 中增加如下标记说明: 标记描述一个具体的 ActionForm 子类对象,通过它和 JSP 页面中的自定标记的结合使用可以实现 ActionForm 和 View 之间的数据映射。说明:标记描述了请求和处理的一对一映射关系。input 和 path 属性唯一的标记了客户端的一个请求,name 属性描述封装客户端的数据的 ActionForm 子类对象。Type 属性描述处理这个请求的 Action 子类对象。通过对两个配置文件

16、的配置,把 Struts 框架中 MVC 的各个部分联系起来,实现一个真正的MVC 系统。4可供参考的例子编写一个好的例子演示是比较占篇幅的,可以从 http:/jakarta.apache.org/下载 Struts 最新的发表包,在这个包中有详细的用户帮助和 API 文档,还有非常好的演示程序可供参考。具体的安装步骤可以参考附带的文档。参考这些例子可以很快地理解如何利用 struts 框架开发 MVC 系统。参考资料:1. The Struts Users Guide http:/Jakarta.apache.org2. “Struts Tutorial“ 作者:Stephan Wiesner 主页 www.stephanwiesner.de3. Struts 系列文章 http:/ 设计模式Gamma 等四人

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报