线程模式:
Struts1 Action是单例模式存在线程安全问题。
Struts2 Action是多例模式不存在线程安全问题。因为每一个请求都会产生一个实例。
依赖:
Struts1的Action依赖于Servlet的API,execute方法要在容器中执行。因为当一个Action被调用时会执行时request和response会被传递给servlet的execute方法。
Struts2的Action不依赖于容器,execute可以脱离容器进行。如果需要,Struts2的Action仍然可以访问request和response。
校验:
Struts1通过在ActionForm的validate方法或Validator的扩展来校验。
Struts2通过validate方法和XWork校验框架来进行校验。
Action实现:
Struts1要求Action类继承Action或DispatchAction。
Struts2的Action类一般实现ActionSupport,也可实现其他接口来应用常用的功能。
Action生命周期:
Struts1每个模块中的所有Action有相同的生命周期。
Struts2每一个Action创建不同的生命周期。
表达式语言:
Struts1整合了JSTL,因此使用JSTL和EL。
Struts2可以使用JSTL和OGNL表达式。