Struts2和Struts1对比
2015-12-23 12:56
507 查看
struts1与struts2有很多相同和不同之处,在这篇博客中,主要总结一下struts1与struts2 的不同之处(宏观上)。
Action类
Struts1中的Action需要依赖ServletAPI
Struts2中的Action可以不用依赖Servlet API
可测试性
Struts1 中的Action测试性不好,因为需要容器支持,因为在Action依赖于servletAPI
Struts2的Action测试性好,可以直接写一个单元测试完成,因为Struts2的Action是一个POJO对象
ActionForm方面
Struts1 手机数据通常使用actionForm,而actionform还需要继承,使actionform的复用率降低,另外项目非常大会建立很多actionform给维护带来工作量,但也有好处数据的收集和控制进行了很好的分离
Struts2:可以不适用actionform来手机数据,直接让Action来手机数据,但也可以采用类似actionform的方法来收集数据,Struts2采用了ModelDriven的方式来支持类似Struts1的actionform方式,所以Struts2更加灵活
表达式语言方面
Struts1中我们通常使用了jstl
Struts2中我们可以使用功能更加强大的表达式语言OGNL(object Graph Notation Language)
类型转换:
Struts1中对actionform的类型转换采用commons-beanutils工具,而定义完成一个转换器,将对所有的actionform起作用,而不能针对某一个actionform来配置是否使用此类型的转换器
Struts2使用OGNL进行类型转换,功能更加强大,转换过程可以针对某个类型进行配置
校验
Struts1采用覆盖actionform中的validate()方法或采用验证框架commons validator来验证
Struts2支持使用覆盖validate()方法来完成验证,也支持验证框架xWork来验证
Action的执行控制
Struts1 固定不变的
Struts2通过拦截器,可以改变执行流程,灵活配置的
Action类
Struts1的Action必须继承
Struts2的Action可以不继承
Action的线程安全
Struts1是单例的,存在线程安全问题
Struts2是多例的,没有线程安全问题
最后,奉上struts1和struts2的结构图,希望对读者有所帮助
struts1:
struts2:
Action类
Struts1中的Action需要依赖ServletAPI
Struts2中的Action可以不用依赖Servlet API
可测试性
Struts1 中的Action测试性不好,因为需要容器支持,因为在Action依赖于servletAPI
Struts2的Action测试性好,可以直接写一个单元测试完成,因为Struts2的Action是一个POJO对象
ActionForm方面
Struts1 手机数据通常使用actionForm,而actionform还需要继承,使actionform的复用率降低,另外项目非常大会建立很多actionform给维护带来工作量,但也有好处数据的收集和控制进行了很好的分离
Struts2:可以不适用actionform来手机数据,直接让Action来手机数据,但也可以采用类似actionform的方法来收集数据,Struts2采用了ModelDriven的方式来支持类似Struts1的actionform方式,所以Struts2更加灵活
表达式语言方面
Struts1中我们通常使用了jstl
Struts2中我们可以使用功能更加强大的表达式语言OGNL(object Graph Notation Language)
类型转换:
Struts1中对actionform的类型转换采用commons-beanutils工具,而定义完成一个转换器,将对所有的actionform起作用,而不能针对某一个actionform来配置是否使用此类型的转换器
Struts2使用OGNL进行类型转换,功能更加强大,转换过程可以针对某个类型进行配置
校验
Struts1采用覆盖actionform中的validate()方法或采用验证框架commons validator来验证
Struts2支持使用覆盖validate()方法来完成验证,也支持验证框架xWork来验证
Action的执行控制
Struts1 固定不变的
Struts2通过拦截器,可以改变执行流程,灵活配置的
Action类
Struts1的Action必须继承
Struts2的Action可以不继承
Action的线程安全
Struts1是单例的,存在线程安全问题
Struts2是多例的,没有线程安全问题
最后,奉上struts1和struts2的结构图,希望对读者有所帮助
struts1:
struts2:
相关文章推荐
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇日期格式转化报400错误解决方法
- ehcache缓存的使用
- [Java]Java工程师成神之路
- Java使用MyEclipse构建webService简单案例
- OSGI环境下的一个错误:javax.xml.bind.JAXBException: ClassCastException
- eclipse maven project 'X' is missing required java project 'Y' soultioin
- Android studio 导入Eclipse项目 Vitamio播放器报错
- Spring与Hibernate整合报错:unable to get the default bean validation
- Spring学习(五)——Spring注解(一)
- Java的内存机制
- JDK/JRE/JVM区别与联系
- Spring中@Autowired注解和@Resource注解的区别
- Java 正则表达式正则
- Java基础--IO流03(File类,Properties,递归,打印流,序列流)
- java处理保留小数点后几位
- Git小白 -- Eclipse插件EGit的使用
- Java 线程 sleep wait 深入解析 Thread
- java中十六进制数字符串转为long类型
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- 在eclipse中调整字体