Struts2和Struts1的区别

Struts2的由来:

     Struts2虽然和Struts1名字很近,但其中的设计思想有很大的不同,Struts2是以WEBWork的设计思想为核心,之所以没有延续Struts1的设计思想原因是Struts1的以下缺点:

      支持的表现层技术单一,主要支持jsp;与Servlet API严重耦合,这点可以从Action的Execute的方法声明里面可以看出。代码依赖性,有侵入性,Action类和FormBean中,Action必须实现Struts的Action类。Struts2的WebWork思想更符合MVC的设计思想,也更利于代码的复用。

      Struts1是使用ActionServlet做为中心处理器,Struts2使用一个拦截器FilterDispatcher做为中心处理器。这样做就可以将Action类和Servlet API进行了分离。

       Struts2的简单处理流程如下:

       浏览器发送请求

       中心处理器根据struts.xml文件查找请求的Action类

       WebWork的拦截器自动对请求应用通用功能,例如:WorkFlow,Validation等功能

       如果Struts.xml文件中配置Method参数,则调用Method参数对应的Action类中的Method方法,否则调用通用的Execute方法来处理用户请求

       将Action类中对应的方法返回的结果响应给浏览器

二者的区别:

    Action类的对比:

    Struts1的Action在实现的时候必须扩展Action类或者Action的子类,Struts2的Action类实现的时候可以不实现任何类和接口,虽然Struts2中提供一个ActionSupport类,但是,不是必须的。

    Struts1的Action类是单例模式,必须设计成线程安全的,Struts2则为每一个请求产生一个实例

    Struts1的Action类依赖于Servlet API ,从其execute的方法签名可看出,execute方法有两个Servlet的参数HttpServletRequest和HttpServletResponse,Struts2则不依赖于Servlet API

    由于Struts1依赖于Servlet API 这些web元素,因此对Struts1的Action进行测试的时候是很困难的,需要借助与其他测试工具,Struts2的Action可以测试其他的一个简单的POJO进行数据传递,而Struts2将这变成了现实。

    Struts1绑定了JSTL,为页面的编写带来了方便,Struts2整合了ONGL,也可以使用JSTL,因此Struts2下的表达式语言更加强大

扩展

Struts2与WebWork对比:

Struts2实际上就是WebWork2.3,不过有少许的差别:

  Struts2不再支持内置IOC容器,改用Spring的IOC容器

   Struts2对于Webwork的一些Ajax特性的标签改用Dojo进行替换。

  



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值