我想知道 Struts 1.x 和 Struts 2.x 的区别
2 回答
主要区别在于,在Struts1.x中,请求直接进入 servlet,而在Struts2.x中,请求和响应通过拦截器或过滤器的堆栈进行。常规逻辑可以放在过滤器类中,开发人员可以专注于业务逻辑。除此之外,目录结构也有所不同。
最好从主题上了解Struts1.x 和 Struts2.x之间的区别。这是http://www.geekinterview.com/question_details/64360的引用:
1. 动作类
在Struts 1.x中,action 类应该扩展 Action(或 DispatchAction)类,并且 execute 方法具有参数数量和 ActionForward 返回类型,但在struts 2.x中,action 类也可以是简单的 pojo,其 execute 方法只返回一个没有任何输入参数的字符串。
2. Servlet 依赖
Container 不处理Struts2.x,与Struts1.x不同,Actions 作为请求/响应对,struts2.x动作仍然可以访问原始请求和响应。
3. 获取输入
- 在Struts1.x中,表单 bean 用于定义属性、getter 和 setter,而在struts2.x中, getter/setter 是在动作类本身中定义的。
- Struts1.x表单bean 类必须扩展ActionForm 或ValidatorForm,但Struts2.x bean 也可以是POJO。
4. 可测试性
- 在 Struts1.x 中,execute() 方法公开了用于测试的 servlet API。
- Struts2.x Dependancy Injection 被用来简化测试过程。
5. 表达语言
- Struts1.x JSTL作为其表达语言,而Struts2.x使用OGNL(Object Graphic Notation Language)作为其表达语言,比JSTL强。
- Struts2.x也可以使用 JSTL。
6.类型转换
- 在Struts1.x中,属性几乎是字符串形式,转换器是每个类不可配置的。
- Struts 2.x使用 OGNL 进行类型转换
7. 验证
服务器端验证在 Struts2.x 中的动作类中进行,这是一种更简单的方法。
这是一个完全不同的 Web 框架...... Struts2 基本上是旧的 Webwork。
一些区别:
- Struts2 使用 POJO,不再使用 ActionForm。来自请求的所有属性都填充在“标准”Java 类中。
- Struts2 动作不与 Servlet API 耦合,它们不接收 HttpServletRequest 和 HttpServletResponse 作为参数。此外,它们是有状态的(Struts 1 动作是无状态的)。
- Struts2 有很多增强功能,比如 Interceptor API,还有很多集成。
- 配置完全不同。
我建议您“淘汰” Struts1,转而使用现代 Web 框架。