对于早些年前使用Struts框架的程序员们来说,从Struts1到Struts2的巨大变化很多人都感觉到有些奇怪。因为一般来说,版本的升级,代码的迭代,是在前一代的基础上,增加新的功能的。而Struts12的变化则非常的大。最基础的,Struts1是基于Java Servlet来实现的,而Struts2则是基于Filter来实现的。类似的还有Struts1的Action是单例的,而Strut2则是多例的。
那么为什么从1版本到2版本会发生这么大的变化呢?原因在于,Struts1和Struts2本质上并不是一个东西。
这个事情要从Struts1的作者,Java领域大神Craig Mcclanahan说起。这位大神是 servlet2.2,2.3,JSP1.1规范制定专家组的成员之一。同时他也是 Tomcat 的 servlet 容器 Catalina 的架构师。可以说是Java历史上的一位大牛了,就是下图这哥们。
Craig写完了Struts1之后,意想不到的火热,很多人都在用,但是这位有技术洁癖的大神却开始苦恼了起来,因为因为Struts1当时虽然很好用,但是它基于的架构和所有的功能构建都是在Servlet之上(这里指的不是Servlet技术,而是具体的Servlet类),而Servlet是线程不安全的,所以导致整个Struts1框架也是处于一种线程不安全状态,使得很多的功能无法实现。
他就很苦恼这个问题,也一直在研发新的架构。但是他苦恼的同时,另外一个叫OpenSymphony的组织也非常苦恼,因为他们也开发了一款前端处理框架叫Webwork,但是因为他们是后来人,名气不大,虽然他们看到了Struts的缺陷,但是当时满大街用的都是Struts1框架,他们辛辛苦苦开发出的框架根本没人用,推广不出去。
他们就想了一个办法,通过各种方式找到了Craig一起合作,两者交流之后一拍即合,于是有了Struts2框架。所以Struts2的前身是WebWork,完全脱离了Struts1的路径。
两者基本是两个不同的框架,当然后来Craig也把自己之前想要在Struts1中实现的想法带入到了Struts2中来,所以最终的Struts2框架是一个基于Webwork的强强联手的框架,整合了Struts1和WebWork的优点。
因此,这两个版本之间的差异才会那么大。
喜欢本文的话,欢迎关注活在信息时代哦:)
留言与评论(共有 0 条评论) “” |