struts1与struts2的区别

 1.Action类

Struts1要求Action类要扩展自一个抽象基类。Struts1的一个共有的问题是面向抽象类编程而不是面向接口编程。

Struts2的Action类是实现了一个Action接口。

2.线程模型

Struts1的Action类是单例类,因为只有一个实例来控制所有的请求。Action资源必须是线程安全或者同步。

Struts2的Action对象为每一个请求都实例化对象,所以没有线程安全问题。

3.Servlet依赖

Struts1的Action类依赖于ServletAPI,当Action被调用时,以HttpServletRequest和HttpServletResponse作为参数传给execute()方法。

Struts2的Action和容器无关。

4.表达式语言

Struts1整合了JSTL,所以使用JSTL的表达式语言。

Struts2使用JSTL,但是还支持一个更强大和灵活的表达式语言OGNL。

5.类型转换

Struts1的ActionForm属性经常都是String。Struts1使用Commons-Beanutils来进行类型转换。转换每一个类,而不是为每一个实例进行配置。

Struts2内置了转换器,对于日期,整数或浮点数等类型会自动调用相应的转换器进行转换,为编程带来极大的方便。

6.视图支持

Struts1只支持JSP作为其表现层技术,没有提供对目前比较流行的FreeMarker,Velocity等表现层的支持。

Struts2提供了对FreeMarker,Velocity等模板技术的支持,并且配置很简单。

7.捕获输入

Struts1使用ActionForm对象来捕获输入。和Action一样,所用ActionForm必须扩展基类。

Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。

猜你喜欢

转载自endless.iteye.com/blog/1393812