Apache Struts是一个用来开发Java web应用的开源框架。最初是由创始人,程序员Craig R. McClanahan开发的,在这之后Apache软件基金会于2002年进行接管。Struts提供了一个非常优秀的架构使得组织基于HTML格式与Java代码的Jsp与Servlet应用开发变得非常简单。拥有所有Java标准技术与Jakarta辅助包的struts1建立了一个可扩展的开发环境。然而,随着web应用需求的增长,struts的表现不再坚稳,需要随着需求而改变。这导致了Struts2的产生,拥有像AJAX,快速开发,扩展性这类的特性使得Struts2更受开发人员的欢迎。
Struts2是一个基于MVC结构的组织良好的框架。在MVC结构中,模型意味业务或者数据库代码,视图描述了页面的设计代码,控制器指的是调度代码。所有这些使得struts成了开发Java应用程序不可或缺的框架。但随着像Spring, Stripes 和 Tapestry这类新的基于MVC的轻量级框架的出现,struts框架的修改已属必然。于是,Apache Struts与另一个J2EE的框架,OpenSymphony的webwork合并开发成了一个集各种适合开发的特性于一身的先进框架,这定然会收到开发人员和用户的欢迎。
Struts2涵盖了struts Ti与webwork的特征,它主张高水平的应用应该使用webwork框架中的插件结构,新的API,AJAX标签等特性,于是struts2社区同webwork小组在webwork2中融入了一些新的特性,这使webwork2在开源世界中更加超前。后来webwork2更名为struts2.从此struts2成了一个动态的可扩展的框架,应用于从创建到配置、维护的完整的应用程序开发之中。
Webwork是一个web应用开发框架,已经包含在struts的2.0发布中了。它有一些独到的观点和构想,像是他们认为与其满足现有的Java中web API的兼容性,倒不如将其彻底替换掉。Webwork开发时重点关注开发者的生产效率和代码的简洁性。此外完全依赖的上下文对webwork进行了封装。当致力于web程序的工作时,框架提供的上下文将会在具体的实现上给予开发人员帮助。
同时,xwork在配置和工厂实施管理上提供了一种机制,这就是依赖注入。