struts1 与 strust2 区别
整理链接:http://blog.csdn.net/chen978616649/article/details/7599901
struts1:核心控制器:ActionServlet负责拦截用户的所有请求
????? 三个重要组成部分:Action、ActionForm、ActionForward
struts2:核心控制器:FilterDispatcher,负责拦截用户一系列拦截器,
???? 拦截器负责将HttpServletRequest请求中的请求参数解析出来,
???? 传入action中,并回调Action的execuete的方法处理用户请求。
实现类方面:
? strust1:要求action 继承一个抽象基类
? struts2:实现一个action接口,
???????????? 提供了一个 ActionSupport基类去实现常用的接口,
???????????? (action接口不是必须实现的,只有一个 execute方法的POJO类就可以做为struts2的Action)
线程模式方面:
? strust1:单例模式且必须是线程安全。
? struts2:为每一个请求产生一个实例,没有线程安全问题。
servlet依赖方面:
? strust1:依赖于Servlet API,action的execute方法中有HttpServletRequest 和HttpServletResponse方法
? struts2:不依赖于Servlet API。
可测性方面(不太明白):
? strust1:因依赖于Servlet API,使得其测试依赖于Web容器,为脱离Wbe容器,需借助于第三方扩展:Struts TestCase,
?????????? 该扩展下包含了系列的Mock对象(模拟HttpServletResqust和HttpServletResponse对象)
? struts2:可以通过初如化、设置属性、调用方法来测试。
封装请求参数:
? strust1:ActionForm对象封装用户的请求参数,所有的ActionForm必须继承一个基类:ActionForm,普通javaBean不能用作ActionForm。
? struts2:使用Action属性来封装用户请求属性。还提供了ModelDriver模式,用单独的Model来封闭用户请求参数。
表达式语言方面:
? strust1:整合了JSTL。
? struts2:可使用JSTL,还整合了OGNL。
类型转换:
? strust1:ActionFrom属性通常都是String类型。
? struts2:使用了? Commons-Beanutils进行类型转换,每个类一个转换器,转换器是不可配置。
?????????? 使用OGNL进行类型转换,支持基本数据类型和常用对象之间的转换。
数据校验:
? struts1:ActionForm重写validate方法中手动校验。通过整合Commons alidator框架来完成数据校验。
? struts2:支持通过重写validate方法进行校验,也支持整合XWork校验框架进行校验。