`

struts1 与 strust2 区别

    博客分类:
  • web
 
阅读更多

整理链接: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校验框架进行校验。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics