天天看点

存档-Struts 的体系结构

我们说 struts framework 是 MVC 模式的体现,下面我们就从分别从模型、视图、控制

来看看 struts 的体系结构(Architecture)。下图显示了 struts framework 的体系结构响应客户请求时候,各个部分工作的原理。

存档-Struts 的体系结构

从视图角度 (View )

首先,Struts 提供了 Java 类 org. apache.struts.action.ActionForm,Java 开发者将该类细

分来创建表单 bean。在运行时,该 bean 有两种用法:

― 当 JSP 准备相关的 HTML,表单以进行显示时,JSP 将访问该

bean(它保存要放入表单中的值)。那些值是从业务逻辑或者是从先前的用户

输入来提供的。

― 当从 Web 浏览器中返回用户输入时,该 bean 将验证并保存该输入以供业务

逻辑或(如果验证失败的话)后续重新显示使用。

其次,Struts 提供了许多定制 JSP 标记,它们的使用简单,但是它们在隐藏信息方面

功能强大。例如,除了 bean 名称和给定 bean 中每个段的名称之外,页面设计者不需

要知道有关表单 bean 的更多信息。

从模型角度 (Model )

Struts 虽然不直接有助于模型开发。在 Struts 中,系统模型的状态主要由 ActiomForm

Bean 和值对象体现。

从控制器角度 (Controller )

在 Struts framework 中, Controller 主要是 ActionServlet,但是对于业务逻辑的操

作则主要由 Action、ActionMapping、ActionForward 这几个组件协调完成(也许这几个组

件,应该划分到模型中的业务逻辑一块)。其中,Action 扮演了真正的控制逻辑的实现者,

而 ActionMapping 和 ActionForward 则指定了不同业务逻辑或流程的运行方向。

Struts 的基本组件包

整个 struts 大约有 15 包,近 200 个类所组成,而且数量还在不断的扩展。在此我们不

能一一介绍,只能列举几个主要的简要的介绍一下。下表说明了目前 struts api 中基本的

几个组件包,包括 action,actions,config,util,taglib,validator。下图则显现了这几个

7

组件包之间的关系。其中 action 是整个 struts framework 的核心

org.apache.struts.action

基本上,控制整个 struts framework 的运行的核心类、组件都在这个包中,比如我们上面提

到的控制器 ActionServlet。已经 Action,ActionForm,ActionMapping 等等。struts1.1 比

1.0 多了 DynaActionForm 类。增加了动态扩展生成 FormBean 功能

org.apache.struts.actions

这个包是主要作用是提供客户的 http 请求和业务逻辑处理之间的特定适配器转换功能,而

1.0版本中的部分动态增删FromBean的类,也在struts1.1中被Action包的DynaActionForm

组件所取代

org.apache.struts.config

提供对配置文件 struts-config.xml 元素的映射。这也是 sturts1.1 中新增的功能

org.apache.struts.util

Strtuts 为了更好支持 web application 的应用,体统了一个些常用服务的支持,比如

Connection Pool 和 Message Source。详细信息请参考

http://jakarta.apache.org/struts/api/org/apache/struts/util/package-summary.html

org.apache.struts.taglib

这不是一个包,而是是一个客户标签类的集合。下面包括 Bean Tags,HTML Tags,Logic Tags,

Nested Tags,Template Tags 这几个用于构建用户界面的标签类。

org.apache.struts.validator

Struts1.1 framework 中增加了 validator framework,用于动态的配置 from 表单的验证。

存档-Struts 的体系结构

Java入门视频学习地址:

https://edu.csdn.net/course/play/25125/292197

Linux视频学习地址:

https://edu.csdn.net/course/play/25603/307048

Oracle视频学习地址

https://edu.csdn.net/course/play/25785/313742