Struts

MVC结构

在Struts中，已经由一个名为ActionServlet的Servlet充当 控制器（Controller）的角色，根据描述模型、视图、控制器对应关系的struts-config.xml的配置文件，转发视图（View）的请求，组装响应数据模型（Model）。在MVC的 模型（Model）部分，经常划分为两个主要子系统（系统的内部数据状态与改变数据状态的逻辑动作），这两个概念子系统分别具体对应Struts里的ActionForm与Action两个需要继承实现超类。在这里，Struts可以与各种标准的数据访问技术结合在一起，包括Enterprise Java Beans（EJB）, JDBC与JNDI。在Struts的视图（View）端，除了使用标准的JavaServer Pages（JSP）以外，还提供了大量的标签库使用，同时也可以与其他表现层组件技术（产品）进行整合，比如Velocity Templates，XSLT等。通过应用Struts的框架，最终用户可以把大部分的关注点放在自己的业务逻辑（Action）与 映射关系的配置文件（struts-config.xml）中。

发展历程

在Java EE的Web应用发展的初期，除了使用Servlet技术以外，普遍是在JavaServer Pages（JSP）的源代码中，采用HTML与Java代码混合的方式进行开发。因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起，都给前期开发与后期维护带来巨大的复杂度。为了摆脱上述的约束与局限，把业务逻辑代码从表现层中清晰的分离出来，2000年，Craig McClanahan采用了MVC的设计模式开发Struts。后来该框架产品一度被认为是最广泛、最流行JAVA的WEB应用框架。
2006年，WebWork与Struts的Java EE Web框架的团体，决定合作共同开发一个新的，整合了WebWork与Struts优点，并且更加优雅、扩展性更强的框架，命名为“Struts 2”，原Struts的1.x版本产品称为“Struts 1”。Struts项目并行提供与维护两个主要版本的框架产品——Struts 1与Struts 2。
在2008年12月，Struts1发布了最后一个正式版（1.3.10），而2013年4月5日，Struts开发组宣布终止了Struts 1的软件开发周期。