struts1和struts2的区别
来源:互联网 发布:mac mpv 安装 编辑:程序博客网 时间:2024/06/07 02:08
struts1的缺点
struts1主要有三个缺点:
(1)支持的表现层技术比较单一;
(2)和servlet api严重耦合,难于测试;
(3)属于嵌入式设计,影响代码重用。
struts2和struts1的区别
struts2是在struts1和webwork的基础之上发展起来的。它的核心其实是webwork。
struts2基本上改进了上面struts1的缺点。
他们的区别主要有以下几个方面:
ACTION类
struts1要求Action类扩展自一个抽象基类,他的一个共有的问题就是面向抽象类编程而不是面向接口编程;
struts2的Action类实现了一个ACTION接口,连同其他的接口一起来实现可选择和自定义的服务。当然struts2的Action接口并不是必须的。任何execute()方法的POJO对象都可以被当做struts2的Action对象来使用。
线程模型
struts1的action类是一个单例类,因为只有一个实例来控制所有的请求,单例类策略造成了一定的限制。并且给开发者带来了额外的烦恼。ACTION资源必须是线程安全或者同步的。
struts2的action对象为每一个请求都实例化对象,所以没有线程安全的问题。
servlet依赖
struts1的action类依赖于servlet API,当action被调用时,以httpservletrequest和httpservletresponse作为参数传给execute方法。
struts2的action和容器无关,servlet上下文被表现为简单的maps,允许action被独立的测试,struts2的action可以访问最初的请求,但是,应该尽可能的避免其他元素直接访问httpservletrequest和httpservletresponse。
易测性
测试struts1的主要问题是execute方法暴露了servlet API,这使得测试要以来容器。
struts2的action可以通过初始化、设置属性和调用方法来测试。依赖注入色支持也使得测试变得更加简单。
捕获输入
struts1使用ACTIONFORM对象来捕获输入。和action一样,所以actionform必须扩展基类,因为其他的javabean不能作为actionform使用,开发者经常创建多余的类来捕获输入。
struts2直接使用ACtion属性作为输入属性,消除了对第二个输入对象的需求,Action属性能够通过web页面上的taglibs访问。struts2也支持actionform模式,简化了taglib对POJO输入对象的引用。
表达式语言
struts1整合了JSTL,所以使用JSTL的表达式语言,表达式语言支持基本的图形对象移动,但是对集合和所以属性的支持很弱。
struts2使用JSTL,但是ahi支持一个更强大的OGNL。
类型转换
struts1的Actionform属性经常都是string,struts1使用common-beanutils来进行类型转换,转换每个类,而不是对每个实例进行配置。
struts2内置了转换器,对于日期、整数或者浮点数等类型会自动调用相对于的转换器进行类型转换。
视图支持
struts1只支持JSP作为其表现层技术,没有提供对目前流行的freemaker/velocity的支持;
struts2支持freemaker/velocity等,配置简单。
- Struts1和Struts2的区别
- struts1和struts2的区别
- Struts1和Struts2的区别
- struts1和struts2的区别
- Struts1和Struts2的区别
- Struts1和Struts2的区别
- struts1和struts2的区别
- struts1和struts2的区别
- Struts1和Struts2的区别
- struts1和struts2的区别
- Struts1 和 struts2的区别
- struts1和struts2的区别
- Struts1和Struts2的区别
- struts1和struts2的区别
- Struts1和Struts2的区别
- struts1和struts2的区别
- Struts1 和Struts2的区别
- struts1和struts2的区别
- 单例模式
- CentOs下安装Chrome浏览器【看完有惊喜,facebook、youtube、推特想到什么】
- 百度地图api错误编码errorcode 162
- GDB调试带参数程序
- (一):JMS基础
- struts1和struts2的区别
- (二):简单的JMS例子
- 第五讲:类的组合
- WPF动画旋转(3轴同时旋转问题)
- 【IDE-Visual Studio】编译出错(chenlu-2):传参时访问私有的构造函数
- (三):MessageListener
- 关于 javax.naming.NameNotFoundException: UserBean not bound
- com.mysql.jdbc.ServerPreparedStatement.setCharacterStream(ILjava/io/Reader;J)V
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'infoContentA