基于MVC的Struts在财政系统中的应用
副标题#e#
软件开拓事情中碰着的许多问题都大概在以往开拓同类软件的进程中同样呈现过而且已经被办理,办理问题时所用到的好的要领、技能颠末积聚并不绝的归纳、总结形成一种牢靠的办理方案、一种模式,以便在日后的系统开拓进程中专门用来办理同类问题。设计模式就是对以往开拓履历的总结,它的提出使开拓人员可以简朴、利便的复用乐成的设计方案,而不必每次都做反复的事情。
财政系统具有所涉及的业务逻辑巨大、需求机动,甚至个体业务大概会在系统利用进程中产生变革的特点,因此如何组织应用措施以使其易于维护和进级便成为摆在开拓人员眼前的首要问题。早些时候的应用措施开拓是用进程化语言来完成的,它们将数据库查询语句这样的数据层代码和HTML这样的暗示层代码殽杂在一起,这样一来无论是对业务逻辑的改观照旧对界面显示的修改城市涉及到应用措施的整体,使措施维护起来相当坚苦。
Web层的办理方案——MVC模式
MVC模式的提出彻底办理了上述问题。MVC是Model(模子)——View(视图)——Controller(节制器)的缩写,它合用于大型可扩展的Web应用的开拓,它强制性地将应用措施的输入、处理惩罚和输出分隔,将其分别为模子、视图和节制器三个焦点部门,使它们各司其职,各自完成差异的任务,个中任何一部门的修改都不会影响其它两部门。
在MVC模式中,模子封装了应用问题的焦点数据、逻辑干系和业务法则,提供了业务逻辑的处理惩罚进程。模子一方面被节制器挪用,完成问题处理惩罚的操纵进程,另一方面为视图获取显示数据提供了会见数据的操纵。因为模子是与数据名目无关的,因此一个模子可觉得多个视图提供数据,这样一个模子一次编写可以被多个视图重用,从而制止了代码的反复编写。
视图是MVC模式下用户看到的并与之交互的界面。视图从模子处得到数据,视图的更新由节制器节制。视图不包括任何业务逻辑的处理惩罚,它只是作为一种输出数据的方法。
MVC模式中,节制器主要起导航的浸染,它按照用户的输入挪用相应的模子和视图去完成用户的请求。节制器自己不输出任何对象,它接管用户请求并抉择挪用哪个模子构件去处理惩罚,以及由哪个视图来显示模子处理惩罚之后返回的数据。
MVC的处理惩罚进程是这样的:对付每一个用户输入的请求,首先被节制器吸收,并抉择由哪个模子来举办处理惩罚,然后模子通过业务处理惩罚逻辑处理惩罚用户的请求并返回数据,最后节制器用相应的视图名目化模子返回的数据,并通过显示页面泛起给用户。图1所示为模子、视图、节制器这三个模块各自的成果以及它们之间的彼此干系:
图1
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相关的非凡信息设置的描写文件。
#p#副标题#e#
Struts框架下的财政系统的设计与实现
整个项目由财政系统、物流系统和客户打点系统三个部门组成,由于财政的结算业务与采购、进出库和销售等物流环节都存在着必然的接洽,因此,财政系统成果的实现以及维护的利便与否对付整个项目标成败起着致关重要的浸染。
财政系统主要包罗与结算相关的业务处理惩罚,如供货商结算、客户结算、返款处理惩罚、各类帐簿的查询、科目表的维护等等。下面以客户结算为例说明Struts框架下系统的设计与实现。
用户选择客户结算子菜单后进入客户结算页面,在该页面上需填入客户名称、销售单编码、用度的付出方法以及具体的收款信息。个中客户名称和销售单编码支持恍惚查询成果;付出方法包罗现金、银行、预收款三种方法,可点选输入;具体的收款信息包罗业务员姓名或编码、总的结算金额、登录帐簿。以上信息均填写完毕后,可点击提交,若填写的信息切合结算条件,则经业务处理惩罚逻辑处理惩罚后,系统向用户显示结算单页面,若提交不乐成,则显示错误信息。Web组件之间信息的转发干系如图2所示
图2
#p#分页标题#e#
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设计模式实现的耐久化框架。
竣事语
Struts为Web应用措施的开拓提供了框架布局,JSP页面中不包括任何业务逻辑,节制器组件ActionServlet可利用Struts框架所提供的,开拓人员只需将大部门精神会合到实际业务逻辑的处理惩罚,这样有利于快速有效的开拓出Web应用措施。Struts框架下用户显示、节制逻辑和业务处理惩罚逻辑相疏散,若业务需求产生变革则主要修改用于处理惩罚业务逻辑的EJB或JavaBean组件,因此便于系统的维护和进级。总之,Struts框架合用于可扩展的大型Web应用的开拓。