畅享博客 > 落落屁 > Struts Framework -框架结构
2006-11-18 2:40:00

Struts Framework -框架结构

Struts Framework,框架结构

作者: Administrator

http://www.chnbokee.com/content/view/1339/

 

概述

本文主要讲解什么是Struts Framework,它的框架结构,组件结构,以及简单的配置讲解。

文章的包括了如下七大部分:

Framework的概念和体系简介

Struts的概念和体系结构

Struts的工作原理和组件

Struts配置文件简介

Struts高级特性

Struts标记库

一个简单的示例

Framework概念

一直以来我们都说Struts是一个Web Framework。那么让我么先来看看什么是Framework

Framework概念并不是很新了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。这意味着人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。这也就是我们所说的Framework

 Framework的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个Framework开发上的结构。 通常,Framework的结构中都有一个“命令和控制”组件("command and control" component)——Framework Factory and Manager。

Framework体系

 通过基于请求响应(Request-Response)模式的应用Framework,基本上有如下几个表现逻辑结构组成。

控制器Controller)——控制整个Framework中各个组件的协调工作。

业务逻辑层Business Logic)——对Framwork本身来说,这里仅仅只是概念和几个提够服务的基础组件,真正的实现与客户的业务逻辑接轨,还需要开发人员在Framework上再次扩展。

数据逻辑层Data Logic)——绝大应用系统都需要涉及到数据交互,这一层次主要包括了数据逻辑和数据访问接口。对于数据逻辑来说,如果你了解数据建模(Data Modeling)可能就很容易理解。

Struts的概念和体系结构

Struts有一组相互协作的类、Serlvet以及Jsp TagLib组成。基于Struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。根据上面对framework的描述,我们很容易理解为什么说Struts是一个web framwork,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。

Struts 有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。

Struts的与Web App的关系

既然struts叫做web framework,那么其肯定主要基于web层的应用系统开发。按照J2EE Architecture的标准,struts应当和jsp/servlet一样,存在于web container一层。

Struts与WebApp的关系

Struts的体系结构

 我们说struts framework是MVC 模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。下图显示了struts framework的体系结构响应客户请求时候,各个部分工作的原理。

Struts体系结构

从视图角度(View

首先,Struts提供了Javaorg. apache.struts.action.ActionFormJava开发者将该类细分来创建表单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。下图则显现了这几个组件包之间的关系。其中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 TagsHTML TagsLogic TagsNested TagsTemplate Tags这几个用于构建用户界面的标签类。

org.apache.struts.validator

Struts1.1 framework中增加了validator framework,用于动态的配置from表单的验证。详细信息请参阅 http://home.earthlink.net/~dwinterfeldt/

Struts的基本组件关系图

 


推荐到鲜果:

评论

您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)