了解下JAVA的Struts2与Struts1.x的深度对照
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。Struts作为MVC2的Web框架,自推出以来不休遭到开辟者的追捧,失掉普遍的使用。作为最乐成的Web框架,Struts天然具有浩瀚的长处:MVC2模子的利用、功效完全的标签库(TagLibrary)、开放源代码。
可是,正所谓“没有最好,只要更好”,Struts1.x本身也有很多的弱点:必要编写的代码过量,简单引发“类爆炸”、单位测试坚苦。这些弱点跟着Web的开展愈来愈分明。这就促生了Struts2,它的出生能很好的办理上述成绩。
在本文中,笔者将对Struts2和Struts1.x这两种框架举行具体的对照。对照将触及到这两种框架的Action、考证、范例转换及怎样开辟等方面的内容。但愿经由过程如许的对照,让读者懂得这两种框架各自的特性,以便于在本人的项目中,依据实践情形,尽快的过渡到Struts2的时期。本文的内容基于Struts2.0.6。
1、弁言
Struts的第一个版本是在2001年5月份公布的。它的最后假想是经由过程分离JSP和Servlet,使Web使用的视图和营业/使用逻辑得以明晰地分别开来。在Struts之前,最多见的做法是在JSP中到场营业和使用逻辑,大概在Servlet中经由过程println()来天生视图。
自从初版公布以来,Struts实践上已成为业界公认的Web使用尺度。它的炙手可热也为本人带来了改善和变动,以是不仅要跟上对Web使用框架不休变更的需求,并且要与日渐增加合作剧烈的浩瀚框架的特征相交融。
到最初,发生了几个下一代Struts的办理计划。个中两个最受注目的计划是Shale和StrutsTi。Shale是一个基于构件的框架,并在比来成为Apache的顶级项目。而StrutsTi则是在Struts的乐成履历基本上持续保持对前端把持器(FrontController)和MVC(model-view-controller)形式举行改善。
WebWork项目是在2002年3月公布的,它对Struts式框架举行了反动性改善,引进了很多新的头脑、观点和功效,但和原Struts代码其实不兼容。WebWork是一个成熟的框架,经由了好几回严重的改善与公布。
在2005年12月,WebWork与StrutsTi公布兼并。与此同时,StrutsTi更名为StrutsActionFramework2.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中。Struts2不必承继任何范例或完成任何接口,表双数据包括在Action中,经由过程Getter和Setter猎取(以下面的ActionForStruts2的代码示例)。
固然,在实际上Struts2的Action不必完成任何接口大概是承继任何的类,可是,在实践编程过程当中,为了加倍便利的完成Action,年夜多半情形下城市承继com.opensymphony.xwork2.ActionSupport类,而且重载(Override)此类里的Stringexecute()办法。以下所示:
packageActionDiffer;
importjava.text.DateFormat;
importjava.util.Date;
importcom.opensymphony.xwork2.ActionSupport;
publicclassActionForStruts2extendsActionSupport ...{
privateStringmessage;
publicStringgetMessage() ...{
returnmessage;
}
@Override
publicStringexecute() ...{
message="Thisishellofromstrtuts2.Nowis:"+DateFormat.getInstance().format(newDate());
returnSUCCESS;
}
}
起首,从ActionForStruts2能够看出,前往的对象不是ActionForward,而是String。假如你不喜好以字符串的情势呈现在你的代码中,有个Helper接口Action能够以常量体例供应罕见了局,如“success”、“none”、“error”、“input”和“login”。
别的,依照常规,在Struts1.x中只要“execute”办法能挪用Action, 但在Struts2中并不是需要,任何声明为publicStringmethodName()办法,都能经由过程设置来挪用Action。
最初,和Struts1.x最年夜的反动性的分歧是,Struts2处置Action过程当中挪用的办法(“execute”办法)是不带参数的。那怎样猎取所必要的对象呢?谜底是利用IoC(反转把持,InversionofControl),也叫“依附注进(DependencyInjection)”的形式(想更多地懂得这方面信息请看MartinFowler的文章http://www.martinfowler.com/articles/injection.html)。Spring框架使得这个形式盛行起来,但是Struts2的前身(WebWork)也同时使用上了这个形式。
<p>
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 是一种将安全性(Security)列为第一优先考虑的语言 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 Java 编程语言的风格十分接近C、C++语言。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
页:
[1]