1.struts1的action是单例模式且必须是线程安全的,action的一个实例处理所有请求.
struts2的action对象为每个请求产生一个实例,没有线程安全问题.struts1的action依赖于servlet api,struts2的action不依赖与容器,允许脱离容器单独测试.2.struts1的execute方法依赖于servlet api,使得测试要依赖于容器.struts2的action可以通过初始化,设置属性,调用方法来测试,依赖注入支持是测试更容易.struts1试用ActionForm对象捕获输入,普通JavaBean不能捕获输入.动态bean可以作为ActionForm的选择,但是是在重复描述已经存在的Javabean.struts2直接试用action属性作为输入属性,消除了对第二个输入对象的需求.也支持ActionForm模式,这种ModelDriven特性简化了tiglib对POJO对象的应用.3.struts1整合的JSTL,试用JSTL EL,EL有基本对象图遍历功能,但是对集合和索引属性的支持很弱struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--Object Graph Notation Language(OGNL)4.struts1试用标准jsp机制把对象绑定到页面中来访问struts2试用ValueStack技术,允许试用一系列名称相同但类型不同的属性重用页面5.struts1的ActionForm通常都是String类型,试用BeanUtils进行类型转换struts2使用OGNL进行类型转换,提供基本和常用对象的转化器.6.struts1支持在ActionForm的validate方法中手动效验,或者通过validator扩展效验struts2支持通过validate方法和XWork效验框架来进行效验7.struts1支持每个模块有单独的request生命周期,但是模块中的所有action必须共享相同的生命周期struts2支持通过拦截器interceptor stacks为每个action创建不同的生命周期