⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struts vs spring 两种mvc框架比较-开发频道-java-天极网.htm

📁 介绍了MVC的很多内容(基于MVC模式Struts框架研究与应用详解—JSP教程
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0038)http://dev.yesky.com/315/2069815.shtml -->
<HTML lang=zh-CN xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>Struts VS Spring 两种MVC框架比较-开发频道-Java-天极网</TITLE>
<META 
content="Struts VS Spring 两种MVC框架比较,开发者网络瞄准中国程序员群体,涵盖软件开发的各个技术层面,从Windows下的应用程序开发,到Java、Web开发、游戏开发和移动开发领域,均有相关教程和实例、技巧。 &#13;&#10;" 
name=description>
<META 
content="Struts VS Spring 两种MVC框架比较,软件开发,嵌入式开发,java开发工具,驱动开发,软件工程,IBM,微软,数据库" 
name=keywords>
<META content="天极网 | 全球中文IT第一门户" name=author>
<META content="天极网 | 全球中文IT第一门户" name=Copyright>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=Content-Language content=zh-CN>
<META http-equiv=X-UA-Compatible content=IE=7><LINK media=all 
href="Struts VS Spring 两种MVC框架比较-开发频道-Java-天极网.files/y_mobile_content.css" 
type=text/css rel=stylesheet>
<SCRIPT 
src="Struts VS Spring 两种MVC框架比较-开发频道-Java-天极网.files/showlay.js"></SCRIPT>

<META content="MSHTML 6.00.2900.3268" name=GENERATOR></HEAD>
<BODY><!--页面头部--><!--头部-->
<DIV>
<SCRIPT 
src="Struts VS Spring 两种MVC框架比较-开发频道-Java-天极网.files/kingsoft-kuanban-071105.js"></SCRIPT>
</DIV>
<DIV id=topmenu><A href="http://www.yesky.com/">Yesky首页</A>| <A 
href="http://product.yesky.com/">产品报价</A>| <A 
href="http://cseek.yesky.com/">行情</A>| <A href="http://mobile.yesky.com/">手机</A> 
| <A href="http://digital.yesky.com/">数码</A> | <A 
href="http://notebook.yesky.com/">笔记本</A> | <A 
href="http://pc.yesky.com/">台式机</A> | <A href="http://diy.yesky.com/">DIY硬件</A> 
| <A href="http://oa.yesky.com/">外设</A> | <A href="http://net.yesky.com/">网络</A> 
| <A href="http://dh.yesky.com/">数字家庭</A> | <A 
href="http://lab.yesky.com/">评测</A> | <A href="http://soft.yesky.com/">软件</A> | 
<A href="http://fashion.yesky.com/">e时代</A> | <A 
href="http://game.yesky.com/">游戏</A> | <A href="http://pic.yesky.com/">图片</A> | 
<A href="http://desktop.yesky.com/">壁纸</A> | <A 
href="http://q.yesky.com/">群乐</A> | <A href="http://my.yesky.com/">社区</A> | <A 
href="http://blog.yesky.com/">博客</A> | <A 
href="http://www.mydown.com/">下载</A></DIV>
<DIV id=topbox>
<DIV class=tleft><A id=pagelogo href="http://www.yesky.com/"><IMG 
alt=天极Yesky_全球中文IT第一门户 
src="Struts VS Spring 两种MVC框架比较-开发频道-Java-天极网.files/logo.gif" 
border=0></A></DIV>
<DIV class=tad><SPAN id=ad1></SPAN></DIV>
<DIV id=search>
<DIV>
<FORM name=searchform action=http://search.chinabyte.com/search method=get 
target=_blank><INPUT id=searchzz onmouseover=this.focus() onfocus=this.select() 
name=q><INPUT type=hidden value=GB2312 name=encoding><INPUT type=hidden 
value=connect name=dir><INPUT type=hidden value=20002 name=cid><INPUT id=search_btn type=submit value=天极搜索> </FORM></DIV>
<DIV class=tdq>
<DIV class=rightarea><A href="http://bj.yesky.com/">北京</A> <A 
href="http://hd.yesky.com/">上海</A> <A href="http://gd.yesky.com/">广州</A> <A 
href="http://sz.yesky.com/">深圳</A><BR><A href="http://cd.yesky.com/">成都</A> <A 
href="http://cq.yesky.com/">重庆</A> <A href="http://sy.yesky.com/">沈阳</A> <A 
href="http://xa.yesky.com/">西安</A> </DIV>
<DIV class=rightarea_right><A 
href="http://my.yesky.com/">用户<BR>登录</A></DIV></DIV></DIV>
<DIV class=tright>
<DIV class=box1>
<SCRIPT src="Struts VS Spring 两种MVC框架比较-开发频道-Java-天极网.files/content_text_ad.js" 
type=text/javascript></SCRIPT>
</DIV></DIV></DIV>
<SCRIPT src="Struts VS Spring 两种MVC框架比较-开发频道-Java-天极网.files/flash.js" 
type=text/javascript></SCRIPT>

<DIV id=childmenu twffan="done"><A href="http://soft.yesky.com/" 
target=_self>软件频道&gt;</A><A href="http://dev.yesky.com/" 
target=_self>程序开发&gt;</A><A href="http://dev.yesky.com/devjava/" 
target=_self>Java</A><A href="http://dev.yesky.com/ysdevvb" 
target=_self>VB</A><A href="http://dev.yesky.com/ysdevvc" target=_self>VC</A><A 
href="http://dev.yesky.com/ysdevdelphi" target=_self>Delphi</A><A 
href="http://dev.yesky.com/ysdevc" target=_self>C/C++</A><A 
href="http://dev.yesky.com/web/" target=_self>Web开发</A><A 
href="http://dev.yesky.com/msdn/" target=_self>微软专栏</A><A 
href="http://dev.yesky.com/devydkf/" target=_self>移动</A><A 
href="http://dev.yesky.com/devsjk/" target=_self>数据库</A><A 
href="http://dev.yesky.com/ysdevcxrs" target=_self>程序人生</A><A 
href="http://dev.yesky.com/ysdevrjgc" target=_self>软件工程</A>|<A 
href="http://soft.yesky.com/lesson/" target=_self>产品中心</A><A 
href="http://www.mydown.com/soft/develop/news.shtml" target=_self>下载</A><A 
href="http://www.ibm.com/developerworks/cn/onlinecourse/rational/r-mdatrend.html?S_TACT=105AGX52&amp;S_CMP=tec.yesky">UML生成C++</A></DIV><!--导航条-->
<DIV id=location>
<DIV class=loleft>您现在的位置:<SPAN id=lo_links> <A 
href="http://www.yesky.com/index.shtml">天极网</A> &gt; <A 
href="http://dev.yesky.com/index.shtml">开发频道</A> </SPAN>&gt; Struts VS Spring 
两种MVC框架比较</DIV>
<DIV class=adright><SPAN id=ad2></SPAN></DIV></DIV><!--内容块开始-->
<DIV id=conbox><!--左边开始-->
<DIV id=conleft>
<DIV id=contopla1>
<DIV id=__001>
<DIV class=qkong></DIV>
<DIV class=qw1>全文</DIV>
<DIV class=zkong>
<DIV class=kl></DIV>
<DIV class=bj><A href="http://dev.yesky.com/315/2069815.shtml#pls" 
target=_self>评论</A></DIV>
<DIV class=kr></DIV><!-- Error -->
<SCRIPT type=text/javascript>
var titiepic ="#";
if (titiepic!="#")
{
document.write("<div class=\"kl\"></div><div class=\"bj\"><a href=\"#\" target=\"_blank\">图片</a></div><div class=\"kr\"></div>");
}
</SCRIPT>
<!-- Error --></DIV></DIV></DIV>
<DIV class=topadbg style="PADDING-BOTTOM: 10px"><SPAN id=ad10></SPAN></DIV><A 
name=top></A>
<DIV id=contitle>
<H1 id=artibodyTitle>Struts VS Spring 两种MVC框架比较</H1></DIV>
<DIV id=conauthor><SPAN>2005-08-13 14:42 </SPAN><SPAN>作者: mandyhou 
</SPAN><SPAN>出处: Java研究组织 </SPAN><SPAN>责任编辑:<A title=向本编辑提问 
href="http://comments.yesky.com/t/·&frac12;&Ouml;&Ucirc;/6,324/2069815.shtml" target=_blank>方舟</A> 
</SPAN></DIV>
<DIV class=topadbg><SPAN id=ad9></SPAN></DIV>
<DIV id=conneirong><SPAN id=ad3></SPAN>
<DIV id=artibody>
<TABLE cellSpacing=1 cellPadding=2 width=600 align=center bgColor=#ff3300 
border=0>
  <TBODY>
  <TR bgColor=#ffffff>
    <TD bgColor=#cc0000 colSpan=4><A 
      href="http://soft.yesky.com/lesson/"><FONT 
      color=#ffffff><B>天极软件专题专区精选</B></FONT></A></TD></TR>
  <TR bgColor=#ffffff>
    <TD width="25%"><A href="http://soft.yesky.com/tools/google">Google专区</A> 
    </TD>
    <TD width="23%"><A href="http://soft.yesky.com/tools/popo">POPO专区</A></TD>
    <TD width="24%"><A href="http://qq.yesky.com/">QQ专区</A> <A 
      href="http://soft.yesky.com/lesson/401/2047901.shtml">QQ挂机</A></TD>
    <TD width="28%"><A 
      href="http://soft.yesky.com/327/2055327.shtml">了解Web2.0</A></TD></TR>
  <TR bgColor=#ffffff>
    <TD width="25%"><A href="http://design.yesky.com/flash/mx/">Flash MX 
      视频教程</A></TD>
    <TD width="23%"><A 
      href="http://soft.yesky.com/SoftChannel/72348986094125056/20040623/1823629.shtml">Photoshop视频教程</A></TD>
    <TD width="24%"><A 
      href="http://www.yesky.com/259/1926759.shtml">网页设计视频教程</A></TD>
    <TD width="28%"><A 
      href="http://www.yesky.com/SoftChannel/72348986094125056/20050430/1943944.shtml">照片处理数字暗房</A></TD></TR>
  <TR bgColor=#ffffff>
    <TD width="25%"><A 
      href="http://www.yesky.com/SoftChannel/72348968914255872/20050517/1950125.shtml">PPT动画演示教程</A></TD>
    <TD width="23%"><A 
      href="http://soft.yesky.com/SoftChannel/72348968914255872/20050126/1905902.shtml">Excel动画教程集</A></TD>
    <TD width="24%"><A 
      href="http://soft.yesky.com/SoftChannel/72348968914255872/20050223/1914058.shtml">Word动画演示教程</A></TD>
    <TD width="28%"><A href="http://soft.yesky.com/os/vista/">Windows 
      Vista专区</A> </TD></TR>
  <TR bgColor=#ffffff>
    <TD width="25%" height=18><A 
      href="http://soft.yesky.com/security/muma/">特洛伊木马专区</A></TD>
    <TD width="23%" height=18><A 
      href="http://soft.yesky.com/security/hkjc/">黑客知识教程专区</A></TD>
    <TD width="24%" height=18><A 
      href="http://soft.yesky.com//security/firewall/">防火墙应用专区</A></TD>
    <TD width="28%" height=18><A 
      href="http://soft.yesky.com/os/zcb/">注册表应用专区</A></TD></TR>
  <TR bgColor=#ffffff>
    <TD width="25%"><A href="http://soft.yesky.com/lesson/vbapi/" 
      target=_blank>Windows API开发专区</A></TD>
    <TD width="23%"><A href="http://soft.yesky.com/lesson/network/" 
      target=_blank>网络编程专区</A></TD>
    <TD width="24%"><A href="http://soft.yesky.com/lesson/vbdatabase/" 
      target=_blank>VB数据库编程专区</A></TD>
    <TD width="28%"><A 
      href="http://soft.yesky.com/lesson/multimedia/">图像处理与多媒体编程</A></TD></TR></TBODY></TABLE><BR>  基于Web的MVC&nbsp;framework在J2EE的世界内已是空前繁荣。TTS网站上几乎每隔一两个星期就会有新的MVC框架发布。目前比较好的MVC,老牌的有Struts、Webwork。新兴的MVC&nbsp;框架有Spring&nbsp;MVC、Tapestry、JSF等。这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如Dinamica、VRaptor等。这些框架都提供了较好的层次分隔能力。在实现良好的MVC&nbsp;分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高。<BR><BR>  如何选择一个好的框架应用在你的项目中,将会对你的项目的效率和可重用是至关重要的。本文将对目前最流行、最常用的两种framework进行介绍。<BR><BR>  一、Struts<BR><BR>  Struts是Apache<A 
class=bluekey href="http://product.yesky.com/software/" 
target=_blank>软件</A>基金下Jakarta项目的一部分。Struts框架的主要架构<A class=bluekey 
href="http://design.yesky.com/" 
target=_blank>设计</A>和开发者是Craig&nbsp;R.McClanahan。Struts&nbsp;是目前<A class=bluekey 
href="http://dev.yesky.com/devjava/" 
target=_blank>Java</A>&nbsp;Web&nbsp;MVC框架中不争的王者。经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring&nbsp;MVC、Webwork2&nbsp;这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。但站在产品开发的角度而言,Struts仍然是最稳妥的选择。<BR><BR>  Struts有一组相互协作的类(组件)、Serlvet以及jsp&nbsp;tag&nbsp;lib组成。基于struts构架的web应用<A 
class=bluekey href="http://dev.yesky.com/" 
target=_blank>程序</A>基本上符合JSP&nbsp;Model2的设计标准,可以说是MVC设计模式的一种变化类型。根据上面对framework的描述,我们很容易理解为什么说Struts是一个web&nbsp;framwork,而不仅仅是一些标记库的组合。但&nbsp;Struts&nbsp;也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object&nbsp;Relation&nbsp;Bridge。在视图层,Struts能够与JSP,&nbsp;Velocity&nbsp;Templates,XSL等等这些表示层组件想结合。<BR><BR>  Struts的体系结构<BR><BR>  struts&nbsp;framework是MVC&nbsp;模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。&nbsp;<BR><BR>  从视图角度(View)<BR><BR>  主要由JSP建立,struts自身包含了一组可扩展的自定义标签库(TagLib),可以简化创建用户界面的过程。目前包括:Bean&nbsp;Tags,HTML&nbsp;Tags,Logic&nbsp;Tags,Nested&nbsp;Tags,Template&nbsp;Tags 这几个Taglib。有关它们的详细资料请参考struts用户手册<BR><BR>  从模型角度(Model)<BR><BR>  模型主要是表示一个系统的状态(有时候,改变系统状态的业务逻辑操作也也划分到模型中)。在Struts中,系统的状态主要有ActiomForm&nbsp;Bean体现,一般情况下,这些状态是非持久性的。如果需要将这些状态转化为持久性数据存储,Struts本身也提供了Utitle包,可以方便的与数据库操作<BR><BR>  从控制器角度(Controller)<BR><BR>  在Struts&nbsp;framework中,&nbsp;Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。<BR>对于Struts&nbsp;如何控制、处理客户请求,让我们通过对struts的四个核心组件介绍来具体说明。这几个组件就是:ActionServlet。Action&nbsp;Classes,Action&nbsp;Mapping(此处包括ActionForward),ActionFrom&nbsp;Bean。<BR><BR>  二、Spring<BR><BR>  Spring&nbsp;实际上是Expert&nbsp;One-on-One&nbsp;J2EE&nbsp;Design&nbsp;and&nbsp;Development&nbsp;一书中所阐述的设计思想的具体实现。在One-on-One&nbsp;一书中,Rod&nbsp;Johnson&nbsp;倡导J2EE&nbsp;实用主义的设计思想,并随书提供了一个初步的开发框架实现(interface21&nbsp;开发包)。而Spring&nbsp;正是这一思想的更全面和具体的体现。Rod&nbsp;Johnson&nbsp;在interface21&nbsp;开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架。<BR><BR>  Spring是一个开源框架,由Rod&nbsp;Johnson创建并且在他的著作《J2EE设计开发编程指南》里进行了描述。它是为了解决企业应用开发的复杂性而创建的。Spring使使用基本的JavaBeans来完成以前只可能由EJB完成的事情变得可能了。然而,Spring的用途不仅限于<A 
class=bluekey href="http://product.yesky.com/catalog/850/" 
target=_blank>服务器</A>端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。<BR><BR>  简单来说,Spring是一个轻量的控制反转和面向切面的容器框架。当然,这个描述有点过于简单。但它的确概括出了Spring是做什么的。为了更好地理解Spring,让我们分析一下这个描述:&nbsp;<BR><BR>  1、轻量,从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于轻量??从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。<BR><BR>  2、控制反转??Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,对象被动地传递它们的依赖而不是自己创建或者查找依赖对象。你可以认为IoC与JNDI相反??不是对象从容器中查找依赖,而是容器在对象初始化时不等被请求就将依赖传递给它。&nbsp;<BR><BR>  3、面向切面??Spring包含对面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统服务(例如审计与事物管理)进行内聚性的开发。应用对象只做它们应该做的??完成业务逻辑??仅此而已。它们并不负责(甚至是意识)其它的系统关注点,例如日志或事物支持。&nbsp;<BR><BR>  4、容器??Spring包含和管理应用对象的配置和生命周期,在这个意义上它是一种容器。你可以配置你的每个bean如何被创建??基于一个配置原形为你的bean创建一个单独的实例或者每次需要时都生成一个新的实例??以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量的EJB容器,它们经常是庞大与笨重的,难以使用。&nbsp;<BR><BR>  框架:Spring使由简单的组件配置和组合复杂的应用成为可能。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久性框架集成等等),将应用逻辑的开发留给了你。&nbsp;<BR><BR>  所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种子框架提供了基础。<BR><BR>
<DIV class=guanggao><SPAN id=contentAdv></SPAN></DIV></DIV></DIV><!--广告代码开始-->
<SCRIPT>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -