什么是Struts 1.x和Struts 2.x之间的区别

Ash*_*iya 15 struts struts2 java-ee struts-1

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

Jit*_*dra 16

主要的区别在于,在Struts1.x中,请求直接转到servlet,而在Struts2.x中,请求和响应通过拦截器或过滤器堆栈来实现.常规逻辑可以放在Filter类中,开发人员可以专注于业务逻辑.除此之外,目录结构也存在差异.

最好先了解Struts1.x和Struts2.x之间的区别.以下是http://www.geekinterview.com/question_details/64360的引用:


1.行动类

Struts 1.x中,动作类应该扩展Action(或DispatchAction)类,并且execute方法具有多个参数和一个ActionForward返回类型,但是在struts 2.x中,动作类也可以是简单的pojo,其执行方法只返回一个字符串没有任何输入参数.


2. Servlet依赖性

容器不治疗Struts2.x,不像的Struts1.x,操作作为请求/响应夫妇和struts2.x行动仍然可以访问原来的请求和响应.


3.获取输入

  • Struts1.x中, bean用于定义属性,getter和setter,在struts2.x中, getter/setter在action类本身中定义.
  • 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(对象图形表示法语言)作为其表​​达语言,它比JSTL强大.
  • Struts2.x也可以使用JSTL.

6.类型转换

  • Struts1.x中,属性几乎是String形式,转换器是每个类,不可配置.
  • Struts 2.x使用OGNL进行类型转换

7.验证

服务器端验证是在Struts2.x中的操作类中进行的,这是一种更简单的方法.


raz*_*nha 14

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

一些差异:

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

我建议你"退休"Struts1,转而使用现代Web框架.