【整理】Struts及Web开发框架

来源:互联网 发布:svn http nginx 编辑:程序博客网 时间:2024/04/30 00:26

     Jakarta Struts Framework 是一个开放源代码的 Apache 项目,由 Craig R. McClanahan 于 2000 年创建,并捐赠给了 Apache 基金会,已经成为基于 Java Servlet 和 Java Server Page (JSP)技术构建 Web 应用程序的最流行的框架包。 项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages、Servlet、标签库以及面向对象的技术水准。

     Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。

     Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。

     除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。

     关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

     MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。

     Struts是对MVC设计模式的一种实现。MVC设计模式为构建可扩展、可重用的代码打下了一个坚实的基础。MVC设计模式最吸引人之处在于它迫使你必须抽象自己的代码,把项目分解为表示、逻辑和控制三部分,它们的作用正如一个交响乐团中的音乐、团员和指挥。

     MVC设计模式中的“模型”指的是真正完成任务的代码。对大多Web应用程序来说,功能比界面感觉更重要。在模型同界面相分离的情况下,代码即可实现可管理性和可重用性。比方说,假如你开发了一个保险应用程序,其中的“模型”就是处理要求、计算保险费和同数据库交互的那些代码。模型通常也被称做“业务逻辑”。

     所谓的“视图”其实就是界面。在MVC模式下,通常的设计前提是界面任务并不大。当然,视图应该具有一定的功能性并遵守可用性的约束,但视图(界面)不应当处理数据。事实上,界面的每一部分都只能包含采集数据的足够逻辑并把它传递给设计模式中的其他组成部分供处理。从理论上说,如果你在模型中实现全部业务逻辑那么你可以创建多个视图,也就是桌面应用程序、数据库系统或者Web应用程序的界面。由于所有最麻烦的工作代码都保存在了模型上,所以创建新的视图并不令人感到过分的痛苦,产生软件编码错误的可能性也就随之大大降低了。

    “控制器”控制着模型和视图之间的交互过程。它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型。

    Struts 是一个 Web Framework ,常见的 B/S Web Framework 如下:
   
    Struts :主要关注于 Controller 流程,基于 JSP与 Taglib 实现的 View 。
    Cocoon :用于处理 XML 的框架,将 XML 作为 View 并可以良好结合 XSLT 。
    Spring :这是一个服务于所有层面的 Application Framework ,提供了 bean 的配置基础, AOP 的支持, JDBC 的提取框架,抽象事务支持等。它有一个非常显著的特点:在某个层面上如果你不需要 Spring 的支持,你就可以不使用 String 的 class ,只使用它的某一部分的功能。
    JSF :JavaServerFaces ,严格意义上讲,它并不算是 Framework ,但 JSF 同样提供了一种不同的 View 生成方式。它可以和多种 Framework 整合。在 J2EE1.4 中, JSP2.0 规范就包含了 JSF 标准。

     Framework 有很多种, Struts 并不是我们唯一的选择。我们可以根据具体的项目来选择不同的 Framework 。 Struts 之所以如此流行,其主要原因是它推出时间比较早,版本较稳定,并且是 MVC 及 core J2EE patterns 的标准实现。