1.对于struts2的action无需实现任何父类接口,无需继承任何struts的基类,完全是一个pojo,阴齿具有很好的代码复用性。
Action类无需与Servlet API耦合,因此进行单元测试非常简单。
Action类中excute方法仅返回一个字符串作为处理结果,该处理结果可以映射到任何的视图,甚至是另一个action。
struts2与struts1的对比:
1.在Action实现类方面的对比:对于Struts1需要继承一个抽象基类,它比较严重的问题是面向抽象类编程而不是接口,而struts2不许实现任何基类或者接口。只需要一个包含excute方法的pojo类即可。
2.线程模式方面的对比 :struts1的Action是单例模式并且是线程安全的。而struts2的action对象为每一个请求产生一个实例对象。
3.servlet依赖放卖弄的对比:struts1的excute方法中有httpservletRequest和httpServletResponse。而struts2没有。
4.可测试方面的对比:struts1的测试要依赖第三方扩展struts TestCase ,而struts2可以通过初始化,设置属性,调用方法来实现。
5.表达式语言的对比:struts1采用的jstl,struts2也可以用,但它整合一种更强大和灵活的表达式语言(ognl)。
6,数据校验的对比:struts1支持在actionForm中重写validate,也可以通过整合Commons alidator蓝完成数据校验,而struts2只需通过重写validate方法即可。