老尸 发表于 2015-1-18 11:10:02

JAVA编程:Struts VS Spring 两种MVC框架对照

C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.对照  基于Web的MVCframework在J2EE的天下内已经是绝后昌盛。TTS网站上几近每隔一两个礼拜就会有新的MVC框架公布。今朝对照好的MVC,老牌的有Struts、Webwork。新兴的MVC框架有SpringMVC、Tapestry、JSF等。这些年夜多是出名团队的作品,别的另有一些边沿团队的作品,也相称杰出,如Dinamica、VRaptor等。这些框架都供应了较好的条理分开才能。在完成优秀的MVC分开的基本上,经由过程供应一些现成的帮助类库,同时也增进了临盆效力的进步。

  怎样选择一个好的框架使用在你的项目中,将会对你的项目标效力和可重用是相当主要的。本文将对今朝最盛行、最经常使用的两种framework举行先容。

  1、Struts

  Struts是Apache软件基金下Jakarta项目标一部分。Struts框架的次要架构计划和开辟者是CraigR.McClanahan。Struts是今朝JavaWebMVC框架中不争的王者。经由长达五年的开展,Struts已渐渐发展为一个不乱、成熟的框架,而且占据了MVC框架中最年夜的市场份额。可是Struts某些手艺特征上已掉队于新兴的MVC框架。面临SpringMVC、Webwork2这些计划更严密,扩大性更强的框架,Struts遭到了亘古未有的应战。但站在产物开辟的角度而言,Struts仍旧是最稳妥的选择。

  Struts有一组互相合作的类(组件)、Serlvet和jsptaglib构成。基于struts构架的web使用程序基础上切合JSPModel2的计划尺度,能够说是MVC计划形式的一种变更范例。依据下面对framework的形貌,我们很简单了解为何说Struts是一个webframwork,而不单单是一些标志库的组合。但Struts也包括了丰厚的标志库和自力于该框架事情的有用程序类。Struts有其本人的把持器(Controller),同时整合了其他的一些手艺往完成模子层(Model)和视图层(View)。在模子层,Struts能够很简单的与数据会见手艺相分离,包含EJB,JDBC和ObjectRelationBridge。在视图层,Struts可以与JSP,VelocityTemplates,XSL等等这些暗示层组件想分离。

  Struts的系统布局

  strutsframework是MVC形式的表现,上面我们就从分离从模子、视图、把持来看看struts的系统布局(Architecture)。

  从视图角度(View)

  次要由JSP创建,struts本身包括了一组可扩大的自界说标签库(TagLib),能够简化创立用户界面的历程。今朝包含:BeanTags,HTMLTags,LogicTags,NestedTags,TemplateTags 这几个Taglib。有关它们的具体材料请参考struts用户手册

  从模子角度(Model)

  模子次要是暗示一个体系的形态(偶然候,改动体系形态的营业逻辑操纵也也分别到模子中)。在Struts中,体系的形态次要有ActiomFormBean表现,一样平常情形下,这些形态长短耐久性的。假如必要将这些形态转化为耐久性数据存储,Struts自己也供应了Utitle包,能够便利的与数据库操纵

  从把持器角度(Controller)

  在Strutsframework中,Controller次要是ActionServlet,可是关于营业逻辑的操纵则次要由Action、ActionMapping、ActionForward这几个组件和谐完成(大概这几个组件,应当分别到模子中的营业逻辑一块)。个中,Action饰演了真实的营业逻辑的完成者,而ActionMapping和ActionForward则指定了分歧营业逻辑或流程的运转偏向。
关于Struts怎样把持、处置客户哀求,让我们经由过程对struts的四个中心组件先容来详细申明。这几个组件就是:ActionServlet。ActionClasses,ActionMapping(此处包含ActionForward),ActionFromBean。

  2、Spring

  Spring实践上是ExpertOne-on-OneJ2EEDesignandDevelopment一书中所论述的计划头脑的详细完成。在One-on-One一书中,RodJohnson倡议J2EE有用主义的计划头脑,并随书供应了一个开端的开辟框架完成(interface21开辟包)。而Spring恰是这一头脑的更周全和详细的表现。RodJohnson在interface21开辟包的基本之上,举行了进一步的改革和扩大,使其开展为一个加倍开放、明晰、周全、高效的开辟框架。

  Spring是一个开源框架,由RodJohnson创立而且在他的著作《J2EE计划开辟编程指南》里举行了形貌。它是为懂得决企业使用开辟的庞大性而创立的。Spring使利用基础的JavaBeans来完成之前只大概由EJB完成的事变变得大概了。但是,Spring的用处不但限于服务器真个开辟。从复杂性、可测试性和松耦合的角度而言,任何Java使用都能够从Spring中受害。

  复杂来讲,Spring是一个轻量的把持反转和面向切面的容器框架。固然,这个形貌有点过于复杂。但它切实其实归纳综合出了Spring是做甚么的。为了更好地舆解Spring,让我们剖析一下这个形貌:

  1、轻量,从巨细与开支两方面而言Spring都是轻量的。完全的Spring框架能够在一个巨细只要1MB多的JAR文件里公布。而且Spring所需的处置开支也是微乎其微的。别的,Spring长短侵进式的:典范地,Spring使用中的对象不依附于轻量??从巨细与开支两方面而言Spring都是轻量的。完全的Spring框架能够在一个巨细只要1MB多的JAR文件里公布。而且Spring所需的处置开支也是微乎其微的。别的,Spring长短侵进式的:典范地,Spring使用中的对象不依附于Spring的特定类。

  2、把持反转??Spring经由过程一种称作把持反转(IoC)的手艺增进了松耦合。当使用了IoC,对象主动地传送它们的依附而不是本人创立大概查找依附对象。你能够以为IoC与JNDI相反??不是对象沉着器中查找依附,而是容器在对象初始化时不等被哀求就将依附传送给它。

  3、面向切面??Spring包括劈面向切面编程的丰厚撑持,同意经由过程分别使用的营业逻辑与体系服务(比方审计与事物办理)举行内聚性的开辟。使用对象只做它们应当做的??完成营业逻辑??仅此罢了。它们其实不卖力(乃至是认识)别的的体系存眷点,比方日记或事物撑持。

  4、容器??Spring包括和办理使用对象的设置和性命周期,在这个意义上它是一种容器。你能够设置你的每一个bean怎样被创立??基于一个设置本相为你的bean创立一个独自的实例大概每次必要时都天生一个新的实例??和它们是怎样互相联系关系的。但是,Spring不该该被混淆于传统的分量的EJB容器,它们常常是复杂与粗笨的,难以利用。

  框架:Spring使由复杂的组件设置和组合庞大的使用成为大概。在Spring中,使用对象被声明式地组合,典范地是在一个XML文件里。Spring也供应了良多基本功效(事件办理、耐久性框架集成等等),将使用逻辑的开辟留给了你。

  一切Spring的这些特性使你可以编写更洁净、更可办理、而且更容易于测试的代码。它们也为Spring中的各类子框架供应了基本。
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。

爱飞 发表于 2015-1-20 15:43:29

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

精灵巫婆 发表于 2015-1-25 18:36:25

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

兰色精灵 发表于 2015-2-3 12:58:59

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

再见西城 发表于 2015-2-7 03:24:32

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

变相怪杰 发表于 2015-2-7 03:32:07

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

admin 发表于 2015-2-7 16:57:06

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

若天明 发表于 2015-2-11 08:26:11

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

小魔女 发表于 2015-2-14 00:53:46

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

再现理想 发表于 2015-3-4 03:36:28

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

老尸 发表于 2015-3-11 16:00:29

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

灵魂腐蚀 发表于 2015-3-19 00:06:11

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

金色的骷髅 发表于 2015-3-26 19:37:37

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
页: [1]
查看完整版本: JAVA编程:Struts VS Spring 两种MVC框架对照