主要从Action类,线程模式,Servlet依赖,捕获输入,以及表达式语言等五个方面来进行比较。
1.Action类
struct1要求Action类继承一个抽象基类;struct2要求Action类可以实现一个Action接口,也可以实现其他接口。
2.线程模式
Struct1是单例设计模式并且必须是线程安全的,因为仅有一个Action的实例来处理所有请求。而Struct2 为每一个请求产生一个实例,因此没有线程安全问题。
3.Servlet依赖
Struct1 Action依赖于Servlet API,因为当一个ACtion被调用时HttpservletRequest和HttpServletResponse被传递给execute方法。
Struct2 Action不依赖于容器,允许Action脱离容器单独被测试。
4.捕获输入
Struct1 使用ActionForm对象捕获输入,所有的Actionform必须继承一个基类。而Struct2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。
5.表达式语言
struct1 整合了jstl El表达式。而Struct2不仅可以使用jstl,也支持ognl表达式语言。