学过struts 2 ,但是在工作的时候一直接触struts 1 ,最近时间比较多久总结一下这两者之间的区别
1、action类
struts1 要求继续一个抽象的Action 类,所以struts1 是使用抽象类的编程而不是接口是编程
struts 2 提供一个ActionSuport接口,你可以实现它也可以实现
2、线程安全
struts 1使用单例模式并且线程安全的,一个实例处理所有的请求
struts 2 每个请求都会产生一个实例,所以线程不安全的
3、对servlet的依赖
struts1 严重的依赖servlet的API,Action被调用时HttpServletRequest和HttpServltResponse被传入Action方法
struts2 不依赖与容器,可以单独进行测试,如果需求使用HttpServletRequest和HttpServltResponse的时候也
可以通过ServletActionContext
4、可测试性
struts1 execute 使用了servlet的api ,虽然可以借助于TestCase来提供对象,但是也比较麻烦
struts 2 是要实现了public String execute()这个方法就可以了,这样Action可以脱离servlet进行测试
5、接受页面数据输入
struts1 是使用ActionForm来接受输入,所有的actionForm都必须继承基类,javabean不可以当做actionForm使用
struts2 直接使用action的属性来接受数据,同时也支持actioForm的模式
6、表达式语言
struts1 整合了jstl语言,它使用的是jstl语言
struts2 使用JSTL,但是框架也支持更大和更灵活的表达式,叫做“对象图形符号语言”(OGNL)
7、将值绑定在页面上
struts1 是标准的jsf绑定页面的属性和上下文
struts2 使用了valueStuck技术标签库可以不用链接你的视图到对象的表现类型访问值
8、类型转换
struts 1 ActionForm的属性大部分都是String ,Struts 1使用Commons-Beanutils类型转换。转换每一个类,不是每一个实例配置。
struts 2 使用ONGL转换,框架包含转换器基本的和共同的对象类型和原始类型。