Struts框架是使用时间长、使用广泛的开源框架,从Struts1到Struts2,为开发者提供了优秀的设计思想。
1、Struts1框架
Struts1是世界上好个发布的MVC框架。从过去的岁月来看,Struts1拥有其他框架不可比拟的优势,不管是市场占有率,还是所拥有的开发人群。
对于Struts1框架而言,因为它与JSP/Struts1耦合非常紧密,因而导致了许多不可避免的缺陷,随着Web应用的逐渐扩大,这些缺陷逐渐变成制约Struts1发展的重要因素。下面简要列举Struts1中存在的种种缺陷:
支持的表现层技术单,仅支持JSP作为表现层技术。
与Servlet API严重耦合,难于测试。
代码严重依赖于Struts1 API,属于侵入式设计,导致了较低的代码复用。
2、WebWork框架
WebWork虽然没有Struts1那样赫赫有名,但也是出身名门,它来自另外个优秀的开源组织——opensymphony。WebWork采用了种松藕合的设计,让系统的Action不再与Servlet API耦合,使单元测试更加方便,这对于Struts1存在的那些先天性不足而言,显得更加优秀。WebWork的特性包括:
用于处理或代理请求的分发器(Dispatcher);
支持多种视图技术(JSP、Velocity、JasperReports、XML、FreeMaker)的结果类型;
个小而强大的JSP标签库和Velocity宏定义;
分发器调用XWork活动来访问和操作模型(Model),并为视图显示模型数据提供方便的途径。
3、Struts2框架
面对大量新的框架蓬勃兴起,Struts1也开始了血液的更新。目前,Struts已经分化成两个框架:好个框架就是传统Struts1和WebWork结合后的Struts2框架;另外个框架是Shale,这个框架远远超出了Struts1原有的设计思想,与原有的Struts1的关联很少,使用了全新的设计思想。而现在更为大家所接受的框架就是Struts2框架,这和它的取名很有关系吧。
Struts2以WebWork优秀的设计思想为核心,吸收了Struts1的部分优点,建立了个兼容WebWork和Struts1的框架。Struts2的目标是希望可以让原来使用Struts1、WebWork的开发人员,都可以平稳过渡到使用Struts2框架。
Struts2的优点概括如下:
简化设计,类与类之间是松散的耦合;取消了ActionForm类,Action可以直接获得用户参数。
使用OGNL进行参数传递,大大简化了开发人员在获取各种作用域中数据时的代码量。
强大的拦截器功能,并且拦截器是可配置与重用的,可以将些通用的功能如登录验证、权限验证等置于拦截器中以简化编码。
易于扩展的插件机制。在Struts2中添加扩展时只需将所需的Jar包放到WEB—INF/lib文件夹中,在struts.xml中做些简单的设置就可以实现扩展。
易于测试。Struts2的Action都是简单的POJO,这样可以方便的对Struts2的Action编写测试用例,大大方便了Java Web项目的测试。