struts1与struts2的区别

单实例与多实例
有状态就是有数据存储功能,好比购物车,买一件东西放进去,能够再次购买或者删减。
无状态就是一次操做,不能保存数据。
安全

有状态对象,就是有成员属性的对象,能够保存数据,是非线程安全的。
无状态对象,就是没有成员属性的对象.不能保存数据,是线程安全的。
spa

Struts2 的Action是有状态的,是非线程安全的,因此是多实例的。
Struts1的Action是无状态的,是线程安全的,因此能够单实例。
线程

无侵入式设计
Struts2没有像Struts1那样跟Servlet API有着紧密的耦合,Struts2的应用能够不依赖于Servlet API和Struts API。Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。
设计

使用OGNL表达式语言
OGNL提供了在Struts2里访问各类做用域中的数据的简单方式,你能够方便的获取Request,Attribute,Application,Session,Parameters中的数据。
对象

使用了拦截器
Struts2 的拦截器是一个Action级别的AOP,Struts2中的许多特性都是经过拦截器来实现的,例如异常处理,文件上传,验证等。拦截器是可配置与重用 的,能够将一些通用的功能如:登陆验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能。在我实现的的一Web项目中,就是使用Struts2的拦截器来完成了系统中的权限验证功能。
ci

全局结果与声明式异常
为应用程序添加全局的Result,和在配置文件中对异常进行处理,这样当处理过程当中出现指定异常时,能够跳转到特定页面,这一功能十分实用。
资源

方便的类型转换
Struts2提供了类型转换器,能够把特殊的请求参数转换成须要的的类型。Struts1中若是实现一样的功能,必须向Struts1的底层实现BeanUtil注册类型转换器。
作用域

其它文件上传

Struts2支持多种表现层技术,如JSP,freeMarker,Velocity等。
Struts2的输入校验能够对指定方法进行校验,解决了Struts1长久这痛。
Struts2提供了全局范围、包范围、Action范围的国际资源文件管理实现。
it

相关文章
相关标签/搜索