无为

无为则可为,无为则至深!

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
基于 Web MVC framework J2EE 的世界内已是空前繁荣。 TTS 网站上几乎每隔一两个星期就会有新的 MVC 框架发布。目前比较好的 MVC, 老牌的有 Struts Webwork 。新兴的 MVC  框架有 Spring  MVC Tapestry JSF 等。这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如 Dinamica VRaptor 等。这些框架都提供了较好的层次分隔能力。在实现良好的 MVC  分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高。

  如何选择一个好的框架应用在你的项目中,将会对你的项目的效率和可重用是至关重要的。本文将对目前最流行、最常用的两种 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  实际上是 Expert One-on-One J2EE Design and Development  一书中所阐述的设计思想的具体实现。在 One-on-One  一书中, Rod Johnson  倡导 J2EE  实用主义的设计思想,并随书提供了一个初步的开发框架实现( interface21  发包 )。而 Spring  正是这一思想的更全面和具体的体现。 Rod Johnson  interface21  开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架。

   Spring 是一个开源框架,由 Rod Johnson 创建并且在他的著作《 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 中的各种子框架提供了基础。



凡是有该标志的文章,都是该blog博主Caoer(草儿)原创,凡是索引、收藏
、转载请注明来处和原文作者。非常感谢。

posted on 2006-06-11 17:37 草儿 阅读(253) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: