基于MVC模式的Struts框架在财务系统中的应用

软件工程(经典收藏HOT!) 专栏收录该内容
8 篇文章 0 订阅

基于MVC模式的Struts框架在财务系统中的应用

作者:郭建春 于书举 来源:ahcit http://www.csai.cn 2005年12月31日

  摘要 对于项目开发人员来说,要加快系统的开发速度、提高系统的可维护性和可扩展性,首要的任务是划分好系统的层次结构,合理地设计表示逻辑、业务处理逻辑和数 据逻辑。MVC模式就是一个很好的将表示、控制和业务处理相分离的解决方案,本文则主要介绍了Struts框架下的财务系统的设计和实现。

  关键词 MVC模式;Struts框架;Web应用

  中图分类号 TP391 文献标识码 A

  1 引言

  软 件开发工作中遇到的很多问题都可能在以往开发同类软件的过程中同样出现过并且已经被解决,解决问题时所用到的好的方法、技术经过积累并不断的归纳、总结形 成一种固定的解决方案、一种模式,以便在日后的系统开发过程中专门用来解决同类问题。设计模式就是对以往开发经验的总结,它的提出使开发人员可以简单、方 便的复用成功的设计方案,而不必每次都做重复的工作。

  财 务系统具有所涉及的业务逻辑复杂、需求灵活,甚至个别业务可能会在系统使用过程中发生变化的特点,因此如何组织应用程序以使其易于维护和升级便成为摆在开 发人员面前的首要问题。早些时候的应用程序开发是用过程化语言来完成的,它们将数据库查询语句这样的数据层代码和HTML这样的表示层代码混合在一起,这 样一来无论是对业务逻辑的变更还是对界面显示的修改都会涉及到应用程序的整体,使程序维护起来相当困难。

  2 Web层的解决方案——MVC模式

  MVC 模式的提出彻底解决了上述问题。MVC是Model(模型)——View(视图)——Controller(控制器)的缩写,它适用于大型可扩展的Web 应用的开发,它强制性地将应用程序的输入、处理和输出分开,将其划分为模型、视图和控制器三个核心部分,使它们各司其职,各自完成不同的任务,其中任何一 部分的修改都不会影响其它两部分。

  在MVC 模式中,模型封装了应用问题的核心数据、逻辑关系和业务规则,提供了业务逻辑的处理过程。模型一方面被控制器调用,完成问题处理的操作过程,另一方面为视 图获取显示数据提供了访问数据的操作。因为模型是与数据格式无关的,因此一个模型可以为多个视图提供数据,这样一个模型一次编写可以被多个视图重用,从而 避免了代码的重复编写。

  视图是MVC模式下用户看到的并与之交互的界面。视图从模型处获得数据,视图的更新由控制器控制。视图不包含任何业务逻辑的处理,它只是作为一种输出数据的方式。

  MVC模式中,控制器主要起导航的作用,它根据用户的输入调用相应的模型和视图去完成用户的请求。控制器本身不输出任何东西,它接受用户请求并决定调用哪个模型构件去处理,以及由哪个视图来显示模型处理之后返回的数据。

  MVC 的处理过程是这样的:对于每一个用户输入的请求,首先被控制器接收,并决定由哪个模型来进行处理,然后模型通过业务处理逻辑处理用户的请求并返回数据,最 后控制器用相应的视图格式化模型返回的数据,并通过显示页面呈现给用户。图1所示为模型、视图、控制器这三个模块各自的功能以及它们之间的相互关系:

图1

  3 Struts是实现MVC模式的框架  

  设 计模式是软件开发经验的总结,它是一个概念,是一个逻辑实体,而框架可以看成是基于某一特定平台的一种或几种设计模式的物理实现。设计模式比框架更抽象, 设计模式只有其实例才能表示为代码,而框架本身可以用代码表示,框架是一套设计详细的类,类与类之间功能各异,又彼此联系,相辅相成,形成了对某一类问题 的可重用的、易扩展的解决方案

  Struts 是实现MVC模式的通用框架,它由四个主要部分组成,模型、视图、控制器和XML文件。模型通常由Java Bean或EJB组件实现,负责处理业务逻辑;视图包括一组JSP文件,这些文件主要由JSP标签或客户化标签构成,它简化了JSP页面的编码工作;在 Struts框架中控制器主要包括Action Servlet类和Action类,Action Servlet是Struts的核心部件,它接受用户的Http请求,根据配置信息将请求转发给适当的Action对象,Action类负责调用模型的方 法,并帮助控制应用程序的流程;Struts包括Web.xml和Struts—config.xml两个配置文件,其中Web.xml是Web应用的发 布描述文件,Struts—config.xml是与Struts相关的特殊信息配置的描述文件。

  4 Struts框架下的财务系统的设计与实现

  项目由财务系统、物流系统和客户管理系统三个部分构成,由于财务的结算业务与采购、出入库和销售等物流环节都存在着一定的联系,因此,财务系统功能的实现以及维护的方便与否对于整个项目的成败起着致关重要的作用。

  财 务系统主要包括与结算相关的业务处理,如供货商结算、客户结算、返款处理、各种帐簿的查询、科目表的维护等等。下面以客户结算为例说明Struts框架下 系统的设计与实现。用户选择客户结算子菜单后进入客户结算页面,在该页面上需填入客户名称、销售单编码、费用的支付方式以及详细的收款信息。其中客户名称 和销售单编码支持模糊查询功能;支付方式包括现金、银行、预收款三种方式,可点选输入;详细的收款信息包括业务员姓名或编码、总的结算金额、登录帐簿。以 上信息均填写完毕后,可点击提交,若填写的信息符合结算条件,则经业务处理逻辑处理后,系统向用户显示结算单页面,若提交不成功,则显示错误信息。Web 组件之间信息的转发关系如图2所示

图2

  CtmBForm作为ActionForm Bean可以在视图和控制器之间传递HTML表单,其属性与表单中的字段是一一对应的,CtmBForm的Validate()方法可以完成与表单的数据格式和语法相关的有效性检查,如销售单编码、结算金额不能为空等。

  Struts 框架的核心控制器组件ActionServlet的doGet()或doPost()方法在收到用户请求后都会调用其process()方法处理请求。首 先选择能够处理当前请求的子应用模块,并在request范围内写入配置信息和消息资源;之后完成一些预处理请求操作,在预处理请求操作的尾部创建并保存 CtmBAction实例,并调用CtmBAction实例的execute()方法,该方法再调用相应模型进行实际的业务逻辑处理,完成用户的请求;最 后根据execute()方法返回的结果执行请求转发或重定向。在系统中模型由EJB组件实现,系统多层结构的设计如图3所示:

图3

   CtmBEJB作为一种JNDI资源运行在EJB容器中,在多层结构中CtmBEJBDelegateImpl业务代理实现类无法创建CtmBEJB组 件,而是通过查找名为“ejb/CtmBEJB”的JNDI资源获得该资源的引用。IctmB接口的作用是削弱客户程序与模型的关系,客户程序通过该接口 来访问EJB组件的业务方法。

  CtmBAction对EJB组件进行调用的时序图如图4所示:

图4

  在 多层结构中,业务对象BO主要封装了一些实体,如客户CustomerBO、销售单SalesSlipBO、结算单BalancingSlipBO、应收 款帐AccountsReceivableBO、预收款帐PreReceivingBO、现金帐CashAccountBO和银行帐 BankAccountBO等等。图5所示为上述七个业务对象之间的关联关系,以及部分业务对象的属性和方法:


图5

  数 据访问对象(Data Access Object,简称DAO)是实现持久化框架的一种设计模式,它的引入可以削弱业务处理逻辑和数据库访问之间的联系,它一方面可以将对业务对象BO的处理 转化为对数据库的操作,另一方面也可以把查询数据库的结果映射为业务对象BO。DAO提供了对关系数据库操作的接口,如创建数据库,定义表、索引,对表进 行增、删、改、查询等操作。系统选用了OJB软件,它是一种采用DAO设计模式实现的持久化框架。

  5 结束语

  Struts 为Web应用程序的开发提供了框架结构,JSP页面中不包含任何业务逻辑,控制器组件ActionServlet可使用Struts框架所提供的,开发人 员只需将大部分精力集中到实际业务逻辑的处理,这样有利于快速有效的开发出Web应用程序。Struts框架下用户显示、控制逻辑和业务处理逻辑相分离, 若业务需求发生变化则主要修改用于处理业务逻辑的EJB或JavaBean组件,因此便于系统的维护和升级。总之,Struts框架适用于可扩展的大型 Web应用的开发。

  参考文献
  1 James Turner Kevin Bedell,Struts Kick Start, Copyright ? 2003 by Sams Publishing
  2 孙卫琴.精通Struts:基于MVC的Java Web设计与开发.电子工业出版社,2004年8月
  3 Gamma,Erich,Design patterns :elements of reusable object—oriented software,China Machine Press,2002/01/01
  4 张丽君,齐建卓,吴宏波.基于MVC模式的Struts框架在Web系统开发中的应用.内蒙古大学学报,2005年1月第36卷第1期
  5 柯喆,张忠能.Struts在开发B/S结构系统中的应用.计算机工程,2004年12月第30卷

  <script src="http://51cmm.csai.cn/rightlist.asp" language="JavaScript" type="text/javascript"></script> <script src="http://www.csai.cn/ad/showad.asp?adno=066" language="javascript" type="text/javascript"></script> <script src="http://51cmm.csai.cn/channel_left_right.asp" language="javascript" type="text/javascript"></script> <script src="http://www.csai.cn/ad/showad.asp?adno=069" language="javascript" type="text/javascript"></script> <script src="http://bbs.csai.cn/bbs_right.asp" language="javascript" type="text/javascript"></script> <script src="http://www.csai.cn/ad/showad.asp?adno=070" language="javascript" type="text/javascript"></script> <script src="http://818.csai.cn/818_right.asp" language="javascript" type="text/javascript"></script> <script src="http://www.csai.cn/ad/showad.asp?adno=067" language="javascript" type="text/javascript"></script> <script src="http://blog.csai.cn/blog_right.asp" language="javascript" type="text/javascript"></script> 希赛网广告招商
频道最新文章
·宁波首家软件企业通过CM
·企业聘用人才的基本标准
·五步求解PERT图
·性格——影响管理者职业生
·Vlan中的Trunk技
·施工项目进度控制
·施工项目进度比较与计划调
·双绞线测试重要参数详解
·开源测试工具介绍
希赛会员俱乐部小广告
社区最新帖子排行
·考过高分的网络工程师~进~
·【求助】读软件工程的大三m
·05年11月所有级别答案集
·2006年4月三级 答案讨
·软考图书购买指南,不读可不
·CMM经典:<软件过程管理
·找人:邢绍志,刘秋林,刘明
·一个有创意的薪酬管理方法
·有很多人说考微软认证的人是
·[讨论]当你测试的时候开发
CMM评选投票小广告
希赛休闲吧新帖排行
·漂亮美眉在森林公园男厕门口
·股民的夫妻生活(爆笑成人限
·女大学生口述:处女难,做学
·是谁趁黑偷偷摸了局长的老婆
·领工资VS女人例假(经典)
·戏说大学男生失恋完全手册
·能够杀死女人的20句话
·19岁德国女孩一天睡64个
·史上最流行爆笑全集--女生
·这个很牛,绝对经典!(爆笑
远程教育平台小形象广告
希赛IT博客人气榜
·ejb corba com
·创建模式之--Single
·转载-跨数据库文献检索统一
·如何求一个数组的大小?
·《组件生存周期管理设计解密
·Free Door1.0介
·《组件生存周期管理设计解密
·26个英文字母所代表的涵义
·.net中连接数据库的问题
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值