教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

开源技术Struts、Spring、Hibernate(4)

来源:网络收集 时间:2026-02-18
导读: 北方民族大学硕士学位论文 开源技术Struts,Spring,Hibernate在MIS开发中的应用研究 视图是用户看到并与之交互的界面。视图向用户展示用户感兴趣的业务数据,并能接收用户的输入数据,但是视图并不进行任何实际的

北方民族大学硕士学位论文 开源技术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字,全部文档内容请下载后查看。喜欢就下载吧 ……

开源技术Struts、Spring、Hibernate(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/402890.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)