`
king_tt
  • 浏览: 2083483 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts 框架的基本概念及实现MVC模式的原理

 
阅读更多
<!--邮件订阅框开始--><script language="javascript" type="text/javascript" src="http://www.feedsky.com/msub_ajax_sub_js.html?burl=softwave&amp;t=1&amp;c=orange"></script><!--邮件订阅框结束-->

Struts 框架的基本概念

当建筑师开始一个建筑项目时,首先要设计该建筑的框架结构,有了这份蓝图,接下来的实际建筑过程才会有条不紊,井然有序。同样,软件开发者开始一个软件项目时,首先也应该构思该软件应用的框架,规划软件模块,并定义这些模块之间的接口和关系。简单地说,框架是一组用于解决特定软件问题的类和接口的集合。
框架可以提高软件开发的速度和效率,并且使软件更便于维护。框架提供了一整套预制的软件构件,能够为开发者所使用、扩展及定制以满足特定的业务需求。框架是软件系统的设计开发过程中的一个概念,它强调对已完成的设计、代码的重复使用。框架通常具有如下的特性:
(1)组成框架的类和组件,一般都提供对一些概念、方法的抽象。
(2)框架定义抽象直接的关系和交互,用以解决特定的问题。
(3)框架的组件是可重用的。
对于开发 Web 应用,要从头设计并开发出一个可靠、稳定的框架并不是一件容易的事。幸运的是,随着 Web 开发技术的日趋成熟,在 Web 开发领域出现了一些现成的优秀的框架,开发者可以直接使用它们,Struts 就是一种不错的选择,它是基于MVC 的 Web 应用框架。
Struts 最早于 2000 年 5 月作为 Jakarta 项目的组成部分问世,Jakarta 项目由Apache(www.Jakarta.apache.org)基金组织运作。Jakarta-Struts 是 Apache 软件组织提供的一项开放源代码项目,它为 Java Web 应用提供了模型-视图-控制器(Model-View-Controller,MVC)框架,尤其适用于开发大型可扩展的 Web 应用。Struts这个名字来源于在建筑和旧式飞机中使用的支撑金属架。Struts 为 Web 应用提供了
一个通用的框架,使得开发人员可以把精力集中在如何解决实际业务问题上。此外,Struts 框架提供了许多可供扩展和定制的地方,使得应用程序可以方便地扩展框架,来更好地适应用户的实际需求。

Struts 实现 MVC 的原理

Struts 实质上就是在 JSP Model2 地基础上实现的一个 MVC 框架。在 Struts 框架中,模型由实现业务逻辑地 JavaBean 或 EJB 组件构成,控制器由 ActionServlet 和Action 来实现,视图由一组 JSP 文件构成。
(1)视图
视图就是一组 JSP 文件。在这些 JSP 文件中没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准地 JSP 标签或客户化标签,如 Struts 标签库中的标签。此外,通常把 Struts 框架中的 ActionForm Bean 也划分到视图模块中。ActionFormBean 也是一种 JavaBean,除了具有一些 JavaBean 的常规方法,还包含一些特殊的方法,用于验证 HTML 表单数据以及将其属性重新设置为默认值。Struts 框架利用ActionFrom Bean 来进行视图和控制器之间表单数据的传递,Struts 框架把用户输入的表单数据保存在 ActionFrom Bean 中,把它传递给控制器,控制器可以对ActionFrom Bean 中的数据进行修改,JSP 文件使用 Struts 标签读取修改后的ActionFrom Bean 的信息,重新设置 HTML 表单。
(2)模型
模型表示应用程序的状态和业务逻辑。对于大型应用,业务逻辑通常由 JavaBean或 EJB 组件实现。
(3)控制器
控制器由 ActionServlet 类和 Action 类来实现。ActionServlet 类是 Struts 框架中的核心组件。ActionServlet 继承了 Javax.servlet.http.HttpServlet 类,它在 MVC 模型中扮演中央控制器的角色。ActionServlet 主要负责接受 HTTP 请求信息,根据配置文件 struts-config.xml 的配置信息,把请求转发给适当的 Action对象。如果该 Action对象不存在,ActionServlet 会先创建这个 Action 对象。Action 类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。
对于小型简单的应用,Action 类本身也可以完成一些实际的业务逻辑。对于大型应用,Action 充当用户请求和业务逻辑处理之间的适配器(Adaptor),其功能就是将请求于业务逻辑分开,Action 根据用户请求调用相关的业务逻辑组件。业务逻辑由 Java Bean 或 EJB 来完成,Action 类侧重于控制应用程序的流程,而不是实现应用程序的逻辑[28]。通过将业务逻辑放在单独的 Java 包或 EJB 中,可以提高应用程序的灵活性和可重用性。
当 ActionServlet 控制器收到用户请求后,把请求转发到一个 Action 实例。如果这个实例不存在,控制器会首先创建它,然后调用这个 Action 实例的 execute()方法。Action 的 execute()方法返回 ActionForward 对象,它封装了把用户请求再转发给其他 Web 组件的信息。用户定义自己的 Action 类,即 Action 基类的子类时,必须覆盖 execute()方法。在 Action 基类中返回 null。
(4)Struts 的配置文件 struts-config.xml
上面讲到的一个用户请求是通过 ActionServlet 来处理和转发的。那么,ActionServlet 如何决定把用户请求转发给哪个 Action 对象呢?这就需要一些描述用户请求路径和 Action 映射关系的配置信息了。在 Struts 中,这些配置映射信息都存储在特定的 XML 文件 struts-config.xml 中。在该配置文件中,每一个 Action 的映射信息都通过一个<action>元素来配置。
这些配置信息在系统启动的时候被读入内存,供 Struts 在运行期间使用。在内存中,每一个<action>元素都对应一个 org.apache.struts.action.ActionMapping 类的实例。
<!-- Google Reader shared发布代码开始 --> <script type="text/javascript" src="http://www.google.com/reader/ui/publisher.js"></script><script type="text/javascript" src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&amp;callback=GRC_p(%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D)%3Bnew%20GRC"></script><!-- Google Reader shared发布代码结束 --><!--Google 468*60 Firefox推介开始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as_rimg"; google_cpa_choice = "CAEQuZSgnAIaCCdTYVW5ruWvKJnA93M"; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--Google 468*60 Firefox推介结束-->
分享到:
评论

相关推荐

    Struts 框架的基本概念及实现MVC模式的原理.rar

    Struts 框架的基本概念及实现MVC模式的原理.rar

    基于Struts框架的短信办公平台软件设计与实现* (2006年)

    首先结合高等教育的特殊应用需求简单介绍MVC设计模式和Struts框架的基本概念;然后重点分析了短信办公平台软件的整体设计架构,并给出该架构的特点和原理;最后详细阐述了软件架构中各模块的实现技术。基于Struts的...

    Struts2 in action中文版

    1.3.2 Struts 2概览:MVC模式 10 1.3.3 Struts 2的工作原理 12 1.4 小结 14 第2章 初识Struts 2 16 2.1 声明性架构 16 2.1.1 两种配置 16 2.1.2 声明架构的两种方式 17 2.1.3 智能默认值 20 2.2 简单的HelloWorld...

    第四章-Hibernate.ppt

    MVC设计模式的基本概念 Struts2框架的基本概念与工作原理 Struts2的安装和配置 Struts2的类型转换与输入校验 Struts2标签库 Struts2拦截器

    JAVA程序开发大全---上半部分

    第8章 Struts框架的开发及应用 117 8.1 Struts框架概述 117 8.1.1 MVC设计模式 117 8.1.2 Struts框架工作原理 118 8.1.3 Struts框架执行流程 118 8.2 MyEclipse创建基于Struts框架的项目 119 8.2.1 创建Struts项目 ...

    Java Web程序设计教程

    5.1.3struts2框架的mvc架构 82 5.2struts2概览 84 5.2.1struts2的工作流程 84 5.2.2struts2的简单应用 85 5.3struts2基础 87 5.3.1action详解 88 5.3.2结果与视图 91 5.3.3struts.xml的配置 94 5.4值栈与...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    基于J2EE框架的个人博客系统项目毕业设计论...

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    Java语言基础下载

    struts框架的优势 639 Struts如何实现Model 2, MVC 639 Struts 控制流 639 Struts framework的工作原理和组件 642 Struts ActionServlet控制器对象 642 Struts Action Classes 642 搞定Action对象 643 处理异常 643 ...

    Spring面试题

    MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单...

    java面试题

    struts2.0的mvc模式?与struts1.0的区别? 74 72.13. struts1.2和struts2.0的区别?如何控制两种框架中的单例模式? 74 73. Spring 75 73.1. Spring 简介 75 73.2. 为什么要用Spring? 76 73.3. spring工作机制或工作...

    java必了解的六大问题

    *第十一阶段:JSP开发:JSP语法和标签,自定义标签,EL,JSTL库了解以及MVC三层架构的设计模式理念; *第十二阶段:AJAX开发:AJAX原理,请求响应处理,AJAX开发库; *第十三阶段:轻量级框架,三大框架之一...

    千方百计笔试题大全

    96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101...

    java面试宝典

    96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101...

    J2EE应用开发详解

    124 8.5.2 拦截器的实现原理 124 8.5.3 Struts2的内置拦截器 124 8.5.4 拦截器的配置和使用 125 8.5.5 自定义拦截器 126 8.6 一个简单的Struts2应用 130 8.7 小结 140 第9章 JSF 141 9.1 JSF技术简介 141 9.1.1 JSF...

    java web 视频、电子书、源码(李兴华老师出版)

    9.10.1、过滤器的基本概念 9.10.2、实现过滤器 9.10.3、过滤器的应用 9.11、监听器 9.11.1、对application监听 9.11.2、对session监听 9.11.3、对request监听 9.11.4、监听器实例 —— 在线人员统计 ...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    9.10.1、过滤器的基本概念 9.10.2、实现过滤器 9.10.3、过滤器的应用 9.11、监听器 9.11.1、对application监听 9.11.2、对session监听 9.11.3、对request监听 9.11.4、监听器实例 —— 在线人员统计 9.12、...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    9.10.1、过滤器的基本概念 9.10.2、实现过滤器 9.10.3、过滤器的应用 9.11、监听器 9.11.1、对application监听 9.11.2、对session监听 9.11.3、对request监听 9.11.4、监听器实例 —— 在线人员统计 ...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    9.10.1、过滤器的基本概念 9.10.2、实现过滤器 9.10.3、过滤器的应用 9.11、监听器 9.11.1、对application监听 9.11.2、对session监听 9.11.3、对request监听 9.11.4、监听器实例 —— 在线人员统计 9.12、...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    9.10.1、过滤器的基本概念 9.10.2、实现过滤器 9.10.3、过滤器的应用 9.11、监听器 9.11.1、对application监听 9.11.2、对session监听 9.11.3、对request监听 9.11.4、监听器实例 —— 在线人员统计 9.12、...

Global site tag (gtag.js) - Google Analytics