struts1和struts2的对比
a、Action类:
struts1要求Action类继承一个基类。struts2 Action要求继承ActionSupport基类
b、线程模式
struts1 Action是单例模式的并且必须是线程安全的,因为仅有一个Action的实例来处理所有的请求。
单例策略限制了Struts1 Action能做的事情,并且开发时特别小心。Action资源必须是线程安全的或同步的。
struts2 Action为每一个请求产生一个实例,因此没有线程安全问题。(说以struts2每次请求set数据时候不用担心会是前面的数据)
c、Servlet依赖
struts1 Action依赖于Servlet API,因为当一个Action被调用时HttpServletRequest和HttpServletResponse被传递给execut方法。
struts2 Action不依赖于容器,允许Action脱离容器单独测试。如果需要,Struts2 Action仍然可以访问初始的Request和Response。(解偶)
但是,其他的元素减少或者消除了直接访问HttpServletRequest和HttpServletResponse的必要性。
d、可测性
测试struts1 Action的一个主要问题是execute方法暴露了Servlet API(这使得测试要依赖于容器)。一个第三方扩展:struts TestCase
提供了一套struts1的模拟对象来进行测试。
Struts2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”也使得测试更容易。