基于Web的MVC framework在JEE的世界内已是空前繁荣TTS网站上几乎每隔一两个星期就会有新的MVC框架发布目前比较好的MVC老牌的有StrutsWebwork新兴的MVC框架有Spring MVCTapestryJSF等这些大多是着名团队的作品另外还有一些边缘团队的作品也相当出色如DinamicaVRaptor等这些框架都提供了较好的层次分隔能力在实现良好的MVC 分隔的基础上通过提供一些现成的辅助类库同时也促进了生产效率的提高
如何选择一个好的框架应用在你的项目中将会对你的项目的效率和可重用是至关重要的本文将对目前最流行最常用的两种framework进行介绍
一Struts
Struts是Apache软件基金下Jakarta项目的一部分Struts框架的主要架构设计和开发者是Craig RMcClanahanStruts是目前Java Web MVC框架中不争的王者经过长达五年的发展Struts已经逐渐成长为一个稳定成熟的框架并且占有了MVC框架中最大的市场份额但是Struts某些技术特性上已经落后于新兴的MVC框架面对Spring MVCWebwork 这些设计更精密扩展性更强的框架Struts受到了前所未有的挑战但站在产品开发的角度而言Struts仍然是最稳妥的选择
Struts有一组相互协作的类(组件)Serlvet以及jsp tag lib组成基于struts构架的web应用程序基本上符合JSP Model的设计标准可以说是MVC设计模式的一种变化类型根据上面对framework的描述我们很容易理解为什么说Struts是一个web framwork而不仅仅是一些标记库的组合但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类Struts有其自己的控制器(Controller)同时整合了其他的一些技术去实现模型层(Model)和视图层(View)在模型层Struts可以很容易的与数据访问技术相结合包括EJBJDBC和Object Relation Bridge在视图层Struts能够与JSP Velocity TemplatesXSL等等这些表示层组件想结合
Struts的体系结构
struts framework是MVC 模式的体现下面我们就从分别从模型视图控制来看看struts的体系结构(Architecture)
从视图角度(View)
主要由JSP建立struts自身包含了一组可扩展的自定义标签库(TagLib)可以简化创建用户界面的过程目前包括Bean TagsHTML TagsLogic TagsNested TagsTemplate Tags这几个Taglib有关它们的详细资料请参考struts用户手册
从模型角度(Model)
模型主要是表示一个系统的状态(有时候改变系统状态的业务逻辑操作也划分到模型中)在Struts中系统的状态主要有ActiomForm Bean体现一般情况下这些状态是非持久性的如果需要将这些状态转化为持久性数据存储Struts本身也提供了Utitle包可以方便的与数据库操作
从控制器角度(Controller)
在Struts framework中Controller主要是ActionServlet但是对于业务逻辑的操作则主要由ActionActionMappingActionForward这几个组件协调完成(也许这几个组件应该划分到模型中的业务逻辑一块)其中Action扮演了真正的业务逻辑的实现者而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向
对于Struts 如何控制处理客户请求让我们通过对struts的四个核心组件介绍来具体说明这几个组件就是ActionServletAction ClassesAction Mapping(此处包括ActionForward)ActionFrom Bean
[] []