Posted on 2006-06-04 18:00
氧气中毒 阅读(1477)
评论(0) 编辑 收藏 所属分类:
Framework
一、
Struts
的与
Web App
的关系
struts叫做web framework,其主要基于web层的应用系统开发。按照J2EE Architecture的标准,struts应当和jsp/servlet一样,存在于web container一层。
二、
Struts
的体系结构
我们说struts framework是MVC 模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。下图显示了struts framework的体系结构响应客户请求时候,各个部分工作的原理。
1、
从视图角度(
View
)
首先,
Struts
提供了
Java
类
org. apache.struts.action.ActionForm
,
Java
开发者将该类细分来创建表单
bean
。在运行时,该
bean
有两种用法:
―
当
JSP
准备相关的
HTML
,表单以进行显示时,
JSP
将访问该
bean(
它保存要放入表单中的值
)
。那些值是从业务逻辑或者是从先前的用户输入来提供的。
―
当从
Web
浏览器中返回用户输入时,该
bean
将验证并保存该输入以供业务逻辑或
(
如果验证失败的话
)
后续重新显示使用。
其次,
Struts
提供了许多定制
JSP
标记,它们的使用简单,但是它们在隐藏信息方面功能强大。例如,除了
bean
名称和给定
bean
中每个段的名称之外,页面设计者不需要知道有关表单
bean
的更多信息。
2、
从模型角度(
Model
)
Struts
虽然不直接有助于模型开发。
在Struts中,系统
模型
的状态主要由ActiomForm Bean和值对象体现。
3、
从控制器角度(
Controller
)
在Struts framework中, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的控制逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。
三、基本组件包
整个struts大约有15包,近200个类所组成,而且数量还在不断的扩展。在此我们不能一一介绍,只能列举几个主要的简要的介绍一下。下表说明了目前struts api中基本的几个组件包,包括action,actions,config,util,taglib,validator。下图则显现了这几个组件包之间的关系。其中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表单的验证。详细信息请参阅 http://home.earthlink.net/~dwinterfeldt/
|