当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

Struts2与Struts1.x的深度比较[Java编程]

赞助商链接



  本文“Struts2与Struts1.x的深度比较[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Struts作为MVC 2的Web框架,自推出以来不断遭到开辟者的追捧,得到遍及的利用.作为最成功的Web框架,Struts自然拥有众多的长处:MVC 2模子的利用、功效齐备的标签库(Tag Library)、开放源代码.

但是,正所谓“没有最好,只有更好”,Struts1.x自身也有不少的缺陷:需求编写的代码过量,简单惹起“类爆炸”、单元测试艰难.这些缺陷随着Web的发展越来越明显.这就促生了Struts 2,它的诞生能很好的办理上述问题.

在本文中,笔者将对Struts2和Struts1.x这两种框架举行具体的对比.对比将触及到这两种框架的Action、考证、范例转换及若何开辟等方面的内容.但愿通过这样的对比,让读者理解这两种框架各自的特点,以便于在自己的项目中,按照实际情形,尽快的过渡到Struts2的时代.本文的内容基于Struts2.0.6.

1、引言

Struts的第一个版本是在2001年5月份公布的.它的最初假想是通过结合JSP和Servlet,使Web利用的视图和业务/利用逻辑得以清楚地别脱离来.在Struts之前,最常见的做法是在JSP中加入业务和利用逻辑,大概在Servlet中通过println()来生成视图.

自从第一版公布以来,Struts实际上已成为业界公认的Web利用尺度.它的炙手可热也为自己带来了改良和变更,所以不但要跟上对Web利用框架不断改变的需求,并且要与日渐增添竞争激烈的众多框架的特点相交融.

到最后,产生了几个下一代Struts的办理筹划.此中两个最受注目的筹划是Shale和Struts Ti.Shale是一个基于构件的框架,并在近来成为Apache的顶级项目.而Struts Ti则是在Struts的成功经验底子上持续保持对前端掌握器(Front Controller)和MVC(model-view-controller)情势举行改良.

WebWork项目是在2002年3月公布的,它对Struts式框架举行了革命性改良,引进了不少新的思惟、概念和功效,但和原Struts代码并不兼容.WebWork是一个成熟的框架,经过了好几次庞大的改良与公布.

在2005年12月,WebWork与Struts Ti公布归并.与此同时,Struts Ti改名为Struts Action Framework 2.0,成为Struts真正的担当者.

最后要注意的是,并非说Struts或WebWork项目已经终止开辟了.由于人们对这两个项目的爱好仍旧很高,并且也有很多开辟者仍旧乐意利用它们,因此这两个项目还在持续开辟中,持续修复Bug,改良功效和持续增添新功效.

2、Action的辨别

关于有着丰富的Struts1.x开辟经验的朋友来说,都非常的清楚Action是整个Struts框架的核心内容,当然Struts2也不例外.不过,Struts1.x与Struts2的Action模子很大的辨别.

Struts2和Struts1.x的差别,最明显的就是Struts2是一个pull-MVC架构.这是什么意思呢?从开辟者角度看,就是说需求显示给用户的数据可以直接从Action中获得,而不像Struts1.x那样,必须把呼应的Bean存到Page、Request大概Session中才能获得.Struts1.x 必须担当org.apache.struts.action.Action大概其子类,表单数据封装在FormBean中.Struts 2无须担当任何范例或实现任何接口,表单数据包含在Action中,通过Getter和Setter获得(以下面的ActionForStruts2的代码示例).

固然,在理论上Struts2的Action无须实现任何接口大概是担当任何的类,但是,在实际编程历程中,为了越发便利的实现Action,大大都情形下城市担当com.opensymphony.xwork2.ActionSupport类,并且重载(Override)此类里的String execute()办法.以下所示:

package ActionDiffer;
import java.text.DateFormat;
import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class ActionForStruts2 extends ActionSupport ...{
   private String message;

   public String getMessage() ...{
     return message;
  }

  @Override
   public String execute() ...{
    message = " This is hello from strtuts2. Now is: " + DateFormat.getInstance().format( new Date());
     return SUCCESS;
  }
}

首先,从ActionForStruts2可以看出,返回的对象不是ActionForward,而是String.假如你不喜好以字符串的情势呈目前你的代码中,有个Helper接口Action可以以常量方法供应常见后果,如“success”、“none”、“error”、“input”和“login”.

别的,按照惯例,在Struts1.x中只有“execute”办法能调用Action, 但在Struts2中并非必要,任何声明为public String methodName() 办法,都能通过配置来调用Action.

最后,和Struts1.x最大的革命性的差别是,Struts2处理Action历程中调用的办法(“execute”办法)是不带参数的.那若何获得所需求的对象呢?答案是利用IoC(反转掌握,Inversion of Control),也叫“依靠注入(Dependency Injection)”的情势(想更多地理解这方面信息请看Martin Fowler的文章http://www.martinfowler.com/articles/injection.html).Spring框架使得这个情势风行起来,但是Struts2的前身(WebWork)也同时利用上了这个情势.


  以上是“Struts2与Struts1.x的深度比较[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 在Google App Engine中操纵Struts2框架
  • 关于Struts和Spring两种MVC框架的比较
  • <b>Struts2文件上传</b>
  • 让Struts与Hibernate顺利协同工作
  • Hibernate+Spring+Struts扩大Struts
  • J2EE底子 用Struts框架开辟MVC系统步骤
  • <b>J2EE底子:Struts框架初学者从这里入门</b>
  • struts2整合tiles及配置
  • Struts2.0深化学习 命名空间,模子驱动,表单反复提交
  • 操纵Struts 2开辟RESTful服务
  • Struts2输入校验(一) validate办法-validateXxx办法
  • Struts2输入校验(二) 考据框架
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .