Action类:Struts 1要求Action类继承一个抽象基类,使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可实现其它接口。
线程模式:Struts 1 Action是单例模式并且必须是线程安全的,仅有一个Action的一个实例来处理所有的请求。 Struts 2 Action为每一个请求产生一个实例,没有线程安全问题。
Servlet依赖:Struts 1 Action依赖于Servlet API。Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。
可测性:测试Struts 1 Action的一个主要问题是execute方法暴露了Servlet API。Struts 2 Action可以通过初始化、设置属性、调用方法来测试。
捕获输入:Struts 1使用ActionForm对象捕获输入。Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。
表达式语言:Struts 1 整合了JSTL。因此使用JSTL EL。 Struts 2可以使用JSTL,但是也支持更强大、更灵活的表达式语言OGNL。