当前位置: 代码迷 >> Web前端 >> STRUTS-struts1、struts2那点差异
  详细解决方案

STRUTS-struts1、struts2那点差异

热度:599   发布时间:2012-06-26 10:04:13.0
STRUTS--struts1、struts2那点区别
struts1、struts2有什么区别:

以下在网上搜集的
1 action实现类方面的对比:
struts1要求action类继承一个抽象基类,是使用抽象类编程而不是接口;struts2 action类可以实现一个action接口,也可以实现其他接口,使可选和定制的服务成为可能。struts2提供一个ActionSupport基类 去实现常用的接口。但即使是这个action接口也不是必须实现的,只要是一个包含execute方法的pojo类,都可以用作struts2的action 。

2 线程方面:
struts1 是单例模式并且必须是线程安全的,struts2 action为每一个请求产生一个实例,因此没有线程安全问题。

3 servlet依赖方面:
struts1 action依赖servlet API;struts2 action不在依赖于servlet api,从而允许action脱离web容器运行,降低测试难度。

4 表达式语言方面:
struts1 整合了JSTL ,struts2也可以使用JSTL,而且整合了一种更强大和灵活的表达式语言:OGNL 。

5 绑定值到视图的对比:
struts1使用标准JSP机制把对象绑定到视图页面;struts2使用“ValueStack”技术,使标签库能访问值,而不需要把对象和视图页面绑定到一起。

6 类型转换的对比:
Stuts1的actionForm的属性通常都是String类型,struts1使用comments-beanutils进行 类型转换,每个类一个转换器,转换器是不可配置的;struts2使用OGNL进行类型转换,支持基本数据类型和常用对象之间的转换。

7 数据校验对比:
struts1支持在actionFrom重写validate方法中手动校验,或者通过整合Commons alidator框架来完成数据校验。struts2支持重写validate方法进行校验,也支持整合xwork校验框架进行校验。

struts2处理流程:
1、加载类(FilterDispatcher)   
2、读取配置(struts配置文件中的Action)   
3、派发请求(客户端发送请求)   
4、调用Action(FilterDispatcher从struts配置文件中读取与之相对应的Action )   
5、启用拦截器(WebWork拦截器链自动对请求应用通用功能,如验证)   
6、处理业务(回调Action的execute()方法)   
7、返回响应(通过execute方法将信息返回到FilterDispatcher)   
8、查找响应(FilterDispatcher根据配置查找响应的是什么信息如:SUCCESS、ERROR,将跳转到哪个jsp页面)   
9、响应用户(jsp--->客户浏览器端显示)   
10、struts2标签库(相比struts1的标签库,struts2是大大加强了,对数据的操作功能很强大)
  相关解决方案