17

我想知道 Struts 1.x 和 Struts 2.x 的区别

4

2 回答 2

18

主要区别在于,在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 中的动作类中进行,这是一种更简单的方法。

于 2010-07-12T12:25:09.587 回答
14

这是一个完全不同的 Web 框架...... Struts2 基本上是旧的 Webwork。

一些区别:

  • Struts2 使用 POJO,不再使用 ActionForm。来自请求的所有属性都填充在“标准”Java 类中。
  • Struts2 动作不与 Servlet API 耦合,它们不接收 HttpServletRequest 和 HttpServletResponse 作为参数。此外,它们是有状态的(Struts 1 动作是无状态的)。
  • Struts2 有很多增强功能,比如 Interceptor API,还有很多集成。
  • 配置完全不同。

我建议您“淘汰” Struts1,转而使用现代 Web 框架。

于 2009-04-27T12:43:25.583 回答