开源技术Struts、Spring、Hibernate(4)
北方民族大学硕士学位论文 开源技术Struts,Spring,Hibernate在MIS开发中的应用研究
视图是用户看到并与之交互的界面。视图向用户展示用户感兴趣的业务数据,并能接收用户的输入数据,但是视图并不进行任何实际的业务处理。视图可以向模型查询业务数据,但不能直接改变模型中的业务数据。视图还能接收模型发出的业务数据更新事件,从而对用户界面进行同步更新。
(2)模型
模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供业务数据。同一个模型可以被多个视图重用。
(3)控制器
控制器接收用户的输入并调用模型和视图去完成用户的请求。当用户在视图上选择按钮或菜单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据(如图2.4所示)。
视图层接口视图层实现控制器接口控制器实现模型层接口模型层实现
图3.2 MVC的三个模块可看作软件的三个层次
MVC的3个模块也可以看做软件的3个层次,最上层为视图层,中间为控制器层,下层为模型层。总地说来,层与层之间为自上而下的依赖关系,下层组件为上层组件提供服务。视图层与控制器层依赖模型层来处理业务逻辑和提供业务数据。此外,层与层之间还存在两处自下而上的调用,一处是控制器层调用视图层来显示业务数据,另一处是模型层通知客户层同步刷新界面。为了提高每个层的独立性,应该使每个层对外公开接口,封装实现细节。
(4)MVC处理过程
如图3.3所示,首先用户在视图提供的界面上发出请求,视图把请求转发给控制器,控制器调用相应的模型来处理用户请求,模型进行相应的业务逻辑处理,并返回数据。最后控制器调用相应的视图来显示模型返回的数据。
视图顶层包::主角11:发出请求2:转发请求控制器模型3:调用模块4:处理业务5:返回响应数据6:选择视图展示相应数据()
图3.3 MVC的处理过程
-15-
北方民族大学硕士学位论文 开源技术Struts,Spring,Hibernate在MIS开发中的应用研究
(5)MVC的优点
首先,多个视图能共享一个模型。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和数据表示分离,同一个模型可以被不同的视图重用,所以大大提高了模型层的程序代码的可重用性。
其次,模型是自包含的,与控制器和视图保持相对独立,因此可以方便地改变应用程序的业务数据和业务规则。如果把数据库从MySQL移植到Oracle,或者把RDBMS数据源改变成LDAP数据源,只需改变模型即可。一旦正确地实现了模型,不管业务数据来自数据库还是LDAP服务器,视图都会正确地显示它们。由于MVC的3个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松耦合的组件。
此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,控制器为构造应用程序提供了强有力的重组手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行业务逻辑处理,然后选择适当的视图将处理结果显示给用户。
(6)MVC的适用范围
使用MVC需要精心的设计,由于它的内部原理比较复杂,所以需要花费一些时间去理解它。将MVC运用到应用程序中,会带来额外的工作量,增加应用的复杂性,所以MVC不适合小型应用程序。但对于开发存在大量用户界面,并且业务逻辑复杂的大型应用程序,MVC将会使软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC框架时会花费一定的工作量,但从长远角度看,它会大大提高后期软件开发的效率。
3.1.2 Struts实现MVC机制
Struts 实质上就是在 JSP Model2 的基础上实现的一个 MVC 框架。在 Struts 框架中,模型由实现业务逻辑的 JavaBean 或 EJB 组件构成,控制器由 ActionServlet 和Action 来实现,视图由一组 JSP 文件构成。图3.4表示Struts的MVC框架
Servlet/JSP容器Struts-config.xmlAction(控制器)ActionServlet浏览器Web服务器(视图)JSPActionAction(模型)JavaBeanEJB 图3.4 Struts 的MVC框架
(1) 视图
视图就是一组 JSP 文件。在这些 JSP 文件中没有业务逻辑,也没有模型信息,只有标签,这些
标签可以是标准的 JSP 标签或客户化标签,如 Struts 标签库中的标签。此外,通常把 Struts 框架中的 ActionForm Bean 也划分到视图模块中。ActionFormBean 也是一种 JavaBean,除了具有一些 JavaBean 的常规方法,还包含一些特殊的方法,用于验证 HTML 表单数据以及将其属性重新设
-16-
北方民族大学硕士学位论文 开源技术Struts,Spring,Hibernate在MIS开发中的应用研究
置为默认值。Struts 框架利用ActionFrom Bean 来进行视图和控制器之间表单数据的传递(参见图3.5)。Struts 框架把用户输入的表单数据保存在 ActionFrom Bean 中,把它传递给控制器,控制器可以对ActionFrom Bean 中的数据进行修改,JSP 文件使用 Struts 标签读取修改后的ActionFrom Bean 的信息,重新设置 HTML 表单。
Action FormBean(包含用户输入数据)视图组件Action FormBean(包含修改后数据)图3.5 Action FormBean的作用
控制器组件
(2)模型
模型表示应用程序的状态和业务逻辑。对于大型应用,业务逻辑通常由 JavaBean或 EJB 组件实现。 (3)控制器
控制器由 ActionServlet 类和 Action 类来实现。ActionServlet 类是 Struts 框架中的核心组件。ActionServlet 继承了 Javax.servlet.http.HttpServlet 类,它在 MVC 模型中扮演中央控制器的角色。ActionServlet 主要负责接受 HTTP 请求信息,根据配置文件 struts-config.xml 的配置信息,把请求转发给适当的 Action对象。如果该 Action对象不存在,ActionServlet 会先创建这个 Action 对象。Action 类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。
对于小型简单的应用,Action 类本身也可以完成一些实际的业务逻辑。对于大型应用,Action 充当用户请求和业务逻辑处理之间的适配器(Adaptor),其功能就是将请求于业务逻辑分开,Action 根据用户请求调用相关的业务逻辑组件。业务逻辑由 Java Bean 或 EJB 来完成,Action 类侧重于控制应用程序的流程,而不是实现应用程序的逻辑。通过将业务逻辑放在单独的 Java 包或 EJB 中,可以提高应用程序的灵活性和可重用性。
当 ActionServlet 控制器收到用户请求后,把请求转发到一个 Action 实例。如果这个实例不存在,控制器会首先创建它,然后调用这个 Action 实例的 execute()方法。Action 的 execute()方法返回 ActionForward 对象,它封装了把用户请求再转发给其他 Web 组件的信息。用户定义自己的 Action 类,即 Action 基类的子类时,必须覆盖 execute()方法。在 Action 基类中返回 null。 (4)Struts 的配置文件 struts-config.xml
上面讲到的一个用户请求是通过 ActionServlet 来处理和转发的。那么,ActionServlet 如何决定把用户请求转发给哪个 Action 对象呢?这就需要一些描述用户请求路径和 Action 映射关系的配置信息了。在 Struts 中, …… 此处隐藏:4960字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




