MVC Struts 概述
来源:互联网 发布:mysql 冷备 编辑:程序博客网 时间:2024/05/01 14:31
Struts概述
一、预备知识
认识Struts首先要了解下面的相关知识
1、Framework
伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。
Framework的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个framework开发上的结构。简而言之Framework就是易于扩展和控制、能提高我们开发效率的程序框架。
2、MVC
模型-视图-控制器(Model-View-Controller)是80年代出现的一种软件设计模式,现在已经被广泛的使用。它强制的把应用程序的输入、处理、输出分开,三个核心模块M-V-C分别负担不同的任务。
认识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。为了解决这些问题SUN在JSP出现早期制定了两种规范,称为Model1(图2)和Model2(图3)。虽然Model1在一定程度上实现了MVC,但是它的应用并不尽如人意,直到Model2问世才得以改观。
二、背景介绍
尽管MVC设计模式很早就出现了,但在WEB应用的开发中引入MVC一直难以实现。早期的Java Web开发应用中,JSP文件负责业务逻辑、控制网页流程并创建HTML,这给WEB开发带来了强耦合、调试困难、程序处理逻辑复杂等等问题,如图2。为了解决这些问题SUN在JSP出现早期制定了两种规范,称为Model1(图2)和Model2(图3)。虽然Model1在一定程度上实现了MVC,但是它的应用并不尽如人意,直到Model2问世才得以改观。
图2
图3 JSP Model1
图4 JSP Model2
??????? model2容易使系统出现多个Controller,并且对页面导航的处理比较复杂,有些人觉得model2仍不够好,于是Craig R. McClanahan 2000年5月提交了一个WEB framework给Java 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应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
四、Struts的体系结构
Struts由一组相互协作的类、Serlvet以及丰富的标记库(jsp tag lib)和独立于该框架工作的实用程序类(Validator)组成。
Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。
Struts framework是MVC模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。下图显示了struts framework的体系结构响应客户请求时候,各个部分工作的原理。
2001年7月,Struts1.0,正式发布。该项目也成为了Apache Jakarta的子项目之一。
三、什么是Struts
综上所述很容易理解,Struts就是在JSP Model2的基础实现了MVC设计模式的WEB Framework。
基于Struts构架的WEB应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。整个Struts大约有15包,近200个类所组成。
Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了帮助你减少在运用MVC设计模型来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
四、Struts的体系结构
Struts由一组相互协作的类、Serlvet以及丰富的标记库(jsp tag lib)和独立于该框架工作的实用程序类(Validator)组成。
Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。
Struts framework是MVC模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。下图显示了struts framework的体系结构响应客户请求时候,各个部分工作的原理。
图5 Struts工作原理
- 从视图角度(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跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
关于页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 - 缺点
Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是当你习惯了它时,你会觉得它真的很棒;
Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度;
它对类和一些属性、参数的命名显得有些随意,给使用带来一些不便;
六、为什么要使用Struts框架
其实我们自己也可以实现类似于Struts的框架,那为什么要使用Struts呢?Struts是一个开放原代码的应用框架,在最近几年得到了飞速的发展,在JSP Web应用开发中应用得非常广泛,有的文献上说它已经成为JSP Web应用框架的事实上的标准。下面列举的这些理由是显而易见的:首先,它是建立在MVC这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;其次,它是个开源项目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;最后,是它对其他技术和框架显示出很好的融合性。如,现在,它已经与tiles融为一体,可以展望,它很快就会与JSF等融会在一起。
其实我们自己也可以实现类似于Struts的框架,那为什么要使用Struts呢?Struts是一个开放原代码的应用框架,在最近几年得到了飞速的发展,在JSP Web应用开发中应用得非常广泛,有的文献上说它已经成为JSP Web应用框架的事实上的标准。下面列举的这些理由是显而易见的:首先,它是建立在MVC这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;其次,它是个开源项目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;最后,是它对其他技术和框架显示出很好的融合性。如,现在,它已经与tiles融为一体,可以展望,它很快就会与JSF等融会在一起。
想了解更多java相关知识,请加入53587861高级java群,验证:阿春.共同探讨未来的新技术.
- MVC Struts 概述
- 基于MVC模式的Struts框架概述
- 基于MVC模式的Struts框架概述
- 基于MVC模式的Struts框架概述
- 概述struts,以及struts如何实现MVC架构的?
- 第1章 Struts 2概述 1.1 MVC思想概述
- Struts概述
- Struts概述
- Struts 概述
- Struts概述
- Struts 概述
- Struts概述
- Struts概述
- Struts概述
- Struts概述
- struts学习(1)——MVC模型及struts 2概述
- struts MVC
- MVC#概述
- AJAX案例研究之Gmail
- 如何运行C++ STL程序
- linux 下 MySQL 的 安装
- 使用 RSS 和 Atom 实现新闻联合
- Linux 下安装支持SSL连接的 Mysql
- MVC Struts 概述
- 数据库中判断字段中字符串长度 截取字符,字符转换,
- 防止框架页刷新后回到原始页面的问题
- WPF, WPF/E释疑
- ASP.NET中引用dll“找不到指定模块"的完美解决办法
- 文件头定义命名空间
- C#中调用API
- 记事本的另存为测试
- 网页起始处理