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。
闽公网安备 35060202000074号