`
tntxia
  • 浏览: 1514284 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts由入门到精通(第二章)-应用框架 mvc和model2

阅读更多

模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。

       1、模型(Model
  模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.
  2、视图(View

  视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
  3、控制器(controller)
 
 控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。
  MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性
  早期的程序中,如果不注意对数功能和显示的解耦合,常常会导致程序的复杂及难以维护。很多VB,DelphiRAD程序都有这种问题。甚至现在的C#,Java有时候也会出现把业务逻辑写在显示模块中的现象
  管MVC设计模式很早就提出,但在Web项目的开发中引入MVC却是步履维艰。主要原因:一是在早期的Web项目的开发中,程序语言和HTML的分离一直难以实现。CGI程序以字符串输出的形式动态地生成HTML内容。后来随着脚本语言的出现,前面的方式又被倒了过来,改成将脚本语言书写的程序嵌入在HTML内容中。这两种方式有一个相同的不足之处即它们总是无法将程序语言和HTML分离。二是脚本语言的功能相对较弱,缺乏支持MVC设计模式的一些必要的技术基础。

        mode1 1是一个以JSP文件为中心的模式,在这种模式中JSP页面不仅负责表现逻辑,也负责控制逻辑。专业书籍上称之为逻辑耦合在页面中,这种处理方式,对一些规模很小的项目如:一个简单的留言簿,也没什么太大的坏处,实际上,人们开始接触一些对自己来说是新的东西的时候,比如,用JSP访问数据库时,往往喜欢别人能提供一个包含这一切的单个JSP页面,因为这样在一个页面上他就可以把握全局,便于理解。但是,用Model 1模式开发大型时,程序流向由一些互相能够感知的页面决定,当页面很多时要清楚地把握其流向将是很复杂的事情,当您修改一页时可能会影响相关的很多页面,大有牵一发而动全身的感觉,使得程序的修改与维护变得异常困难;还有一个问题就是程序逻辑开发与页面设计纠缠在一起,既不便于分工合作也不利于代码的重用,这样的程序其健壮性和可伸缩性都不好。Grady Booch等人在UML用户指南一书中,强调建模的重要性时,打了一个制作狗窝、私人住宅、和大厦的形象比喻来说明人们处理不同规模的事物时应该采用的合理方法一样,人们对不同规模的应用程序也应该采用不同的模式

为了克服Model 1的缺陷,人们引入了Model 2

它引入了\"控制器\"这个概念,控制器一般由servlet来担任,客户端的请求不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。因此,这个servlet控制器为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能。业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View。而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC模式。实践证明,MVC模式为大型程序的开发及维护提供了巨大的便利。 

其实,MVC开始并不是为Web应用程序提出的模式,传统的MVC要求M将其状态变化通报给V,但由于Web浏览器工作在典型的拉模式而非推模式,很难做到这一点。因此有些人又将用于Web应用的MVC称之为MVC2。正如上面所提到的MVC是一种模式,当然可以有各种不同的具体实现,包括您自己就可以实现一个体现MVC思想的程序框架,Struts就是一种具体实现MVC2的程序框架。它的大致结构如图三所示

 


 


图基本勾勒出了一个基于Struts的应用程序的结构,从左到右,分别是其表示层(view)、控制层(controller)、和模型层(Model)。其表示层使用Struts标签库构建。来自客户的所有需要通过框架的请求统一由叫ActionServletservlet接收(ActionServlet Struts已经为我们写好了,只要您应用没有什么特别的要求,它基本上都能满足您的要求),根据接收的请求参数和Struts配置(struts-config.xml)ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。Action则是Struts应用中真正干活的组件,开发人员一般都要在这里耗费大量的时间,它解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。  过程如图所示: 

 

这里要特别说明一下的是:就是Action这个类,上面已经说到了它是Struts中真正干活的地方,也是值得我们高度关注的地方。 将业务对象从Action分离出来后有利于它的重用,同时也增强了应用程序的健壮性和设计的灵活性。因此,它实际上可以看作是ControllerModel的适配器,如果硬要把它归于那一部分,笔者更倾向于后一种看法,即它是Controller的一部分,换句话说,它不应该包含过多的业务逻辑,而应该只是简单地收集业务方法所需要的数据并传递给业务对象。

上面这样简单的描述,初学者可能会感到有些难以接受,下面举个比较具体的例子来进一步帮助我们理解。如:假设,我们做的是个电子商务程序,现在程序要完成的操作任务是提交定单并返回定单号给客户,这就是关于做什么的问题,应该由Action类完成,但具体怎么获得数据库连接,插入定单数据到数据库表中,又怎么从数据库表中取得这个定单号(一般是自增数据列的数据),这一系列复杂的问题,这都是解决怎么做的问题,则应该由一个(假设名为orderBo)业务对象即Model来完成。orderBo可能用一个返回整型值的名为submitOrder的方法来做这件事,Action则是先校验定单数据是否正确,以免常说的垃圾进垃圾出;如果正确则简单地调用orderBosubmitOrder方法来得到定单号;它还要处理在调用过程中可能出现任何错误;最后根据不同的情况返回不同的结果给客户。



 

  • 大小: 3.3 KB
  • 大小: 9.9 KB
分享到:
评论

相关推荐

    Struts从入门到精通

    总的来说,"Struts从入门到精通"这个主题涵盖了从基础概念到实践应用的全方位学习路径,通过这个教程,开发者可以逐步掌握Struts框架的使用,提升Web应用开发能力。从安装配置到实际项目开发,每个阶段都提供了详细...

    精通Struts --基于MVC的JavaWeb设计与开发

    《精通Struts --基于MVC的JavaWeb设计与开发》是由孙卫琴编著的一本专业书籍,专注于讲解如何利用Struts框架进行高效且规范的Java Web应用开发。这本书是针对那些希望深入理解和掌握Struts框架的开发者所设计的,...

    struts--MVC框架

    Struts是一个基于MVC设计模式的Java Web框架,主要用于构建企业级J2EE应用程序。它在J2EE的开发中起到了关键作用,特别是在实现呈现层、业务逻辑层和持久层的分离方面。以下是对Struts框架及其核心概念的详细解释: ...

    struts从入门到精通.doc

    ### Struts从入门到精通知识点概览 #### 第1章 Struts概述 ...以上内容覆盖了《Struts从入门到精通》文档的主要知识点,旨在为初学者提供一个全面的指南,并帮助他们深入了解Struts框架的技术细节和实际应用。

    精通Struts ---基于MVC的Java Web设计与开发3

    Struts是一个开源的Web应用框架,它属于MVC(Model-View-Controller)架构模式的一种实现。Struts主要用于简化Java Web应用程序的开发流程,并提供了一种标准的方法来构建可扩展且易于维护的应用程序。 - **模型...

    Struts 2.0从入门到精通(2)-源码

    在"Struts 2.0从入门到精通(2)-源码"的学习中,你可以深入研究Action类的编写、拦截器的实现、配置文件的配置,以及如何结合实际项目需求进行定制。通过源码分析,可以更清楚地理解Struts 2.0的工作原理,这对于...

    spring-webmvc-struts.jar

    spring-webmvc-struts.jar对Struts和Spring整合时需要用到的包

    Struts2入门到精通教程.zip

    通过这个"Struts2入门到精通教程",你将能够从零开始学习如何创建一个简单的Struts2应用,逐步深入到使用拦截器、OGNL、Tiles和异常处理等高级特性,最终达到精通Struts2框架的目标。在学习过程中,不断实践和理解每...

    Struts 2 自定义MVC 框架

    Struts 2是一款强大的Java Web开发框架,基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用的开发。它通过提供一个统一的架构来管理控制器、视图和模型,使得开发者能够更专注于业务逻辑,而不是底层...

    Struts入门到精通

    Struts 是一个开源的...总的来说,"Struts入门到精通"涵盖了从基础概念理解、环境搭建、第一个应用开发,到深入理解框架机制的全过程。通过学习和实践,开发者能够熟练掌握Struts框架,有效地构建大型企业级Web应用。

    MVC模式和Struts框架

    MVC模式和Struts框架

    传智struts从入门到精通视频+笔记+上课代码

    9. **Struts 2**:虽然资源名为"传智struts从入门到精通",但通常会涉及到Struts 1和Struts 2的对比,Struts 2在很多方面进行了改进,如使用更现代的OGNL表达式语言,提供更灵活的拦截器机制等。 10. **最佳实践**...

    struts从入门到精通(图例、案例、讲解)

    本资源"Struts从入门到精通(图例、案例、讲解)"显然是为了帮助初学者和开发者全面理解和掌握Struts框架的应用。 在学习Struts的过程中,首先需要理解MVC设计模式。MVC模式将应用程序分为三个核心部分:模型...

    struts2框架入门

    Struts2框架是Java Web开发中的一个强大工具,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化、易于维护的Web应用开发方式。本资源包含"15_学员用书_STRUTS2核心_IMAGE版.pdf"这本书的源码...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    Struts 2是一款非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个插件允许开发者在Struts 2中轻松地创建能够返回JSON的Action,使得前端(通常使用JavaScript库如jQuery)可以...

    精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例全书

    Struts是MVC(Model-View-Controller)架构的一个实现,它在Web应用中分离了业务逻辑、数据模型和用户界面。Struts框架提供了控制器Servlet,协调请求和响应,并管理视图与模型之间的交互,帮助开发者实现灵活且可...

    精通struts基于mvc的java web设计与开发

    《精通Struts基于MVC的Java Web设计与开发》是一本深入探讨如何使用Struts框架进行Web应用开发的专业书籍。作者孙卫琴以其丰富的经验和深入的理解,为读者提供了全面、系统的Struts MVC学习路径。 首先,我们要理解...

Global site tag (gtag.js) - Google Analytics