Struts与Struts2的区别

struts1和struts2区别:
1) 风险控制方面,struts1应用广泛,开发风险小成本低。
2) Action实现类方面,struts1要求继承Action抽象类。而struts2即可以实现Action接口,也可以实现其它接口,使定制服务成为可能。
3) 线程安全方面,struts1是单例模式需要为其保让线程安全。struts2为每个请求产生单独的实例,没有线程安全的问题。
4) Servlet依赖方面,struts1由于Action的execute()方法需要HttpServletRequest和HttpServletResponse,对ServletAPI构成依赖。而Struts2的Action由POJO(Plain Old Java Object简单的Java对象)组成,使得Action可以独立测试。如果需要,Struts2的Action仍可以访问HttpServletRequest和HttpServletResponse。
5) 测试方向,Struts1的Action测试依赖Web容器,要脱离Web容器测试则需要使用StrutsTestCase。Struts2可以脱离Web容器测试。
6) 封装请求参数方面,Struts1使用ActionForm封装用户请求,并且需要继承ActionForm基类。缺点是需要开发大量的ActionForm。Struts2直接使用Action属性封装用户请求,避免大量开发ActionForm。Struts也提供了ModelDriven模式,让开发人员用单独的Model封装用户请求。Model是一个无需继承任何基类的POJO,降低了代码污染。
7) 表达语言方面,Struts1整合了JSP标准标签库。Struts2即可以使用JSTL,也可以使用OGNL(Object Graph Notation Language对象图符号语言)。
8) 绑定视图方面,Struts1将对象绑定到视图,Struts2使用ValueStack技术,使标签库能直接访问值,不需要对象和视图的绑定。
9) 数据校验方面,Struts1支持重写ActionForm的validate()方法和整合Commons alidator框架来完成数据校验。Struts支持重写ActionForm的validate()方法和整合XWork校验框架进行校验。
10) Action执行控制和生命周期,Struts1每个模块对应一个处理请求,但所有模块中的Action必需共享生命周期。Struts2通过拦截器堆栈(InterpretorStacks)为每个Action创建不同的生命周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值