Struts发展至今已经成为一个高度成熟的框架,但是在学习Struts之前需要了解一下Struts的发展历史。
Struts相比其他框架的发展经历有着差异性,比如说现阶段广泛使用的hibernate4,他相比较前几代则没有什么性质上的差异,也可以说是技术上的差异,版本号的提升只是对bug的修改和功能上的添加。但Struts2和Struts1确不同,确切来说Struts1和Struts2从技术上来讲没有任何关系。
在最早Struts1的架构是基于Servlet之上的,发展到成熟的版本为Struts1.2,但是既然说了是基于servlet,就有了一个不可忽略的问题,那就是servlet线程是不安全的,那么Struts1基于线程不安全的Servlet之上,自然也是处于一种线程不安全的状态。在这期间便有了由Rickard Oberg开发的WebWork,WebWork不同于Struts1,它的架构是基于filter之上,是线程安全的。相比较看似很火,但有着诟病的Struts1来讲,明显WebWork在技术实现上更胜一筹。但WebWork的影响力确没有办法跟如日中天的Struts1比。在这样的前提下,就有了团队合作的一个版本,Struts2,它使用了全新架构,基于filter,单从线程来讲完全摆脱了Struts1的线程安全问题。
也就是说Struts2其实和Struts1没有太多关联,它的前身应该是webwork。是在webwork的核心基础包Xwork之上,整合了Struts1,在当时来说,Struts2可以说是结合了Struts1的影响力和Webwork的先进技术。去查阅各个版本Struts2的jar包不难发现xwork的身影。
所以从技术方面来说Struts2相比前代不是单纯的技术升级,它更像是Webwork的升级版。