框架StrutsMVC企业应用应用服务器 
1、Struts应用框架介绍
(1)框架
框架最简单的形式是指已开发过并已测试过的软件的程序块,这些程序块可以在多个软件开发工程中重用。框架提供了一个概括的体系结构模版,可以用这个模板来构建特定领域中的应用程序。
Framework概念并不是很新了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。这意味着人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。
于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。这也就是我们所说的Framework。Framework的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个framework开发上的结构。
(2)为什么会出现应用框架
您只要细心地研究真实的应用程序,就会发现程序大致上由两类性质不同的组件组成,一类与程序要处理的具体事务密切相关,我们不妨把它们叫做业务组件;另一类是应用服务。
比如说:一个税务征管系统和一个图书管理系统会在处理它们的业务方面存在很大的差异,这些直接处理业务的组件由于业务性质的不同不大可能在不同的系统中重用,而另一些组件如决定程序流向的控制、输入的校验、错误处理及标签库等这些只与程序相关的组件在不同的系统中可以很好地得到重用。
人们自然会想要是把这些在不同应用程序中有共性的一些东西抽取出来,做成一个半成品程序,这样的半成品就是所谓的程序框架,再做一个新的东西时就不必白手起家,而是可以在这个基础上开始搭建。实际上,有些大型软件企业选择自己搭建这样的框架。
(3)为什么要用框架?
因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。
(3)Struts Web应用框架
Struts 是 Apache 软件基金会(Apache Software Foundation)资助的一个为开发基于MVC模式应用架构的开源框架,是利用Java Servlet和JSP、XML等方面的技术来实现构建Web应用的一项非常有用的技术,它也是基于MVC模式的Web应用最经典框架。
Struts框架的主要架构设计和开发者是Craig R.McClanahan。Struts 是目前Java Web MVC框架中不争的王者。经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。
Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,主要由一系列的框架类、辅助类和定制的JSP标记库构成。开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间。
2、框架的组成
一个设计良好的框架一般分为三层:
(1)接口层
这一层要尽量使用interface,在这一层中你要考虑到你现在的、将来的可能支持的功能,但不需要去实现它,只定义到接口层次就可以了。如Struts中的插件接口PlugIn。
(2)抽象层
这一层要针对你当前的需求做定制,对你的需求中的通用逻辑做实现。这一层应该出现大量的抽象类。如Struts中的ActionServlet、Action和ActionForm等类。
(3)实现层
不用说了,把前面两层没有做掉的事情在这一层都做了吧。如Struts中后台实现的各种功能
3、为什么要提出Struts
(1)背景
由于我们开发Web应用的复杂度随着系统的复杂度的要求越来越来复杂。特别是在代码重用,代码移植、代马可插扒等问题上出现了许多重复开发、维护困难等。从而提出了Struts开发框架。它的设计目的是从整体上减轻构造企业Web应用的负担,并提供国际化和数据库连接池支持。
Struts 是一组相互协作的类、servlet 和 JSP 标记,它们组成一个可重用的 MVC 2 设计。这个定义表示 Struts是一个框架,而不是一个库,但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。
(2)采用Struts的优点
在实际开发中,MVC框架开发相当费时,Struts 实现了MVC这种框架,但又扩充了该MVC框架。这样使得系统的开发就像“填空”一样进行,相当快速。
l  采用Strust可以加快开发速度、增强系统的灵活性、降低系统的藕合性(  分工明确:业务层与表示层分开,使得管理人员可以在小组内分配责任。网页设计人员与JAVA程序员各司其职。
l  简化页面:使用标记,把逻辑处理的代码分离开来。
l  通过将问题划分为更小的组件,当技术空间或问题空间中出现变化时,您就有更多的机会重用代码。
(3)Struts的缺点
l  有限的适用范围:Struts 是一种基于 Web 的 MVC 解决方案,所以必须用 HTML、JSP 文件和 Servlet 来实现它。
l  J2EE 应用程序支持
l  复杂性:在将问题分为几个部分的同时也引入了复杂性(在强健性增强的同时,也意味着复杂性的增加)。
4、Struts压缩包内容
下载后的*.zip包文件包含两个目录,lib和webapps。在lib目录中有使用struts创建应用程序是所需的文件:
文件
描述
jdbc2_0-stdext.jar
包含JDBC2.0 Optional Package API类。如果我们要使用struts提供的数据资源,就需要将这个文件拷贝到WEB-INF\lib下
Struts.jar
包含struts中所有的java类。同样也需要拷贝到WEB-INF\lib下
*.tld
标记库描述器文件,描述了多个struts标记库中的自定义标记。同样要拷贝到WEB-INF\lib下
在webapps目录下有如下文件:
Web应用程序
描述
Struts-blank.war
一个简单的web应用程序
Struts-documentation.war
包含struts站点上所有struts文档
Struts-example.war
Struts很多特性的示范
Struts-exercisetaglib.war
主要用于对自定义标签库进行增加而使用的测试页,但也可以示范如何使用struts标记
Struts-template.war
包含struts模板标记的介绍和范例
Struts-upload.war
一个简单的例子,示范如何使用struts框架上传文件
 
5、Struts的整体框架
(1)Struts框架的MVC组件结构图
在struts框架中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ActinForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。
大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。
小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。
Struts为Model部分提供了Action和ActionForm两种Bean对象:所有的Action处理器对象都是开发者从Struts的Action类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。
Struts提供的ActionForm组件对象,它可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和Struts提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action处理器对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。
(2)Struts框架的处理流程
l  首先,控制器(ActionServlet)进行初始化工作,读取配置文件(struts-config.xml),为不同的Struts模块初始化相应的ModuleConfig对象。比如配置文件中的Action映射定义都保存在ActionConfig集合中。相应地有ControlConfig集合、FormBeanConfig集合、ForwardConfig集合和MessageResourcesConfig集合等。
l  Struts框架的处理流程清楚的体现了MVC系统的特点,所有的页面请求都将发送到Struts的前端控制器ActionServlet中(因此如果要进行前置处理,可以继承ActionServlet并重写process()方法),同时ActionServlet也将根据struts-config.xml配置文件中的设置(<action>标签)来决定转向到那个后端控制器Action类。
l  当页面中的Form表单被提交时,ActionForm将自动地封装和处理该Form表单中的数据。同时在Action的子类中可以存取存储在ActionForm中的Form表单数据。
l  Action的子类将处理所获得的存储在ActionForm中的Form表单数据,处理和响应客户请求,它还调用后台的JavaBean组件完成具体的业务逻辑。同时也按照在struts-config.xml文件内的forward标签内容(如<forward name="sayHello" path="/sayHello.jsp"/>),将结果交由某个JSP页面显示。
(3)Struts体系组成
       Struts体系可以看成两个相对独立的部分:
第一个部分是Struts API,用于编写支持Struts的应用组件;
第二部分是Struts的JSP标记库,由html、bean、logic和template四个标记组成。
Struts的两个部分有着各自不同的用户。对于规模较小的项目,同一个用户可能同时使用这两个部分;但对于规模较大的项目,通常开发者使用API组件,而负责HTML页面布局的人使用标记库。
(4)struts-config.xml配置文件
框架中的模型(M)、视图(V)、控制器(C) 三个部分是通过struts-config.xml配置文件将其联系在一起。一个标准的struts-config文件包含如下结构,有一点要引起大家的注意的,就是,struts-config.xml中配置的各个项目是有一定的顺序要求的,几个主要项目的顺序大致是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
注意:各个标签项目是有一定的顺序要求的!

"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd >

<struts-config>
<data-sources /> // 定义数据源
<form-beans /> // 定义ActionForm
<global-exceptions /> // 定义全局异常
<global-forwards /> // 定义全局转向url
<action-mappings /> // 定义action
<controller /> // 配置Controller
<message-resources /> // 配置资源文件
<plug-in /> // 配置资源文件
</struts-config>
(5)Struts与其它框架的不同
       在Struts应用中,有一个称为ActionServlet的主调度程序(或称为分配器)。不过,并非所有的请求都必须通过ActionServlet(以“*.do”结尾的URL都是Struts请求)。用户的请求目标可以是非Struts的页面,也可以是那些使用了Struts标记库但不使用Struts请求分配服务的页面。这正是Struts体系的优点之一:按需使用。许多编程框架要求你要么不用,要么全部使用,而且一旦你决定使用,以后要悔改从前的错误就会付出高昂的代价。Struts按需使用的优点与这类系统形成了强烈对比。

Struts框架详解相关推荐

  1. jQuery Validate验证框架详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.导入js库 <script type="text/javascript" src="& ...

  2. shiro放行_Shiro框架详解 tagline

    部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...

  3. [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解

    深入浅出 Cocoa 之 Core Data(1)- 框架详解 罗朝辉(http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 Core data 是 Cocoa 中处 ...

  4. WebDriver自动化测试框架详解

    webDriver自动化测试框架详解 一. 简介 WebDriver API相对于Selenium Remote Control API来说,虽然同样是控制浏览器,但它的编程接口更加简洁 WebDri ...

  5. atitit.jQuery Validate验证框架详解与ati Validate 设计新特性

    atitit.jQuery Validate验证框架详解与ati Validate 设计新特性 1. AtiValidate的目标1 2. 默的认校验规则1 2.1. 使用方式 1.metadata用 ...

  6. Android 动画框架详解,第 1 部分

    2019独角兽企业重金招聘Python工程师标准>>> Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框 ...

  7. springboot2整合mysql5_SpringBoot2整合SSM框架详解

    SpringBoot2整合SSM框架详解 发布时间:2019-01-15 21:33, 浏览次数:1218 , 标签: SpringBoot SSM <>开发环境 * 开发工具:Eclip ...

  8. Django REST FRAMEWORK swagger(一)框架详解

    Django REST FRAMEWORK swagger(一.框架详解) 一.Django REST  SWAGGER框架图 具体见下图 二.说明 RESTFul说明 每一个URI代表一种资源: 客 ...

  9. 框架详解_Qt开发技术:QtCharts(一)QtCharts基本介绍以及图表框架详解

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  10. iOS开发之Accounts框架详解

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发之Accounts框架详解 Accounts框架是iOS原生提供的一套账户管理框架,其支持Facebook,新浪微博 ...

最新文章

  1. c++经典书籍--提高C++性能的编程技术
  2. 一个很艰难的 Java 核心面试问题!
  3. 你在第几楼?80后、90后扎心图鉴
  4. C++binomial calculate二项式计算的算法(附完整源码)
  5. 【Java语法】DateFormat时间格式转化、java.util.Date和java.sql.Date之间的相互转化
  6. MIP开发教程(三) 使用MIP-CLI工具调试组件
  7. 西瓜书+实战+吴恩达机器学习(三)机器学习基础(多分类、类别不平衡)
  8. 导弹拦截(数据加强版)
  9. 分析器错误信息 未能加载类型 命名空间 类 ---小结
  10. html中图片亮度调节,HTML+CSS+JS 模仿 Win10 亮度调节效果
  11. 机器学习——概念理解之IoU
  12. git报错-The file will have its original
  13. 如何用ps做故障艺术风格效果
  14. 索尼正式公布新掌机PSP2——NGP
  15. OneDrive操作指南
  16. 网站SEO 第四部分:SEO 指导下的技术支持
  17. 转贴一篇经典文章--条件判定覆盖和修正条件判定覆盖的差异
  18. java使用poi、itextpdf将word、ppt转为pdf文件,并对pdf文件加盖签章
  19. SDNU1040.导弹拦截
  20. 深圳智能电销机器人oem高效开发自己的品牌

热门文章

  1. 计算机教室戴尔电脑网络同传,DELL商用台式电脑如何作网络同传
  2. Python练习题和答案
  3. Mysql 数据库 主从数据库 (主从)(主主)
  4. python自带的帮助文档
  5. HSPF(Hydrological Simulation Program Fortran)模型应用
  6. 2022软件测试技能 Jmeter+Ant+Jenkins持续集成并生成测试报告教程
  7. Android TextView 跑马灯效果和 EditText 冲突解决办法
  8. CSS —— 多媒体查询
  9. 《Java就业培训教程》_张孝祥_书内源码_10
  10. 基于大数据的音乐推荐系统的设计与实现