Struts的体系结构

原创 2003年04月08日 09:07:00
Struts的体系结构
www.5272.com  2002-12-6  5272


Struts的体系结构
(Struts Framework Architecture)
胡长城(银狐999)
关键字
Struts,Framework,Architecture,Componennt,MVC
预备知识
在开始学习Struts以前,以下的知识点,需要有所了解: 模型-视图-控制的软件构架模式,JSP/Servlet的web层应用,J2EE体系结构。如果对客户标签类(Customer TagLib)有所了解也许更容易理解Struts本身的TagLib。

概述
本文主要从概念上讲解什么是struts framework,它的框架结构,组件结构,以及简单的配置讲解。对于其应用请参考后面的“struts安装及应用”和“struts实用案例分析”。
文章的包括了如下四大部分:
一、 Framework的概念和体系简介 (Framework Conception and Architecture)
二、 Struts的概念和体系结构(Struts Conception and Architecture)
三、 Struts的工作原理和组件(Struts Componennts)
四、 Struts配置文件简介(Struts Deployment Description)

一、 Framework概念
一直以来我们都说struts是一个web framework。那么让我么先来看看什么是Framework。(我想用“框架”一词来翻译framework,可是后来越来越发现不太理想和完备,所以就直接用Framework一词)
Framework概念并不是很新了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。这意味着人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。这也就是我们所说的Framework。
Framework的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个framework开发上的结构。 通常,framework的结构中都有一个“命令和控制”组件("command and control" component)——Framework Factory and Manager。

图片(2):Framework体系


通过基于请求响应(Request-Response)模式的应用framework,基本上有如下几个表现逻辑结构组成。
(1)控制器(Controller)——控制整个framework中各个组件的协调工作。
(2)业务逻辑层(Business Logic)——这是framework所希望解决问题的关键。当然对framwork本身来说,这里仅仅只是概念和几个提够服务的基础组件,真正的实现与客户的业务逻辑接轨,还需要开发人员在framework上再次扩展。
(3)数据逻辑层(Data Logic)——绝大应用系统都需要涉及到数据交互,这一层次主要包括了数据逻辑和数据访问接口。对于数据逻辑来说,如果你了解数据建模(Data Modeling)可能就很容易理解。

下面就进入我们的正题——Struts的结构

二、 Struts的概念和体系结构
Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于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等等这些表示层组件想结合。

2.1 Struts的与Web App的关系

既然struts叫做web framework,那么其肯定主要基于web层的应用系统开发。按照J2EE Architecture的标准,struts应当和jsp/servlet一样,存在于web container一层。如图片(3)所显示
图片(3): Struts与WebApp的关系

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

2.2.1从视图角度(View)
主要由JSP建立,struts自身包含了一组可扩展的自定义标签库(TagLib),可以简化创建用户界面的过程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags 这几个Taglib。有关它们的详细资料请参考struts用户手册
2.2.2从模型角度(Model)
模型主要是表示一个系统的状态(有时候,改变系统状态的业务逻辑操作也也划分到模型中)。在Struts中,系统的状态主要有ActiomForm Bean体现,一般情况下,这些状态是非持久性的。如果需要将这些状态转化为持久性数据存储,Struts本身也提供了Utitle包,可以方便的与数据库操作
2.2.3 从控制器角度(Controller)
在Struts framework中, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。

2.3 Struts的基本组件包
整个struts大约有15包,近200个类所组成,而且数量还在不断的扩展。在此我们不能一一介绍,只能列举几个主要的简要的介绍一下。下表说明了目前struts api中基本的几个组件包,包括action,actions,config,util,taglib,validator。图片(5)则显现了这几个组件包之间的关系。其中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/

struts体系结构

 Struts的体系结构(Struts Framework Architecture)                                                 胡长城(银狐99...
  • tiancityycf
  • tiancityycf
  • 2008年12月17日 20:25
  • 504

Struts 体系结构

Struts是一种基于MVC经典设计模式的开放源代码的应用框架,也是目前Web开发过程当中一种比较成熟的框架。它通过把Servlet,JSP,JavaBean,自定义标签和信息资源整合到一个统一的框架...
  • wuxinliulei
  • wuxinliulei
  • 2013年11月07日 15:20
  • 821

3 Struts的体系结构

Struts的体系结构(Struts Framework Architecture)胡长城(银狐999)关键字Struts,Framework,Architecture,Componennt,MVC预...
  • jay_llr
  • jay_llr
  • 2007年04月16日 11:50
  • 376

Struts 体系结构与工作原理

基本概念  Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构...
  • xttgx
  • xttgx
  • 2009年05月31日 10:08
  • 265

struts体系结构-框架简介

1. Struts的起源Struts是作为Apache Jakarta项目的组成部分。该项目的目标是为建立Java web 应用程序而提供的一个开源框架,目前大家一般使用的版本为1.1,但也出现了1....
  • poetshi
  • poetshi
  • 2008年03月13日 11:35
  • 357

Struts体系结构说明文档

体系结构中所使用的组件如下表:  ActionServlet  控制器  ActionClass   包含事务逻辑  Actionform   显示模块数据  ActionMapping  帮助控...
  • jhaij
  • jhaij
  • 2007年05月01日 12:46
  • 528

Struts的体系结构(学习转发)

http://www.donews.net/tssungeng/archive/2004/06/13/27940.aspx Struts的体系结构 Struts的体系结构 (Struts Framew...
  • FutureInHands
  • FutureInHands
  • 2006年11月15日 13:45
  • 1069

概述MVC体系结构 为什么要用MVC结构?

MVC模式是"Model-View-Controller"的缩写 中文翻译为模式视图控制器 Wiew通常是JSP,即页面显示部分。Controller通常是Servlet 即页面显示的逻辑部分实现 ...
  • lamar511
  • lamar511
  • 2012年02月21日 17:44
  • 1403

交换机从体系结构分类

常用的交换机从体系结构来说,可以分为两大类,一种是总线式交换机,一种是采用交换矩阵(Switch Fabric)的交换机。      总线式交换机:这也是交换机最初的交换方式,在这种方式中,所有的接...
  • hrl7752
  • hrl7752
  • 2017年11月02日 13:46
  • 70

常用的分布式体系结构

分布式结构是相对于集中式结构而言的,整个应用系统的执行是分成多个不同的部分并且执行在不同的机器之中。常用的分布式体系结构有两层C/S (Client/Server)体系结构和三层C/S体系结构。   ...
  • letian_w
  • letian_w
  • 2007年12月15日 21:28
  • 3804
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts的体系结构
举报原因:
原因补充:

(最多只允许输入30个字)