MVC Struts 概述

来源:互联网 发布:mysql 冷备 编辑:程序博客网 时间:2024/05/01 14:31
Struts概述
一、预备知识
认识Struts首先要了解下面的相关知识
1
Framework
       
伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。
        Framework
的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个framework开发上的结构。简而言之Framework就是易于扩展和控制、能提高我们开发效率的程序框架。
2
MVC
       
模型-视图-控制器(Model-View-Controller)是80年代出现的一种软件设计模式,现在已经被广泛的使用。它强制的把应用程序的输入、处理、输出分开,三个核心模块M-V-C分别负担不同的任务。
  • 模型(Model
    模型是应用程序的主体部分。模型表示业务数据和业务逻辑,一个模型可以为多个视图提供数据,提高了应用的可重用性。
  • 视图(View视图是应用程序中用户界面相关的部分,视图向用户显示数据,并能接收用户的输入数据,但它并不进行任何实际的业务处理。
  • 控制器(controller)
    控制器工作就是根据用户请求,调用相应的模型组件处理请求,然后调用相应的视图显示模型返回的数据。

1MVC的结构及工作原理
        MVC的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。

二、背景介绍
       
尽管MVC设计模式很早就出现了,但在WEB应用的开发中引入MVC一直难以实现。早期的Java Web开发应用中,JSP文件负责业务逻辑、控制网页流程并创建HTML,这给WEB开发带来了强耦合、调试困难、程序处理逻辑复杂等等问题,如图2。为了解决这些问题SUNJSP出现早期制定了两种规范,称为Model1(图2)和Model2(图3)。虽然Model1在一定程度上实现了MVC,但是它的应用并不尽如人意,直到Model2问世才得以改观。

2

3   JSP Model1

4 JSP Model2
??????? model2容易使系统出现多个Controller,并且对页面导航的处理比较复杂,有些人觉得model2仍不够好,于是Craig R. McClanahan 20005月提交了一个WEB frameworkJava Community。这就是后来的Struts
        2001
7月,Struts1.0,正式发布。该项目也成为了Apache Jakarta的子项目之一。

三、什么是Struts
       
综上所述很容易理解,Struts就是在JSP Model2的基础实现了MVC设计模式的WEB Framework
基于Struts构架的WEB应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。整个Struts大约有15包,近200个类所组成。
       Struts
这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了帮助你减少在运用MVC设计模型来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用ServletsJSP的优点来建立可扩展的应用,Struts是一个不错的选择。

四、Struts的体系结构
        Struts
由一组相互协作的类、Serlvet以及丰富的标记库(jsp tag lib)和独立于该框架工作的实用程序类(Validator)组成。
        Struts
有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBCObject Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。
        Struts framework
MVC模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。下图显示了struts framework的体系结构响应客户请求时候,各个部分工作的原理。

5 Struts工作原理
  • 从视图角度(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扮演了真正的业务逻辑的实现者,而ActionMappingActionForward则指定了不同业务逻辑或流程的运行方向。
五、Struts优缺点
  • 优点
    Struts
    TomcatTurbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。
    除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。TaglibStruts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
    关于页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
  • 缺点
    Taglib
    Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是当你习惯了它时,你会觉得它真的很棒;
    Struts
    MVCController一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度;
    它对类和一些属性、参数的命名显得有些随意,给使用带来一些不便;
六、为什么要使用Struts框架 
        
其实我们自己也可以实现类似于Struts的框架,那为什么要使用Struts呢?Struts是一个开放原代码的应用框架,在最近几年得到了飞速的发展,在JSP Web应用开发中应用得非常广泛,有的文献上说它已经成为JSP Web应用框架的事实上的标准。下面列举的这些理由是显而易见的:首先,它是建立在MVC这种公认的好的模式上的,StrutsMVC上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在CV上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;其次,它是个开源项目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;最后,是它对其他技术和框架显示出很好的融合性。如,现在,它已经与tiles融为一体,可以展望,它很快就会与JSF等融会在一起。
想了解更多java相关知识,请加入53587861高级java群,验证:阿春.共同探讨未来的新技术.
 
原创粉丝点击