一、struts的起源
struts最早是作为apache jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高javaserver pages 、servlet、标签库以及面向对象的技术水准。struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。这个框架之所以叫"struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。这也是一个解释struts在开发web应用程序中所扮演的角色的精彩描述。当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用mvc设计模型来开发web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用servlets和jsp的优点来建立可扩展的应用,struts是一个不错的选择。
早期smalltalk 程序语言便采用了mvc(model-view -controller) 模式( patterns ) 以增加程序代码弹性,mvc模式将程序代码整理切割为三部份,model 部分是业务与应用领域( business domain) 相关逻辑、管理状态之对象,controller 部分接收来自view 所输入的资料并与model 部分互动,是业务流程控制( flow control) 之处,view 部分则负责展现资料、接收使用者输入资料。在java 应用中,jfc/swing、awt、jsp 皆是可用作view 之技术规格,而javabean 与enterprise javabean 规格则可用于model 程序代码,一旦应用程序以mvc 模式加以适当之分割,model 部分程序代码可在不同使用者接口外观之应用程序中重复使用。
随着jsp 与servlet 技术大量应用于以web 为基础之应用程序,java 开发人员群体认为应以较佳之模式以提升web 应用程序之可维护性与重复使用性。早期jsp 规格书中曾列举两种可行之jsp 应用架构,分别为model1 与model 2。
在model 1 架构中,jsp 直接处理web 浏览器送来之请求( request ),并辅以javabean 处理应用相关逻辑。model 1 架构单纯编写比较容易,但在model 1 中jsp 可能同时肩负view 与controller 角色,两类程序代码有可能混杂而不易维护。而model 2 中将servlet 纳入架构中扮演前端controller 角色,将web 浏览器送出之请求集中送至servlet ,servlet 可集中管理使用者登入、权限控制、多国语言转换等前置处理,再视需求转向给对应之jsp 处理。model 2 中采用了较佳之mvc 模式,但增加了编写复杂度。
struts是apache软件基金下jakarta项目的一部分。除struts之外,还有其他成功的开源产品,包括tomcat, ant 和velocity。2000 年craig r. mcclanahan 先生贡献了他编写的jsp model 2 架构之application framework 原始程序代码给apache 基金会,成为apache jakarta 计划struts framework 前身。
开始的代码基础从2000年5月开始开发,直到2001年6月,1.0版本发布。有30 多个开发者参与进来,并有数千人参与到讨论组中。struts 代码基础由一个志愿的commnitter团队来管理。到2002年,struts 小组共有9个志愿commnitter。
struts框架的主要架构设计和开发者是craig r.mcclanahan。craig 也是tomcat 4的主要架构师,以及java web services developer pack的主要架构师和实现者。他现在是sun的javaserver faces (jsr-127) 以及j2ee平台的web层架构的规范领导。craig r. mcclanahan 先生是jcp expertgroup 成员之一,曾参与jsp 规格制定与tomcat 4 之编写,因此struts framework 广受java 开发人员群体所重视。borland 自2002 年底开始于开发工具jbuilder 中支持struts framework。 二、struts安装
1、安装struts需要的软件
java development kit-- 我们需要download和install 1.2(或之后)版本的jdk。
下载地址:
http://java.sun.com/j2se
servlet container -- 通常的选择是下载tomcat(至少是3.1版,推荐使用4.0以上的版本)。
下载地址:
http://jakarta.apache.org/tomcat
ant build system -- 如果我们通过struts源码发布包安装,我们必须下载1.1或之后版本的ant build system。在我们通过struts来开发我们自己的web应用程序是,推荐使用ant来build我们的应用。
下载地址:
http://jakarta.apache.org/ant
servlet api classes -- 为了编译structs自己,或应用程序使用struts,我们需要一个包含servlet和jsp api对象的servlet.jar包。大多数servlet container(例如tomcat)已经自带了这个文件。否则,我们必需下载:http://jakarta.apache.org/builds/jakarta-servletapi
xml parser -- structs需要一个与java api for xml parsing(jaxp)规格兼容的xml处理器,我们可以使用xerces。
下载地址:
http://xml.apache.org/xerces-j
xalan xslt processor -- 如果我们通过structs源码发布版来构造我们的structs系统,我们必须下载和安装1_2_d01或之后版本的xalan xslt处理器(xerces中已自带xalan)。这个处理器用于将基于xml的structs文档转换为html文档。
2、通过源码构造structs
1)下载structs的源码发布包。
2)设置ant_home环境变量,指向我们的ant目录。
3)设置java_home环境变量,指向我们的jdk目录。
4)设置servletapi_home环境变量,指向我们的servlet api目录(如果我们的classpath已经包含了servlet.jar,就不需要指定该目录)
5)将structs的源码发布包进行解包。
6)进入structs目录,运行以下命令:
./build.sh dist
该命令将创建struts的二进制发布包,目录在../dist/structs(相对于我们的编译目录)。
3、通过struts的二进制发布包安装structs
1)下载struts的二进制发布版。
2)将struts的二进制发布版进行解包。(如果我们是通过struts源码构造struts,build的结果就已经是已解包的struts)。解包后的struts包含以下内容:
lib/struts.jar -- 这个文件包含了struts的所有java对象。我们需要把它拷贝到我们的web应用的web-inf/lib目录。
lib/structs.tld --这是一个"tag library descriptor"文件,它描述了struts库的自由tag。需要将它拷贝到我们的web应用的web-inf目录。
webapps/struts-documentation.war -- 这是一个"web application archive"文件,包含了所有的struts文档。我们可以将它安装到支持servlet api 2.2或之后版本的servlet container(推荐使用tomcat)中。
webapps/struts-example.war -- 这是一个web应用实例,它广泛地演示了struts的许多功能。我们可以将它安装到兼容servlet2.2或之后版本以及jsp1.1或之后版本规范的servlet容器中(推荐使用tomcat)。
webapps/struts-test.war -- 这个web应用包含了struts支持的许多tag的测试网页,可以作为使用struts tag的例子。
4、struts的基本组件包
安装好的struts大约有15包,近200个类所组成,而且数量还在不断的扩展。在此我们不能一一介绍,只能列举几个主要的简要的介绍一下。下表说明了目前struts api中基本的几个组件包,包括
action,actions,config,util,taglib,validator。如下表1所示:
下面的图则显现了这几个组件包之间的关系。其中action是整个struts 架构的核心。

三、struts 配置与组件介绍
有关struts组件配置struts-config.xml文件说明在前面的文章中已经介绍过,这里就不再说了,下面主要介绍框架中组件与配置。
下表列出了struts的核心类,即对应的经典的mvc组件职责。
表格2 核心struts 类和mvc 的对应
除了这些核心类, struts 使用一些配置文件和视图助手(view helpers)来沟通控制器和模型。下表列出了struts 配置文件和描述了他们在架构中的角色。
表格3 strtuts 配置文件
为将struts配置数据暴露给视图,框架以jsp标签的形式提供了大量的助手类,如表4 strtus 视图助手。
控制器组件的配置
框架中的控制器组件是有org.apache.struts.action.actionservlet类实现的,这个类是javax.servlet.http.httpservlet类的扩展。
actionservlet配置:
我们需要在web.xml中声明actionservlet,并且将它配置成启动时进行加载。以下为可以配置的初始化参数:
大多数情况下,标准的servlet就能够满足用户需要。
第一次收到特定请求的uri时,actionservlet将适当的action类进行实例化,然后actionservlet在action类实例中以servlet为变量名存储一个引用。当被实例化后,action类会被暂存以备再用。
错误处理
struts提供了两个类来处理错误:actionerrors和actionerror,它们都扩展org.apache.struts.action。actionerrors保存着actionerror对象的集合,其中每一个代表了独立的错误信息。每个actionerror都包含了关键字,能够映射到资源文件中存储的错误信息,而这个资源文件是在actionservlet初始化参数中指定的。 四、struts的运行
可通过以下的步骤在我们自己的应用程序中使用struts:
1、将struts目录的lib/struts.jar拷贝到web应用的web-inf/lib目录。
2、将struts目录的lib/struts*.tld拷贝到web应用的web-inf目录。
3、修改web应用目录的web-inf/web.xml文件,增加一个<servlet>元素来定义controller servlet,增加一个<servlet-mapping>元素来建立uri请求与servlet的对应关系。可以参照struts例子中的web-inf/web.xml文件来了解详细的语法要求。
4、修改web应用目录的web-inf/web.xml文件,使之包含以下的tag库定义:
5、创建一个web-inf/action.xml文件来定义我们的web应用的action映射关系。可以参照struts例子中的action.xml文件来了解详细的语法要求。
6、在使用struts tag库的jsp网页中加入以下tag库定义:
7、最后,在编译我们的web应用的java程序时,不要忘了在classpath中包含struts.jar文件。
五、struts优缺点
优点:
struts跟tomcat、turbine等诸多apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。除此之外,struts的优点主要集中体现在两个方面:taglib和页面导航。taglib是struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的jsp开发者而言,除了使用jsp自带的常用标记外,很少开发自己的标记,或许struts是一个很好的起点。
关于页面导航,我们认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
缺点:
taglib是struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱我们网页编写的习惯,但是,当我们习惯了它时,我们会觉得它真的很棒。struts将mvc的controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。毫无疑问,要理解 struts 必须接受一定的培训。随着变化的不断加入,这有时会令人很沮丧。
struts从产生到现在还不过3-4年时间,就已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的j2ee mvc实现方式,如果我们的系统准备采用j2ee mvc架构,那么,不妨考虑一下struts。
struts 是一种基于 web 的 mvc 解决方案,所以必须用 html、jsp 文件和 servlet 来实现它,struts 需要支持 jsp 1.1 和 servlet 2.2 规范的 servlet 容器。学习、理解和掌握struts是我们每个基于j2ee软件开发人员一门必修的课程,也是我们对企业j2ee技术应用的进一步深化。
struts最早是作为apache jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高javaserver pages 、servlet、标签库以及面向对象的技术水准。struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。这个框架之所以叫"struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。这也是一个解释struts在开发web应用程序中所扮演的角色的精彩描述。当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用mvc设计模型来开发web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用servlets和jsp的优点来建立可扩展的应用,struts是一个不错的选择。
早期smalltalk 程序语言便采用了mvc(model-view -controller) 模式( patterns ) 以增加程序代码弹性,mvc模式将程序代码整理切割为三部份,model 部分是业务与应用领域( business domain) 相关逻辑、管理状态之对象,controller 部分接收来自view 所输入的资料并与model 部分互动,是业务流程控制( flow control) 之处,view 部分则负责展现资料、接收使用者输入资料。在java 应用中,jfc/swing、awt、jsp 皆是可用作view 之技术规格,而javabean 与enterprise javabean 规格则可用于model 程序代码,一旦应用程序以mvc 模式加以适当之分割,model 部分程序代码可在不同使用者接口外观之应用程序中重复使用。
随着jsp 与servlet 技术大量应用于以web 为基础之应用程序,java 开发人员群体认为应以较佳之模式以提升web 应用程序之可维护性与重复使用性。早期jsp 规格书中曾列举两种可行之jsp 应用架构,分别为model1 与model 2。
在model 1 架构中,jsp 直接处理web 浏览器送来之请求( request ),并辅以javabean 处理应用相关逻辑。model 1 架构单纯编写比较容易,但在model 1 中jsp 可能同时肩负view 与controller 角色,两类程序代码有可能混杂而不易维护。而model 2 中将servlet 纳入架构中扮演前端controller 角色,将web 浏览器送出之请求集中送至servlet ,servlet 可集中管理使用者登入、权限控制、多国语言转换等前置处理,再视需求转向给对应之jsp 处理。model 2 中采用了较佳之mvc 模式,但增加了编写复杂度。
struts是apache软件基金下jakarta项目的一部分。除struts之外,还有其他成功的开源产品,包括tomcat, ant 和velocity。2000 年craig r. mcclanahan 先生贡献了他编写的jsp model 2 架构之application framework 原始程序代码给apache 基金会,成为apache jakarta 计划struts framework 前身。
开始的代码基础从2000年5月开始开发,直到2001年6月,1.0版本发布。有30 多个开发者参与进来,并有数千人参与到讨论组中。struts 代码基础由一个志愿的commnitter团队来管理。到2002年,struts 小组共有9个志愿commnitter。
struts框架的主要架构设计和开发者是craig r.mcclanahan。craig 也是tomcat 4的主要架构师,以及java web services developer pack的主要架构师和实现者。他现在是sun的javaserver faces (jsr-127) 以及j2ee平台的web层架构的规范领导。craig r. mcclanahan 先生是jcp expertgroup 成员之一,曾参与jsp 规格制定与tomcat 4 之编写,因此struts framework 广受java 开发人员群体所重视。borland 自2002 年底开始于开发工具jbuilder 中支持struts framework。 二、struts安装
1、安装struts需要的软件
java development kit-- 我们需要download和install 1.2(或之后)版本的jdk。
下载地址:
http://java.sun.com/j2se
servlet container -- 通常的选择是下载tomcat(至少是3.1版,推荐使用4.0以上的版本)。
下载地址:
http://jakarta.apache.org/tomcat
ant build system -- 如果我们通过struts源码发布包安装,我们必须下载1.1或之后版本的ant build system。在我们通过struts来开发我们自己的web应用程序是,推荐使用ant来build我们的应用。
下载地址:
http://jakarta.apache.org/ant
servlet api classes -- 为了编译structs自己,或应用程序使用struts,我们需要一个包含servlet和jsp api对象的servlet.jar包。大多数servlet container(例如tomcat)已经自带了这个文件。否则,我们必需下载:http://jakarta.apache.org/builds/jakarta-servletapi
xml parser -- structs需要一个与java api for xml parsing(jaxp)规格兼容的xml处理器,我们可以使用xerces。
下载地址:
http://xml.apache.org/xerces-j
xalan xslt processor -- 如果我们通过structs源码发布版来构造我们的structs系统,我们必须下载和安装1_2_d01或之后版本的xalan xslt处理器(xerces中已自带xalan)。这个处理器用于将基于xml的structs文档转换为html文档。
2、通过源码构造structs
1)下载structs的源码发布包。
2)设置ant_home环境变量,指向我们的ant目录。
3)设置java_home环境变量,指向我们的jdk目录。
4)设置servletapi_home环境变量,指向我们的servlet api目录(如果我们的classpath已经包含了servlet.jar,就不需要指定该目录)
5)将structs的源码发布包进行解包。
6)进入structs目录,运行以下命令:
./build.sh dist
该命令将创建struts的二进制发布包,目录在../dist/structs(相对于我们的编译目录)。
3、通过struts的二进制发布包安装structs
1)下载struts的二进制发布版。
2)将struts的二进制发布版进行解包。(如果我们是通过struts源码构造struts,build的结果就已经是已解包的struts)。解包后的struts包含以下内容:
lib/struts.jar -- 这个文件包含了struts的所有java对象。我们需要把它拷贝到我们的web应用的web-inf/lib目录。
lib/structs.tld --这是一个"tag library descriptor"文件,它描述了struts库的自由tag。需要将它拷贝到我们的web应用的web-inf目录。
webapps/struts-documentation.war -- 这是一个"web application archive"文件,包含了所有的struts文档。我们可以将它安装到支持servlet api 2.2或之后版本的servlet container(推荐使用tomcat)中。
webapps/struts-example.war -- 这是一个web应用实例,它广泛地演示了struts的许多功能。我们可以将它安装到兼容servlet2.2或之后版本以及jsp1.1或之后版本规范的servlet容器中(推荐使用tomcat)。
webapps/struts-test.war -- 这个web应用包含了struts支持的许多tag的测试网页,可以作为使用struts tag的例子。
4、struts的基本组件包
安装好的struts大约有15包,近200个类所组成,而且数量还在不断的扩展。在此我们不能一一介绍,只能列举几个主要的简要的介绍一下。下表说明了目前struts api中基本的几个组件包,包括
action,actions,config,util,taglib,validator。如下表1所示:
| 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/ |
下面的图则显现了这几个组件包之间的关系。其中action是整个struts 架构的核心。

有关struts组件配置struts-config.xml文件说明在前面的文章中已经介绍过,这里就不再说了,下面主要介绍框架中组件与配置。
下表列出了struts的核心类,即对应的经典的mvc组件职责。
表格2 核心struts 类和mvc 的对应
| 类 | 描述 |
| actionforward | 用户指向或者视图选择 |
| actionform | 状态改变的数据 |
| actionmapping | 状态改变事件 |
| actionservlet | 控制器,接受用户请求和状态改变,以及发出视图选择 |
| action | 控制器的一部分,于模型交互,执行状态改变或状态查询,以及告诉actionservlet 下一个选择的视图 |
除了这些核心类, struts 使用一些配置文件和视图助手(view helpers)来沟通控制器和模型。下表列出了struts 配置文件和描述了他们在架构中的角色。
表格3 strtuts 配置文件
文件 | 目的 |
| applicationresources.properties | 存储本地化信息和标签,以使应用可以国际化 |
| struts-config.xml | 存储控制器对象的缺省配置,包括模型支持的用户指向,状态改变,状态查询 |
为将struts配置数据暴露给视图,框架以jsp标签的形式提供了大量的助手类,如表4 strtus 视图助手。
| 标记库描述符 | 目的 |
| struts-html.tld | 扩展html form的jsp标记 |
| struts-bean.tld | 扩展处理javabean的jsp标记 |
| struts-logic.tld | 扩展测试属性值的jsp标记 |
控制器组件的配置
框架中的控制器组件是有org.apache.struts.action.actionservlet类实现的,这个类是javax.servlet.http.httpservlet类的扩展。
actionservlet配置:
我们需要在web.xml中声明actionservlet,并且将它配置成启动时进行加载。以下为可以配置的初始化参数:
| 参数 | 默认值 | 描述 |
| application | null | 应用程序的资源集合的类 |
| buffersize | 4096 | 文件上传的缓冲区大小 |
| config | /web-inf/struts-config.xml | 配置文件的位置和名称 |
| content | text/html | 默认的内容类型 |
| debug | 0 | 程序调试的级别 |
| detail | 0 | 程序调试细节的级别 |
| factory | null | 消息资源工厂,用于国际化中解释消息资源 |
| formbean | org.apache.struts.action.actionformbean | 封装actionform bean信息的类的名称 |
| forward | org.apache.struts.action.actionforward | 封装actionforward对象信息的类的名称 |
| locale | true | 为true,将在用户会话中存储一个本地对象 |
| mapping | org.apache.struts.action.actionforward | 封装actionmapping信息的类的名称 |
| maxfilesize | 250m | 上传文件的最大尺寸 |
| multipartclass | org.apache.struts.action.actionforward | 处理多部分请求的类的名称 |
| nocache | false | http标头是否要设置为禁止缓寸 |
| null | true | 设置为true,对于无效的信息关键字将返回null |
| tempdir | 作为一个servlet参数提供给程序的工作目录 | 处理下载文件是使用的临时工作目录 |
| validate | true | 是否使用新格式的配置文件 |
| vallidating | true | 是否对配置文件进行有效性分析 |
大多数情况下,标准的servlet就能够满足用户需要。
第一次收到特定请求的uri时,actionservlet将适当的action类进行实例化,然后actionservlet在action类实例中以servlet为变量名存储一个引用。当被实例化后,action类会被暂存以备再用。
错误处理
struts提供了两个类来处理错误:actionerrors和actionerror,它们都扩展org.apache.struts.action。actionerrors保存着actionerror对象的集合,其中每一个代表了独立的错误信息。每个actionerror都包含了关键字,能够映射到资源文件中存储的错误信息,而这个资源文件是在actionservlet初始化参数中指定的。 四、struts的运行
可通过以下的步骤在我们自己的应用程序中使用struts:
1、将struts目录的lib/struts.jar拷贝到web应用的web-inf/lib目录。
2、将struts目录的lib/struts*.tld拷贝到web应用的web-inf目录。
3、修改web应用目录的web-inf/web.xml文件,增加一个<servlet>元素来定义controller servlet,增加一个<servlet-mapping>元素来建立uri请求与servlet的对应关系。可以参照struts例子中的web-inf/web.xml文件来了解详细的语法要求。
4、修改web应用目录的web-inf/web.xml文件,使之包含以下的tag库定义:
| <taglib> <taglib-uri>/web-inf/struts.tld</taglib-uri> <taglib-location>/web-inf/struts.tld</taglib-location> </taglib> <taglib> <taglib-uri>/web-inf/struts-bean.tld</taglib-uri> <taglib-location>/web-inf/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/web-inf/struts-logic.tld</taglib-uri> <taglib-location>/web-inf/struts-logic.tld</taglib-location> </taglib> |
5、创建一个web-inf/action.xml文件来定义我们的web应用的action映射关系。可以参照struts例子中的action.xml文件来了解详细的语法要求。
6、在使用struts tag库的jsp网页中加入以下tag库定义:
| <@ taglib uri="/web-inf/struts.tld" prefix="struts" %> <@ taglib uri="/web-inf/struts-bean.tld" prefix="bean" %> <@ taglib uri="/web-inf/struts-logic.tld" prefix="logic" %> |
7、最后,在编译我们的web应用的java程序时,不要忘了在classpath中包含struts.jar文件。
五、struts优缺点
优点:
struts跟tomcat、turbine等诸多apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。除此之外,struts的优点主要集中体现在两个方面:taglib和页面导航。taglib是struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的jsp开发者而言,除了使用jsp自带的常用标记外,很少开发自己的标记,或许struts是一个很好的起点。
关于页面导航,我们认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
缺点:
taglib是struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱我们网页编写的习惯,但是,当我们习惯了它时,我们会觉得它真的很棒。struts将mvc的controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。毫无疑问,要理解 struts 必须接受一定的培训。随着变化的不断加入,这有时会令人很沮丧。
struts从产生到现在还不过3-4年时间,就已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的j2ee mvc实现方式,如果我们的系统准备采用j2ee mvc架构,那么,不妨考虑一下struts。
struts 是一种基于 web 的 mvc 解决方案,所以必须用 html、jsp 文件和 servlet 来实现它,struts 需要支持 jsp 1.1 和 servlet 2.2 规范的 servlet 容器。学习、理解和掌握struts是我们每个基于j2ee软件开发人员一门必修的课程,也是我们对企业j2ee技术应用的进一步深化。
闽公网安备 35060202000074号