基于MVC模式的web开发框架的研究毕业论文.doc_第1页
基于MVC模式的web开发框架的研究毕业论文.doc_第2页
基于MVC模式的web开发框架的研究毕业论文.doc_第3页
基于MVC模式的web开发框架的研究毕业论文.doc_第4页
基于MVC模式的web开发框架的研究毕业论文.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕 业 论 文 题 目 基于 MVC 模式的 WEB 开发框架研究 基于 MVC 模式的 WEB 开发框架研究 摘要摘要 MVC 设计模式是基于 J2EE 的 Web 应用开发的首选模式 当前许多流行的框架 也都是基于 MVC 设计模式的 本文介绍了 MVC 设计模式的结构和优缺点 然后介绍 了 Sun 公司提出的再 Java Web 开发领域的两种规范 JSP Model1 和 JSP Model2 接着介绍了 Struts 实现 MVC 的机制 并在此基础上提出了一种基于 MVC 模式的新型 WEB 应用开发框架 WebFramework 并对该框架的各个层次的组成 功能进行了详 细的描述 关键词关键词 MVC 设计模式 J2EE Struts WebFramework 1 1 引言引言 5 5 2 2 MVCMVC 概述概述 5 5 2 1 MVC 设计模式 5 2 2 视图 VIEW 6 2 3 模型 MODEL 7 2 4 控制器 CONTROLLER 7 2 5 MVC 处理过程 7 2 6 MVC 的优点 8 2 7 MVC 的不足 8 2 8 MVC 的适用范围 9 3 3 JSPJSP MODEL1MODEL1 和和 JSPJSP MODEL2MODEL2 9 9 3 1 早期的 JAVA WEB开发 9 3 2 JSP MODEL1 10 3 3 JSP MODEL2 11 4 4 基于基于 STRUTSSTRUTS 框架的框架的 WEBWEB 系统的应用系统的应用 1111 4 1 STRUTS 如何实现 MVC 模式 12 4 2 STRUTS 框架在 WEB 系统中的实现 12 4 3 设计模式中的模板方法模式的介绍 14 4 4 用模板方法模式实现程序控制流 14 4 5 STRUTS的优点 16 4 6 STRUTS的不足 16 5 5 WEBFRAMEWORKWEBFRAMEWORK 框架框架 1616 5 1 设计目标 16 5 2 框架结构 17 5 3 框架的配置文件 20 结论结论 2121 致谢致谢 2121 参考文献参考文献 2121 1 1 引言引言 模型 视图和控制器即 MVC 模式是在 Smalltalk 80 中使用的一种软件设计 模式 这种模式在应用到 Web 开发中 也就是 SUN 公司的 Model2 架构 在很多场 合这两个词交互使用 既然说到了 MVC 模式 我们不得不提 Struts 框架体系结构 众所周知 它是 MVC 的一种很好的实现 Struts 框架的核心是一个 MVC 风格的控 制器 搭起了模型和视图之间的支柱桥梁 随着开源软件的兴起 各种框架也纷纷出现 在实际软件开发中运用这些框架 大大降低了 J2EE 开发的复杂度和难度 降低了开发成本 但是这些框架也有不足的 地方 如难于掌握 配置复杂等等 本文研究的目的在于设计出一种简单易行的 WEB 开发框架 WebFramework WebFramework 结构清晰 易于理解 增加系统的可扩 展性 可维护性 降低开发成本 2 2 MVCMVC 概述概述 MVC 模式是 Model View Controller 的缩写 中文翻译为 模式 视图 控制器 MVC 是 Xerox PARC 在 20 世纪 80 年代为编程语言 SmallTalk 80 发明的一种软件 设计模式 至今已被广泛使用 最近几年被推荐为 Sun 公司 J2EE 平台的设计模式 受到越来越多的 Web 开发者的欢迎 2 12 1 MVCMVC 设计模式设计模式 MVC 是一种设计模式 她强制性地把应用程序的输入 处理和输出分开 MVC 应 用程序总是由这三个部分组成 模型 视图和控制器 它们分别担负不同的任务 图 2 1 显示了这几个模块各自的功能以及它们的相互关系 控制器 接受用户的请求 调用模型响应用户请求 选择视图显示响应结果 模型 代表应用程序状态 响应状态查询 处理业务流程 通知视图业务状态更新 视图 显示模型状态 接受数据更行请求 把用户输入数据传给控 制器 业务处理选择视图 状态查询 通知数据更新 用户请求 方法调用 事件 Controller Model View 图 2 1 MVC 设计模式 Event 事件 导致 Controller 改变 Model 或 View 或者同时改变两者 只要 Controller 改变了 Models 的数据或者属性 所有依赖的 View 都会自动更新 类似 的 只要 Controller 改变了 View View 会从潜在的 Model 中获取数据来刷新自己 2 22 2 视图 视图 ViewView 视图时用户看到并与之交互的界面 视图向用户显示相关的数据 并能接受用 户的输入数据 但是它并不进行任何实际的业务处理 视图可以向模型查询业务状 态 但不能改变模型 视图还能接受模型发出的数据更新事件 从而对用户界面进 行同步更新 对于 Web 应用来说 可以概括为 HTML 界面 但有可能为 XHTML XML 和 Applet 随着应用的复杂性和规模性 界面的处理也变得具有挑战性 一个应用可 能有很多不同的视图 MVC 设计模式对于视图的处理仅限于视图上数据的采集和处理 以及用户的请求 而不包括在视图上的业务流程的处理 业务流程的处理交予模型 Model 处理 比如一个订单的视图只接受来自模型的数据并显示给用户 以及将用 户界面的输入数据和请求传递给控制和模型 注 对于基于请求 响应方式的主体 模型表示业务数据和业务逻辑 一个模 型能为多个视图提供数据 由于同一个模型可以被多个视图重用 所以提高了应用 的可重用性 2 32 3 模型 模型 ModelModel 模型是应用程序的主体部分 模型表示业务数据和业务逻辑 就是业务流程 状 态的处理以及业务规则的制定 一个模型能为多个视图提供数据 由于同一个模型 可以被多个视图重用 所以提高了应用的可重用性 业务流程的处理过程对其它层来说是黑箱操作 模型接受视图请求的数据 并 返回最终的处理结果 业务模型的设计可以说是 MVC 最主要的核心 目前流行的 EJB 模型就是一个典型的应用例子 它从应用技术实现的角度对模型做了进一步的划分 以便充分利用现有的组件 但它不能作为应用设计模型的框架 它仅仅告诉你按这 种模型设计就可以利用某些技术组件 从而减少了技术上的困难 对一个开发者来 说 就可以专注于业务模型的设计 MVC 设计模式告诉我们 把应用的模型按一定的 规则抽取出来 抽取的层次很重要 这也是判断开发人员是否优秀的设计依据 抽 象与具体不能隔得太远 也不能太近 MVC 并没有提供模型的设计方法 而只告诉你 应该组织管理这些模型 以便于模型的重构和提高重用性 我们可以用对象编程来 做比喻 MVC 定义了一个顶级类 告诉它的子类你只能做这些 但没法限制你能做这 些 这点对编程的开发人员非常重要 业务模型还有一个很重要的模型那就是数据模型 数据模型主要指实体对象的 数据保存 持续化 比如将一张订单保存到数据库 从数据库获取订单 我们可 以将这个模型单独列出 所有有关数据库的操作只限制在该模型中 2 42 4 控制器 控制器 ControllerController 控制器接受用户的输入并调用模型和视图去完成用户的需求 当 Web 用户单击 Web 页面中的提交按钮来发送 HTML 表单时 控制器接受请求并调用相应的模型组件 去处理请求 然后调用相应的视图来显示模型返回的数据 划分控制层的作用也很明显 它清楚地告诉你 它就是一个分发器 选择什么 样的模型 选择什么样的视图 可以完成什么样的用户请求 控制层并不做任何的 数据处理 例如 用户点击一个连接 控制层接受请求后 并不处理业务信息 它 只把用户的信息传递给模型 告诉模型做什么 选择符合要求的视图返回给用户 因此 一个模型可能对应多个视图 一个视图可能对应多个模型 2 52 5 MVCMVC 处理过程处理过程 现在我们来总结 MVC 处理过程 首先控制器接受用户的请求 并决定应该调用 哪个模型来进行处理 然后模型根据用户请求进行相应的业务逻辑处理 并返回数 据 最后控制器调用相应的视图来格式化模型返回的数据 并通过视图呈现给用户 2 62 6 MVCMVC 的优点的优点 大部分用过程语言比如 ASP PHP 开发出来的 Web 应用 初始的开发模板就是混 合层的数据编程 例如 直接向数据库发送请求并用 HTML 显示 开发速度往往比较 快 但由于数据页面的分离不是很直接 因而很难体现出业务模型的样子或者模型的 重用性 产品设计弹性力度很小 很难满足用户的变化性需求 MVC 要求对应用分层 虽然要花费额外的工作 但产品的结构清晰 产品的应用通过模型可以得到更好地 体现 首先 最重要的是应该有多个视图对应一个模型的能力 在目前用户需求的快 速变化下 可能有多种方式访问应用的要求 例如 订单模型可能有本系统的订单 也有网上订单 或者其他系统的订单 但对于订单的处理都是一样 也就是说订单 的处理是一致的 按 MVC 设计模式 一个订单模型以及多个视图即可解决问题 这 样减少了代码的复制 即减少了代码的维护量 一旦模型发生改变 也易于维护 其次 由于模型返回的数据不带任何显示格式 因而这些模型也可直接应用于 接口的使用 此外 由于一个应用被分离为三层 因此有时改变其中的一层就能满足应用的 改变 一个应用的业务流程或者业务规则的改变只需改动 MVC 的模型层 控制层的 概念也很有效 由于它把不同的模型和不同的视图组合在一起完成不同的请求 因 此 控制层可以说是包含了用户请求权限的概念 最后 它还有利于软件工程化管理 由于不同的层各司其职 每一层不同的应 用具有某些相同的特征 有利于通过工程化 工具化产生管理程序代码 2 72 7 MVCMVC 的不足的不足 MVC 的不足体现在以下几个方面 1 增加了系统结构和实现的复杂性 对于简单的界面 严格遵循 MVC 使模型 视图与控制器分离 会增加结构的复杂性 并可能产生过多的更新操作 降 低运行效率 2 视图与控制器间的过于紧密的连接 视图与控制器是相互分离 但确实联系 紧密的部件 视图没有控制器的存在 其应用是很有限的 反之亦然 这样 就妨碍了他们的独立重用 3 视图对模型数据的低效率访问 依据模型操作接口的不同 视图可能需要多 次调用才能获得足够的显示数据 对未变化数据的不必要的频繁访问 也将 损害操作性能 4 目前 一般高级的界面工具或构造器不支持 MVC 架构 改造这些工具以适应 MVC 需要和建立分离的部件的代价是很高的 从而造成使用 MVC 的困难 2 82 8 MVCMVC 的适用范围的适用范围 使用 MVC 需要精心的计划 由于它的内部原理比较复杂 所以需要花费一些时 间去理解它 讲 MVC 运用到应用程序中 会带来额外的工作量 增加应用的复杂性 所以 MVC 不适合小型的应用程序 但对于开发存在大量用户界面 并且业务逻辑复杂的大型应用程序 MVC 将会使 软件在健壮性 代码重用和结构方面上一个新的台阶 尽管在最初构建 MVC 框架时 会花费一定的工作量 但从长远的角度来看 它会大大提高后期软件开发的效率 3 3 JSPJSP Model1Model1 和和 JSPJSP Model2Model2 3 13 1 早期的早期的 JavaJava WebWeb 开发开发 尽管 MVC 设计模式很早就出现了 但在 Web 应用的开发中引入 MVC 却是步履维 艰 主要原因是在早期的 Web 应用的开发中 程序语言和 HTML 的分离一直难以实现 例如在 JSP 网页中执行业务逻辑的程序代码和 HTML 表示层数据混杂在一起 因而很 难分离出单独的业务模型 这使得维护 JSP 网页非常困难 很难满足用户的变化性 需求 在早期的 Java Web 应用中 JSP 文件负责业务逻辑 控制网页流程并创建 HTML 参见图 3 1 JSP 文件时一个独立的 自主完成所有任务的模块 这给 Web 开 发带来一系列问题 HTML 代码和 Java 程序强耦合在一起 JSP 文件的编写者必须既是网页设计 者 有是 Java 开发者 但实际情况是 多数 Web 开发人员要么只精通网页 设计 能够设计出漂亮的网页外观 但是编写的 Java 代码很糟糕 要么仅 熟悉 Java 编程 能够编写健壮的 Java 代码 但是设计的网页外观很难看 兼备两种才能的开发人员很少见 内嵌的流程逻辑 要理解应用程序的整个流程 必须浏览所有网页 试想一 下拥有 100 个网页的网站的错综复杂的逻辑 调试困难 除了很糟的外观之外 HTML 标记 Java 代码和 JavaScript 代码 都集中在一个网页中 使调试变得相当困难 强耦合 更改业务逻辑或数据可能牵涉相关的多个网页 美学 设想有 1000 很代码的网页 起编码样式看起来杂乱无章 即使有彩 色语法显示 阅读和理解这些代码仍然比较困难 浏览器JSP数据库 修改数据请求 响应读取数据 图 3 1 JSP 作为自主独立的模块 为了解决以上问题 SUN 公司先后制定了两种规范 成为 JSP Model 和 JSP Mode2 虽然 Model 在一定程度上实现了 MVC 但是它的运行并不理想 知道居于 J2EE 的 JSP Model2 问世才得以改观 JSP Model2 用 JSP 实现视图的功能 用 Servlet 技术实现控制器的功能 用 JavaBean 技术实现模型的功能 3 23 2 JSPJSP Model1Model1 JSP Model1 和 JSP Model2 的 区别在于处理用户请求的位置不同 在 Model1 体 系中 如图 3 2 所示 JSP 页面负责响应用户请求并将处理结果返回用户 JSP 既要 负责业务流程控制 又要负责提供表示层数据 同事充当视图和控制器 未能实现 这两个模块之间的独立和分离 尽管 Model1 体系十分合适简单应用的需要 它却不 适合开发复杂的大型应用程序 不加选择地随意运用 Model1 会导致 JSP 页嵌入大 量的 Java 代码 尽管这对于 Java 程序员来说可能不是什么大问题 但如果 JSP 页 面是由网页设计人员开维护的 这就确实是个问题了 从根本上讲 讲导致角色定 义不清和职责分配不明 给项目管理带来很多麻烦 浏览 器 Web 服务器 1 请求 4 响应 应用服务器和数据库 JSP JavaBean 2 图 3 2 JSP Model1 3 33 3 JSPJSP Model2Model2 JSP Model2 体系结构式 如图 3 3 是一种联合使用 JSP 与 Servlet 来提供动 态内容服务的方法 她吸引了 JSP 和 Servlet 两种技术各自的突出优点 用 JSP 生 成表示层的内容 让 Servlet 完成深层次的处理任务 在这里 Servlet 充当控制器 的角色 负责处理用户 在 JSP 页内需要使用的 JavaBean 对象 根据用户请求选择 合适的 JSP 也返回给用户 在 JSP 页内没有处理逻辑 他不仅负责检索原先有 Servlet 创建的 JavaBean 对象 从 Servlet 中提取动态内容插入到静态模板 这是 一种有突破性的软件设计方法 她清晰地分离了表达和内容 明确了角色定义以及 开发者与网页设计的分工 事实上 项目越复杂 使用 Model2 设计模式的好处就越 大 浏览 器 Web 服务器 1 请求 6 响应 应用服务器和数据库 控制器 Servlet 2 实例化 视图 JSP 4 5 3 模型 JavaBean 图 3 3 JSP Model2 4 4 基于基于 StrutsStruts 框架的框架的 WebWeb 系统的应用系统的应用 Struts 是 Apache 基金会 Jakarta 项目组的一个 Open Source 项目 它将 Servlet2 2 和 JSP1 1 标记用作实现的一部分 它由一组相互协作的类 servlet 和 JSP 标记 组成一个可重用的系统 设计 它能够很好地帮助 Java 开发者利用 J2EE 开发 WEB 应用 它将设计模式中 分离显示逻辑 与业务逻辑 的能力发挥的淋漓尽致 因此 越来越多的大型的 WEB 应用项目的开发都纷纷采用 Struts 框架 或者借鉴 Struts 架构设计 进行基于 MVC 模式的应用系统的开发 Struts 的工作原理如图 所示 图 4 1 Struts 的工作原理 4 14 1 StrutsStruts 如何实现如何实现 MVCMVC 模式模式 Struts 提供了一个控制器 Servlet 类 ActionServlet 来实现 MVC 模式 用来管 理 JSP 页面和其他表现层组件之间的流程控制 在表现层之外 Struts 通过使用类 ActionForward 和 ActionMapping 的控制流决策来实现 MVC 控制层模式 下面我们就 列举 Struts 的几个核心类并简要说明一下这些类是如何对应 MVC 的组件职责 ActionServlet 实现控制器功能 接受用户请求和状态改变以及发出视图选择 Action 控制器的一部分 与用户业务模型进行交互 执行状态改变或查询 以及告诉 ActionServlet 下一个要选择的视图 ActionForm 显示模块的数据 ActionForward 用户指向或者视图的选择 ActionMapping 帮助控制器将请求影射到操作 以上介绍了几个 Struts 的核心类 另外 Struts 使用了一些配置文件和视图助 手来沟通控制器和模型 这里我们就不在介绍了 接下来 我们介绍一个 Web 应用 系统 看它是如何来整合 Struts 这些可编程组件的 4 24 2 StrutsStruts 框架在框架在 WebWeb 系统中的实现系统中的实现 在这个 Web 系统中 我们根据自己的需要主要继承了 Struts 的 ActionForm 类 Action 类 以及使用了一些 Struts 的视图标签 在这里我们着重讨论的是控 制器层组件如何和业务模型层进行交互 也许你可以从图 4 1 中得到一些信息 图4 2 在上图中 我们用到了四种不同组件 它们分别对应于 MVC 不同的层 JSP 页 面表示视图层 ActionForm InitAction 和 EventAction 组件来自于控制层 而各 个具体的 InitHandler 和 EventHandler 用于业务模型层 在系统实际开发过程中 我们力求各个业务逻辑独立开发 相互间互不影响 也就是达到系统的松散耦合性 现在我们就图 1 说明一下各个组件的作用和之间的交互 JSP 页面 控制页面输出 接收来自 ActionForm 的数据 ActionForm 子类 继承 Struts 的 ActionForm 类 纪录从页面取得或将要显 示到页面的数值 作为参数在控制层和模型层之间传递 InitAction 类 用于初始化各个页面 每个页面都对应一个具体的 InitAction 子类 实现父类 InitAction 的一些方法 关于 InitAction 类和这些方法如何实现我们将在下 面介绍 EventAction 类 定义了各个页面上的事件操作 每个页面对应一个具体的 EventAction 子类 对于父类 EventAction 类我们也在下面内容中介绍 InitHandler 类 实现初始化页面的业务处理 InitHandler 类定义了一下共 同的操作和一些虚方法 而具体的 InitHandler 则来实现这些虚方法 EventHandler 类 实现页面上的事件处理 每个页面对应一个或多个 EventHandler 子类 这些类继承父类 EventHandler 同样实现了父类的一些虚方法 4 34 3 设计模式中的模板方法模式的介绍设计模式中的模板方法模式的介绍 当然 MVC 本来就是一种集合了多个设计模式的框架 它的实现已经集成到 Struts 的各个组件中 但是 在这里我们主要介绍另外一种设计模式 也就是应用 在我们的 Web 系统中的模板方法设计模式 它是独立于 Struts 框架 用于封装具 体到本系统的控制逻辑 调用不同的业务模型 在父类中定义一个算法的骨架 而 将一些具体的步骤延迟到子类中 这种模式使得子类可以不改变一个算法的结构即 可重定义该算法的某些特定步骤 它是一种类行为模式 它的结构很简单 如图 4 2 所示 图 4 3 模板方法导致一种反向的控制结构 指的是由父类来调用子类的操作 而不是 相反 图 2 中 AbstractClass 类的作用是定义子类要实现的原语操作 Primitive operation 另外 它实现了一个模板方法 定义一个算法的骨架 该方法不仅可 以调用原语操作 而且也调用定义在 AbstractClass 或其他对象中的操作 ConcreteClass 实现了原语操作以完成算法中与特定子类相关的步骤 4 44 4 用模板方法模式实现程序控制流用模板方法模式实现程序控制流 在本 Web 系统实例中 对于业务模型层的控制 多次用到模板方法设计模式 结合 Java 的反射机制实现了一些模板算法 调用不同包路径的模型组件 在本文的 第 2 部分我们讨论了一些 Action 和 Handler 类 下面我们就来具体介绍一下这些 类的实现方法和应用效果 首先 请参照图 4 3 图4 3 上图中简单表示了各个层次 Action 类的继承关系 它与图 2 的思想完全一样 也就是模板方法设计模式被应用到了我们的 Web 系统实例中 通过前面的介绍 我 们知道在系统中有很多页面 每个页面对应一个 ConcreteInitAction 一个 ConcreteEventAction 一个 ConcreteInitHandler 和多个 ConcreteEventHandler 类 为了管理和开发的方便 我们往往把这些保存在不同的包路径当中 各种 Handler 类的继承关系类似于 Action 类的继承方式 同样是基于模板方法的设计模 式 下面我们利用一段 Java 代码来具体说明其实现方法 在 InitAction 中定义的 execute 方法的一个片断 在上面的程序段落中 InitAction 类实现了一个算法 根据各个业务模型类的 路径和页面名称生成对应得模型类 从而调用相应的业务操作 行1 调用了在 InitAction 类定义并在其子类中实现的虚方法getHandlerPakageInfo 和 getScreenId 这两个方法根据不同的页面返回不同的值 从而生成不同的业务处 理InitHandler 类 从而调用不同的业务处理操作 程序段落行2 8 生成具体的 InitHandler 类 行9 10 用来初始化和调用业务逻辑操作 并返回相应的画面跳 转内容 4 54 5 StrutsStruts 的优点的优点 Struts 的优点主要体现在两个方面 表单验证和页面导航 表单验证解决了请 求数据的验证问题 增强了系统健壮性 而页面导航使系统的业务流程脉络清晰 系统各部分之间的联系可以通过配置文件反映出来 从而在一定程度上简化了系统 以后的维护工作 4 64 6 StrutsStruts 的不足的不足 1 陡峭的学习曲线 Taglib 是 Struts 的标记库 如果能灵活运用 能大提高 开发效率 但对初学者来说 却需要一个持续学习的过程 增加了系统的开 发成本 2 增加了系统的复杂度 业务层和表现层之间的耦合度太高 使得开发人员无 法专注于表现层的设计和实现 3 没有对表单数据前端验证提出方案 不利于在大型系统中使用 4 配置文件过于复杂繁索 随着系统规模的增大 struts config xml 越来越 庞大 维护也变得越来越困难 心得 模板方法是一种比较简单设计模式 它是代码复用的基本技术 在我们的 Web 系统实例中 这种模式帮助我们提取了一些公共行为操作 而把变化的操作延迟实 现 在基于 Struts 的 Java Web 系统中 随着业务需求逻辑的发展变化 一定会用 到越来越多的设计模式或开发方法 其实我们的目的就是让我们的系统更具有可复 用性和灵活性 节省开发成本和优化开发的流程 5 WebFramework 框架 针对 Struts 框架的以上不足之处 本文提出 WebFramework 框架 与 Struts 框 架相比 WebFramework 更简单易行 它通过简化表现层的设计 降低开发难度 节 约开发成本 使用 VO Value Object 作为数据传递的方式 降低系统复杂度 运 用简单的浏览器端表单字段数据验证 提高系统的运行效率 简化的配置文件 便 于系统的维护 5 1 设计目标 遵循 J2EE 规范 基于多层分布式应用软件开发框架 分布式的层次构架方式可 以提高软件系统性能上的可扩展性 从长期的角度上保障了客户对当前的软件投资 实现软件系统在异常情况下也可以正常地提供服务 提高软件系统的稳定性 各个 构架层次逻辑分离 有利于软件开发过程中团队成员的协同工作 提高生产效率 5 2 框架结构 在设计策略中 将软件系统从构架上分为数据层 业务逻辑层和表示层 主要 集中在业务表示与业务逻辑层 将普通三层架构的表示层细分成视图格式层和表示 控制逻辑层 表示层涉及基于 瘦客户 技术的用户视图格式服务器端表示和相应 的交互式控制逻辑 视图格式层 只保留了构建客户端用户视图必要的显示格式和 事件触发 而在表示控制逻辑层则如名称所描述的那样 实现了人机交互所需控制 逻辑和部分业务会话逻辑 再加上贯穿所有系统逻辑层的业务实体 则构成了以 MVC 模式为核心的表示层架构 将显示格式 显示控制逻辑 模型数据三部分有效地分 隔开来 大大加强了系统架构的可扩展性和应用子系统的可插拔性 业务层细分成业务会话层和业务持久化层 业务层集中在业务流程中处理逻辑 的组件化封装 且与数据层平台和外部系统无关 业务会话层 侧重于业务活动 将一项业务的所有活动事务性地封装起来 也确保业务流程处理的一致性和高效率 而业务持久化层则是为业务会话层提供支持 提供业务数据的持久化操作 在业务 与数据库之间建立分离作用的中间层 构成松耦合的架构 本分层模型中实现了 MVC 设计模式 其中 Servlet 组件对应于 MVC 中的控制器 Controller 部分 JSP 及 Browser 对应于视图 View 部分 而会话外观 逻辑 Bean 及值对象则对应于模型 Model 部分 其结构图 5 1 所示 5 2 15 2 1 数据层数据层 层定义 数据层对数据进行管理 并向业务逻辑层提供标准化的开放访问接口 数据层目前主要提供两种形式的服务方式 数据库方式和文件方式 数据库主 要提供业务操作数据等具有明显结构化特性的数据的存储和访问服务 文件主要提 供包括扫描文档图像 传真 照片 计算机生成的报告 字处理文档 电子表格 演示文稿 语音和视频片段等非结构化数据的存储和访问服务 主要功能 数据创建 数据存储 数据查询 数据更新 数据删除 数据安全 事务支持 数据备份 恢复 与其他层接口 数据库方式的数据层面向业务逻辑层提供数据库访问服务接口 业务逻辑 层通过 JDBC 协议访问数据库服务 文件方式的数据层面向业务逻辑层提供文件级的访问服务接口 业务逻辑 层通过操作系统本身提供的文件访问 API 访问文件数据 图 5 1 MyFramework 框架结构图 5 2 25 2 2 业务逻辑层业务逻辑层 层定义 业务逻辑层接受从表示层输入的用户请求 将其转化为业务逻辑过程能够理解 的方式 根据特定的业务逻辑有序地向数据层发送数据请求 并将数据层返回的数 据解释及组合成用户所需信息 返回给表示层 是整个应用软件系统中业务逻辑的 实现和处理核心 业务逻辑层运行在基于 J2EE 应用服务器的 EJB 及 WEB 容器中 组件定义 业务逻辑层包含会话外观 Session Fa ade 逻辑 Bean Logic Bean 和和 数据存取 Bean Data Access Bean 等三个逻辑组件 会话外观 提供了面向表示层的统一的业务逻辑调用接口 是数据存取事务的边界 所有 数据存取事务都由会话外观进行管理 即会话外观负责数据存取事务的开始和关闭 业务逻辑完成方式 通过调用逻辑 Bean 实现业务逻辑 逻辑 Bean 提供了业务逻辑具体实现 具有可复用性 可以直接被会话外观调用 实现会 话外观所需的业务逻辑 可以被其他逻辑 Bean 调用 此时此逻辑 Bean 作为一个更 复杂的业务逻辑的一个组成部分 业务逻辑完成方式 可以通过调用其他的逻辑 Bean 实现相对复杂的业务逻辑 可以直接调用数据存取 Bean 完成相对简单的业务逻辑 数据存取 Bean 提供了数据层的访问接口 不负责管理事务 它只是被动的使用调用者传入的 事务环境 与数据库表的映射方式 通常采取单个数据表对应单个数据存取 Bean 的映射方 式 由单个数据存取 Bean 包含对应单个数据表的所有相关数据访问操作 值对象 包含业务逻辑实体的属性 不包括业务逻辑实体的操作 是表示层和业务逻辑 层数据交换的主体单元 和会话外观一同组成了完整的业务逻辑实体 提供了业务 逻辑层面向表示层的统一接口 与数据库表的映射方式 通常采取单个数据表对应 单个值对象的映射方式 可以与不同类型值对象以聚合方式组成新的值对象 与其他层接口 由会话外观提供面向表示层的业务逻辑调用接口 表示层通过 Java 本地调 用访问业务逻辑层 数据存取 Bean 通过 JDBC 访问数据库服务 数据存取 Bean 通过操作系统提供的系统服务访问文件数据 5 2 35 2 3 表示层表示层 层定义 表示层接受用户提交的输入请求 通过对业务逻辑层的访问 获得并向用户输 出可视化响应 组件定义 采用 MVC 设计模式 由 Servlet 提供页面请求和请求响应的总体控制 JSP 和浏 览器提供请求结果响应的可视化显示 1 Servlet 接收所有用户由通过浏览器提交的业务请求 并合成相应的值对象 访问业务 逻辑层完成业务逻辑实体的业务处理 将业务逻辑实体的变化以值对象的方式通知 并转向相应的 JSP JSP 根据 Servlet 告知的值对象 合成请求响应结果的最终输出格式化文本 HTML 将合成格式化文本以网络协议的方式发送给提交业务请求的用户浏览器 浏览器 提供用户输入业务请求数据的输入界面 数据验证通过后提交业务请求 接收 业务请求响应的 HTML 文本 将业务请求响应结果以可视化的访问呈现给用户 WebService 是业务逻辑层对外部系统提供服务的边界和接口 完成和外部系统的集成和交 互 与其他层接口 Servlet 通过 Java 本地调用访问业务逻辑层 浏览器通过 HTTP HTTPS 协议向表示层提出业务请求并接收表示层的业务响 应 5 3 框架的配置文件 系统初始化配置文件 web xml 该文件是 Controller 专属的配置信息文件 控制器在第一次启动时需要从这个 文件载入系统的配置信息 文件内容如下 controlservlet mytools control web ControlHan dler controlservlet controler 页面导航配置文件 web config xml web config xml 文件是整个框架的重要部分 它控制了系统执行时的执行流程 该文件包括两种元素 和 其中元素用来 设置当前要转向调用的 JSP 页面 而则设置了当前用户提交的操 作要调用哪一个 Action 类 及当前类中的哪个方法 总结 WebFramework 框架已经在一个航运管理项目中经过测试和检验 实践证明 此 框架在中大型项目开发中 可以缩短开发周期 提高开发效率 系统运行稳定 易 于维护 有关应用开发框架的研究是一个不断深入 逐步完善的过程 在对 WebFramework 不断推广试用的基础上 还将进一步扩展其功能 使其应用领域更加 广泛 结论 短暂而又宝贵的毕业设计结束了 在这段时间内使我又一次对整个大学 4 年所 学过的知识进行了总结 本次毕业设计给了我一个实践的机会 锻炼了自己的意志 及能力 并且在实践中加深了对理论知识的理解 积累了丰富的经验 为毕业后走 向社会打下了良好的基础 在设计中 我获得了许多从课堂上学不到的知识和有意 义的收获 其中我对以下方面有很深刻的体会 充分利用互联网和图书馆查阅资料 对 设计有很大的帮助 可以避免走许多必要的弯路 大大提高了效率 在设计时多与同 学和导师讨论和沟通 这样可以相互交流经验 从而充实和提高自己 由于时间的仓促和经验的不足及其他各个方面的原因 在设计中还有许多待完 善的地方 致谢 时光荏苒 岁月如梭 记忆的雪花翩翩起舞 思绪定格在凤凰花开的季节 挥洒 过汗水 也滴落过泪花 这里有我熟悉的一切 有我热爱的一切 恍惚中 在美丽 的南湖畔 度过了人生中最为宝贵的年华 凤凰涅磐需要经历烈火的煎熬和痛苦的考验 迈进象牙塔殿堂时的激动 仍时 刻在内心回荡 不知不觉中完成了人生中最大的一次蜕变 蜕变需要经历过磨练 磨练可以让我们更为坚强 去勇敢面对生活中所遇到的困难与磨难 我要特别感谢我的指导老师 XXX 老师 是你的悉心的指导 关心和鼓励下 才 使得我养成科学严谨的治学态度 也让我学会了如何去解决所遇到的问题 感谢你 们让我懂得了科学探索的奥秘在于永远保持一个乐观积极向上的心态以及脚踏实地 勤勉的务实作风 这是获得胜利的无敌通关密码 参考文献 1 Erich Gamma Richard Helm Ralph Johnson John Vlissides Design Patterns Addison Wesley 1995 Page214 218 2 张洪伟 Tomcat Web 开发及整合应用 清华大学出版社 2006 Page413 420 3 Ted Husted Struts In Action Manning Publication Co 2003 Page46 49 4 Struts 技术站点 DB OL http struts apache org 5 胡萍陈世平 基于 Web 服务的企业信息系统的设计与实现 J 微计算机信息 2007 9 27 29 6 Robin Williams 写给大家看的设计书 人民邮电出版社 2009年1月 7 阎宏 Java与模式 电子工业出版社 2002年10月 8 孙卫琴 Tomcat与Java Web开发技术详解 电子工业出版社 2009年1月 9 BruceEc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论