对于Struts和Spring两种MVC框架的比较
来源:赛迪网技术社区 作者: 出处:综艺读书 2007-05-27基于Web的MVC framework在J2EE的世界内已是空前繁荣。TTS网站上几乎每隔一两个星期就会有新的MVC框架发布。目前比较好的MVC,老牌的有Struts、Webwork。新兴的MVC框架有Spring MVC、Tapestry、JSF等。
|
|
|||
如何选择一个好的框架应用在你的项目中,将会对你的项目的效率和可重用是至关重要的。本文将对目前最流行、最常用的两种framework进行介绍。
一、Struts
Struts是Apache软件基金下Jakarta项目的一部分。Struts框架的主要架构设计和开发者是Craig R.McClanahan。Struts是目前Java Web MVC框架中不争的王者。经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2 这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。但站在产品开发的角度而言,Struts仍然是最稳妥的选择。
Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。根据上面对framework的描述,我们很容易理解为什么说Struts是一个web framwork,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。
Struts的体系结构
struts framework是MVC 模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。
从视图角度(View)
主要由JSP建立,struts自身包含了一组可扩展的自定义标签库(TagLib),可以简化创建用户界面的过程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags这几个Taglib。有关它们的详细资料请参考struts用户手册。
从模型角度(Model)
模型主要是表示一个系统的状态(有时候,改变系统状态的业务逻辑操作也划分到模型中)。在Struts中,系统的状态主要有ActiomForm Bean体现,一般情况下,这些状态是非持久性的。如果需要将这些状态转化为持久性数据存储,Struts本身也提供了Utitle包,可以方便的与数据库操作。
从控制器角度(Controller)
在Struts framework中,Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。
对于Struts 如何控制、处理客户请求,让我们通过对struts的四个核心组件介绍来具体说明。这几个组件就是:ActionServlet。Action Classes,Action Mapping(此处包括ActionForward),ActionFrom Bean。
更多内容请看Spring开发技术篇 Spring开源框架技术 Spring框架技术篇专题,或进入讨论组讨论。
·Struts框架应用专题 (408篇文章)
·Spring框架技术篇 (46篇文章)
·Spring开发技术篇 (219篇文章)
·Struts与其他框架的比较 (44篇文章)
·集成技术:.NET单挑J2EE (0次浏览)
·集成Eclipse、Lomboz和JBoss开发J2EE应用 (0次浏览)
·经验交流:学习J2EE流程中的经验和教训 (0次浏览)
·淡入淡出式显示Swing容器组件 (0次浏览)
·J2ME专业手机游戏开发基础 (0次浏览)
·集成技术:.NET单挑J2EE (0次浏览)
·集成Eclipse、Lomboz和JBoss开发J2EE应用 (0次浏览)
·经验交流:学习J2EE流程中的经验和教训 (0次浏览)
·淡入淡出式显示Swing容器组件 (0次浏览)
·对于Struts和Spring两种MVC框架的比较 (106次浏览)
·Java IDE实用对比:Eclipse、NetBeans、Intel (93次浏览)
·我的j2me创意--Wap浏览器的源代码 (76次浏览)
·DoJa平台手机游戏的开发与移植 (67次浏览)
·J2ME中读取Unicode和UTF-8编码文件 (59次浏览)
·j2me创意--Wap浏览器的源代码 (53次浏览)
·IIS+Resin集成多个站点和数据库连接池 (50次浏览)
·GT4 开发:从头开始进行相互的身份验证 (46次浏览)
·J2ME应用程序架构模型 (44次浏览)
·集成技术:.NET单挑J2EE 06-27
·集成Eclipse、Lomboz和JBoss开发J2EE应用 06-25
·经验交流:学习J2EE流程中的经验和教训 06-21
·淡入淡出式显示Swing容器组件 06-19
·如何开发基于JBoss的J2EE应用 06-06
·初学j2me必读 网友学习笔记 05-29
·对于Struts和Spring两种MVC框架的比较 05-27
·Session机制使用的详细讲解 05-27
·使用Java NIO提高服务端程序的性能 05-27
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |




