struts1与struts2的区别

本文对比了Struts1和Struts2在Action类、线程模型、Servlet依赖、表达式语言、类型转换、视图支持及输入捕获等方面的差异。Struts2在多个方面进行了改进,如采用接口而非抽象类、每个请求实例化Action对象解决线程安全问题、支持OGNL表达式语言等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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属性作为输入属性,消除了对第二个输入对象的需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值