1、毕业设计论文基于mvc的客户管理子系统的设计与实现782020年5月29日文档仅供参考 学号_ 密级_武汉大学本科毕业论文基于MVC的客户管理子系统的设计与实现院(系)名 称:国际软件学院专 业 名 称 :软件工程 郑 重 声 明本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含她人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其它个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于培养单位。本人签名: 日期: sBACHELORS DEGREE THESIS OF
2、 WUHAN UNIVERSITY The Research and Implementation of Client Management System Based on MVC 摘 要随着金融业的不断发展,各商业银行越来越注重信用卡业务的开拓,信用卡管理的信息化,也随着计算机技术的发展,在不断地完善提高。信用卡管理信息的多样化和数据资源的复杂性,都对信用卡管理软件的实现模式提出了很高的要求,而基于Web的传统的软件构架已经不能满足软件设计的要求,很多新兴技术的发展和应用正在不断地改进传统的开发设计构架。本文结合信用卡管理的需求和当前比较先进的设计思想,利用MVC设计模式进行设计,并对该设计
3、模式进行了改进,加入了数据持久层和业务逻辑层的实现。Struts是基于MVC模式的Web应用开发框架。它有效的分离了表示层和业务逻辑层,但它并没用对复杂的数据持久层提供支持。而Hibernate提供了灵活的数据持久层支持。因此经过将这两个框架整合起来,并结合贯穿整个表现层、业务层、持久层的Spring,能够得到一个开发灵活、低耦合及易扩展的企业应用完整解决方案。UML(Unified Modeling Language) 是一种通用的可视化建模语言。由于其定义良好、易于使用、功能强大且普遍适用的特点,而且融合了当前一些面向对象的主要概念和技术,已经成为软件开发事实上的标准。结合商业银行相关标准
4、,本文设计并实现了一个基于Struts、Hibernate和Spring的信用卡管理系统中的客户管理子系统。系统采用UML语言和面向对象的方法进行系统分析和设计,从而降低了开发风险,提高了开发效率。系统基本实现了信用卡客户管理的功能,如账户管理、存取款管理、结算管理、账单管理等。关键词: MVC;Struts;Hibernate;UMLABSTRACTWith the banking business and the computer technology developing fast, credit card management is becoming more and more imp
5、ortant, and the informatization of credit card management is developing well. Since the information related to credit card management is very multiple and the data is very complex, the requirement to the design mode of credit card management software is high; whats more, the traditional Web design m
6、ode can never meet the requirement. Combined with the situation of credit card management and the present advanced design method, the thesis develops the software based on MVC model with adding a data persistence manager layer and a business logic layer.Struts is a development framework based on MVC
7、 pattern for Web applications. It provides a way to separate presentation layer and business logic layer, but it does not support complex data persistent layer. Hibernate is a framework for flexible data persistent layer. Thus, by combining the two with the Spring which throughout the presentation l
8、ayer, business layer, persistence layer; we can obtain a comprehensive solution for enterprise application integration which can achieve flexible development, loose coupling and expansibility. UML is a commonly-used visual modeling language. Because of its features such as well definition, easy to u
9、se, powerful function and pervasive usage, and integration with object-oriented concepts and technology, it has become a de facto standard of software development.Combination of commercial bank-related standards, we design and implement a client management system of credit card management system bas
10、ed on Struts, Hibernate and Spring. We apply UML modeling language and object-oriented method to conducting system analysis and design. By doing this, the risk of software development is reduced and the efficiency is increased. This system meets the basic functional requirement of the client managem
11、ent including account management, deposit management, billing management, bill management.Key Words: client management system, MVC, Struts, Hibernate, Spring, UML第1章 引言1.1 选题的目的和意义随着经济全球化的推进与中国金融业改革的不断深化,人们的生活消费方式也有了显著的变化,最明显的就是人们随身携带的不再是大量的现金,而是一张张小而轻巧的信用卡。信用卡(Credit Card)作为非现金交易付款方式,以其便于携带、使用方便、交易
12、安全等优点,在欧美国家得到了普遍地使用。本世纪初,信用卡开始在中国流行,近几年来得到了迅速的发展,据统计,截至 6月30日,中国信用卡发行量已猛增到1.22亿张。当前,多数商业银行都推出了信用卡业务,随着发卡量的增加,如何提高信用卡管理与结算效率并将信用卡管理人员从繁杂的手工劳动中解放出来,成为一个迫切需要解决的问题。在这样的背景之下,”软酷网”卓越实验室研发六部经过分析研究,选择了”信用卡管理系统”作为实训项目。该系统采用便于使用与维护的B/S开发模式,这样信用卡管理人员只需要经过浏览器便可在银行内网中进行各项管理操作,同时还采用了基于MVC(Model-View-Controller)的S
13、truts+Spring+Hiberate框架进行软件的开发,能够很好的实现模型与表示层的分离,由控制器来进行业务流程控制,符合J2EE Web应用系统开发的基本要求,也有利于软件后期的升级与维护。1.2 信用卡管理系统的发展状况近年来,随着网络技术和金融业的不断发展,各商业银行越来越注重信用卡业务的开拓,因此对信用卡管理提出了更高的要求。改变原有的管理模式,运用先进的手段进行管理,已经成为现在信用卡管理的必然选择。这样,各种针对信用卡管理的应用软件不断涌现,而且经历了从单机版到网络版的转化。网络信用卡管理软件的发展更加有力地提高了信用卡管理水平,借助金融业网络信用体系构建信用卡管理系统,能够
14、合理利用Internet的网络资源和Web跨平台的数据访问能力,经过网络来进行交易记账、结算及存取款,信用卡用户们能够经过浏览器来直接参与信用卡的管理。同时,信用卡系统的管理人员能够很方便地获取及时、准确、全面的数据和相关信息,将银行卡部员工从繁琐的手工劳动中解放出来,提高生产率,进而从整体上提高了信用卡管理的水平。然而信用卡管理系统的设计也不能一劳永逸,由于各商业银行经营理念的不同、结算体系的不同及信用评估的不同,而各不相同,没有统一的标准,也很难建立一个统一的标准,系统的适用性、通用性很难实现。因此,现在信用卡软件的开发设计在向各种流行的设计模式靠拢提高系统的可移植性和可扩展性的同时,还要
15、考虑到自身信用卡管理的特点,以便更好地满足信用卡管理的需求。1.3 论文研究内容当前计算机技术越来越趋于成熟,各种设计思想不断涌现,MVC成为适用于各种大型Web应用的构架技术。它的目的就说最大限度地降低系统各部分之间地耦合度,提高系统的可扩展性,提高代码的重用率1。基于MVC的J2EE技术的应用更是广泛,本文这里也主要采用Struts框架来实现上述技术,并以此作为信用卡管理子系统的技术解决方案。本文的主要工作如下:(1)详细介绍了MVC开发模式的设计思想,分析了两种常见的JSP Model的优缺点,并介绍了实现MVC设计思想的Struts框架,并分析了Struts的工作流程,以及Struts
16、开发的优势。(2)以MVC模型为设计思想,运用Struts框架来实现信用卡管理系统的开发设计。本文采用当前比较流行和便捷的B/S模式开发模式,采用Struts框架来实现系统表现层与业务层的分离,更加有利于系统的开发与维护。进一步在系统的业务实现层和数据库之间加入了数据持久层,使得系统对数据库的访问实现面向对象的设计。简单介绍了数据持久化技术以及本文实现数据库持久层的工具Hibernate持久化框架。(3)对信用卡系统进行总体的分析,对信用卡管理中主要业务进行了分析,并进一步确定了系统的技术构架。以客户管理子模块为例,说明系统开发设计的流程和具体的业务实现。介绍了贯穿表现层、业务层、持久层的Sp
17、ring框架,作为一个依赖注入的容器,对Struts与Hibernate实施监控的同时,且能够做安全、日志工作。1.4 论文结构本文主要研究在J2EE平台下基于MVC设计模式开发信用卡管理软件WEB应用程序的相关技术,在传统的WEB应用程序开发的基础上,对基本的设计模式进行了改进,采用三层开发模式来降低系统各个模块之间的耦合性,并经过一个具体模块的实现来说明各个层次的设计和实现。全文共分为五章:第1章,引言。介绍了信用卡管理软件的发展现状,并进一步分析了该类软件开发过程中存在的问题;第2章,信用卡系统总体设计分析。概括分析说明了信用卡管理的主要业务,在了解用户需求的基础上,设计了系统的总体功能
18、模块,采用了UML语言对系统进行建模;第3章,系统研发技术。阐述了MVC设计模式以及常见的JSP设计模式,并介绍了Struts这个用来实现MVC设计思想的开源项目,另外还对引入的数据持久技术和本文实现这种技术的Hibernate持久框架做了介绍,也对整合前两个框架实现依赖注入与切面编程的Spring做了简要介绍;第4章,客户管理子系统的设计与实现。经过对该模块的实现,来体现整个设计思想,并介绍了本文实践项目的一些亮点与独到之处;第5章,系统评价。主要从系统安全和性能特点两方面来介绍;第6章,总结语。总结整个设计,并说明不足及进一步改进的方向。第2章 信用卡管理系统总体分析2.1 系统简介信用卡
19、管理系统是集账户管理、信用卡管理、用户信息维护、报表信息管理为一体的业各系统,具有灵活的应用架构、费用结构和产品定义,在系统、机构、产品、客户、账户、交易等各个层面均实现参数化,是一个以客户为中心的多产品、多账户、多卡综合应用系统。2.2 信用卡管理系统的总体功能框架信用卡管理系统主要实现银行信用卡和客户间交易的记账和管理功能。信用卡管理涉及到的内容很多,但从大致上来看,它的主要业务能够归纳为四个部分:账户管理、信用卡管理、报表管理、系统管理;主要面对三类用户:银行普通员工、银行部门经理、系统管理员。信用卡管理系统的总体功能框架如图2.1所示。图2.1 信用卡管理系统功能结构图2.3 系统的开
20、发原则(1) 可延展性和包容性系统应具有较好的可延展性和包容性。系统的可延展性应包括能够很好的兼容已有的系统和能够在今后一段时间内实现对系统软硬件扩展,能有效地保护已有的投资,系统易于扩充升级,既要满足当前业务的需求,又能随时进行扩展和维护。(2) 系统简洁,易使用、易维护系统的设计符合日常办公运作的需求,功能不但要实用,还应该简单易学,具有比较友好的用户界面,易于扩充。整个开发设计层次简单明了,便于管理,易于扩充。(3) 为员工,经理提供良好的信息服务系统对信用卡信息进行了合理的布局,以便于提供优质、高效的业务管理和事务处理,是系统用户对信用卡账户进行维护,完成信用卡交易记账和管理(4) 可
21、靠运行,安全保密在该系统的开发过程中,将经过身份认证,权限检查,来解决信用卡管理系统的安全性、保密性问题,确保系统的有效和安全运行。2.4 系统功能概述信用卡管理系统不但要管理信用卡使用的各个环节:如开卡到记账、存取款的业务活动,还要管理所涉及到的各种对象和资源:如管理员、系统用户、账户、信用卡等;同时信用卡管理系统还要提供相应的算法来结算账单。其中客户管理模块主要的业务功能实现,将在以下进行相关的介绍。(1) 客户开户申请管理子模块客户提交开户申请表,进行合法性验证,交给银行员工审核,如果审核经过,将客户信息填入客户信息表,并为客户开通信用卡服务所需的账号,客户开户管理子模块的业务流程如图2
22、.2所示。图2.2 客户开户管理子模块业务流程示意图(2)账户信息维护子模块经过对开户客户的消费、取现、透支等交易记录统计,银行员工修改相应账户的信用额度,同时完成账户的销户工作。该模块的业务流程如图2.3所示。图2.3 账户信息维护子模块业务流程示意图(3) 取款管理子模块取款管理子模块主要完成取款申请、取款合法性验证、自动完成取款额与可用额、信用额度的核对等,最大限度的实现取款的自动化。该模块的业务流程如图2.4所示。图2.4 取款管理子模块业务流程示意图图2.5 账单管理子模块业务流程示意图(4) 账单管理子模块账单管理是信用卡管理中很重要的一部分。该模块主要列出客户交易账单的信息,并对
23、每月账单进行相应的结算,以便客户进行查询与打印。该模块的业务流程如图2.5所示。(5) 报表管理子模块报表管理是信用卡管理中只针对银行经理一个模块。经过查看报表,银行经理能够了解银行开户、户头信用额、信用卡透支的现状及其发展趋势,清晰的把握信用卡业务的发展脉络,制定出相应的发展策略。该模块的业务流程如图2.6所示。图2.6 报表管理子模块业务流程示意图以上描述了客户管理、报表管理的大致功能及其数据流图,而信用卡的管理及系统管理,其业务流程与客户管理开户与信息维护的流程大致相似,因此这里不做过多介绍。2.5 系统技术构架本系统采用了先进的设计理念和一些主流的技术。系统采用基于MVC的J2EE技术
24、和Web技术来实现的。传统的Web技术平台是一个三层结构。如图2.6所示。图2.7 WEB三层结构示意图当前,Web技术都是经过Http来实现客户端和服务器的通讯的,对于简单的HTML静态文原来说,Http是一个很好的选择。但Http却不能很好地应用于复杂的业务处理,因为当用Http进行通讯时,必须以Web服务器作为中介。然而当同一时刻客户访问量过大时,Web服务器则将成为整个系统的瓶颈。而基于MVC的J2EE技术能很好地解决以上问题。根据项目需求分析,确定本系统必须具备的性能有:(1)具有良好的交互性:工作内容中有相当大的部分是人机交互,这就要求系统的交互性要强,从而满足需求。(2)具有较好
25、的可扩展性:工作的内容和形式具有多变性,从而要求系统具有良好的可扩展性。(3)良好的可维护性:系统投入使用后,主要是由管理员承担系统维护的工作,维护人员不定期变动,这就要求系统的可维护性强。(4)较好的跨平台性:用户可能使用各种不同的操作系统,而且为了适应今后可能的变化,系统应具有较好的跨平台性。一个典型的J2EE应用能很好地满足以上的性能要求,它至少包括表现层、业务层、数据持久层和数据库服务器四个部分。在开发信用卡管理软件组件模板时,本文采用Struts来实现信用卡系统的表现层,数据持久层选择了OR Mapping Tools(Hibernate),业务逻辑层则用普通Java对象,把Stru
26、ts和Hibernate这两种在业内比较推崇的开源技术相结合2,并引入Spring依赖注入,使用JavaBean代替EJB,进一步整合前两个框架,提升了项目开发的效率和易维护性。这样也相应地扩展了传统Web的三层体系结构,本文开发的系统体系架构如图2.8所示。图2.8 信用卡管理系统技术结构图 这种设计使服务器端和数据服务端能够根据系统的需求进行配置,为系统结构提供极大的灵活性和收缩性。采用该多层结构技术的另一个优势是”瘦”客户端的设计和实现。主程序和主要的业务功能模块都放在应用服务器上,客户端只需安装浏览器就能够在本地运行。本信用卡系统设计中,客户端为浏览器,中间层以Tomcat作为应用服务
27、器支持业务逻辑的处理,以MySQL Server5.0作为数据库服务平台。第3章 系统平台与技术3.1 MVC设计模式3.1.1 MVC模式的介绍随着Web开发的不断发展和需要,MVC模式被推荐并成为Sun公司J2EE平台的设计模式,而且在应用中受到越来越多的开发者的欢迎。Model-View-Controller原来是Xerox PARC在八十年代为编程语Smalltalk-80创造的一种应用程序的框架结构,至今已被广泛使用。该框架结构支持三层结构的类:表现应用程序状态层、屏幕表现层和控制流层,因此这三层被称为模式(Model)、视图(View)和控制器(Controller)。MVC是能够
28、满足那些需要为同样的数据提供多个视图的应用程序的开发需要,在开发与用户界面相关,特别是对用户界面要求较复杂的相关的应用程序时,能够很好地以不同的方式来显示同一数据,也就是在不改变软件功能的前提下,能够实现用户对用户界面的个性化要求,而MVC模式的最大特点就是将业务层与表示层分离,而且提供了很多使显示界面更加个性化的标签库,因此它能更好地实现用户界面的各种个性化需求。MVC一般见于分布式应用系统的设计和分析,如:大型商业网站、企业信息系统、管理信息系统、决策支持系统等,但它本身并不局限于某一个特定的领域。MVC设计模式,最近几年被推荐为SIJN公司JZEE平台的设计模式,它强制性地把应用程序的输
29、入、处理和输出分开3。它的三个核心部件分别是模型、视图和控制器,它们各自处理各自的任务:(1)模型(业务逻辑层):表示企业数据和业务规则,实现具体的业务逻辑、状态管理的功能。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJB和ColdFusion Companies这样的构件对象来处理数据库。被模型返回的数据都是中立的,也就是说模型和数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就能够被多个视图重用,因此减少了代码的重复性。(2)视图(表示层):即用户看到并与之交互的界面,是应用程序的外在表现,一般实现数据的输入和输出功能。对老式的Web应用程序
30、来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术也层出不穷,它们包括Macromedia Flash和像XHTML、XML/XSL、WML等一些标识语言和Web Services。因此如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不论这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。(3)控制器(控制层):起到控制整个业务流程的作用,根据用户的输入调用相应的模型和视图去完成用户的需求和相关的操作
31、。具体地来说:控制器本身不输出任何东西和做出任何处理。它只是接受客户的请求并进一步决定调用哪个模型去处理该请求,并根据处理结果来确定用哪个视图来显示模型处理之后返回的数据。它们三者之间的关系如图3.1所示。 图3.1 MVC组件类型的关系和功能3.1.2 MVC开发的优势经过以上对MVC开发模式的介绍,以及两种JSP开发模式的比较,我们对MVC开发模式有了一定的认识,这里将进一步介绍说明利用MVC模式开发的优势,具体表现在以下几个方面:(1)MVC模式很好地解决了软件工程中如何使软件系统各模块之间最大限度地降低其复杂的耦合关系,以及系统显示逻辑和业务逻辑之间的矛盾(即用户界面的多变性和业务逻辑
32、的相对不变性),能够尽可能地提高系统的可维护性和可扩展性。(2)模型、视图、控制器三者的相互独立,当我们改变其中一部分时,其它两部分不会受到影响,进而构造出良好的松耦合构件。(3)所有的模型和视图都是由控制器连接和调用的,控制器控制功能使得它能够根据用户不同阶段的不同需求选择不同的模型进行处理,并选择不同的视图将处理结果显示给用户,很好地提高了系统的灵活性。(4)一个模型能够拥有多个视图或者说多个视图能够共享一个模型。多个视图能够提供多种数据显示方式,以满足不同用户的需求。变化传播机制能够确保所有相关的视图和其模型达到同步,这一切都能够经过控制器的协调来实现。(5)模型的可移植性和伸缩性。模型
33、的相对独立性使得它很容易被移植到新的平台工作,很容易被改变业务规则而不影响视图和控制器4。然而,由于MVC是一个非常复杂的系统,因此采用MVC实现Web应用时,最好选一个现有的MVC框架,在此之下进行开发。由于Struts具有完整的文档而且相对来讲比较简单,因此一般采用它来开发MVC系统,实际上,Struts就是在 JSPModel2的基础上实现的一个MVC框架。3.2 Struts项目概述 Struts是Apache组织的一个项目,像其它的Apache组织的项目一样,它也是一个开源项目。Struts作为一个设想是Craig R McClanahan于 提出的,该设计的目标是为利用Java技术
34、开发基于MVC模式的Web应用提供一个标准模式。基于Struts架构的Web应用程序基本上符合JSPModel2的设计标准,是MVC设计模式的一种变形,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet、JSP和Custom Tag Library5。Struts框架是一种基于Java的技术,Web应用程序开发人员经过Struts框架即可充分利用面向对象设计,代码重用及”编写一次,到处运行”的优点。另外,Struts不但是拥有自己的控制器,同时整合了其它的一些技术来实现模型层和视图层,例如:在模型层,它能够很容易与数据库的访问技术相组合,包括JDBC技术和EJB技术;在视图层,
35、它能够与JSP、XSL等组件相结合6 。因此从一定的意义上讲,采用Struts来实现基于MVC的Web应用的开发,能够根据具体的需求来选择设计的复杂程度,具有很好的扩展性。Struts的主要优势功能如下:(1)Struts中包含一个控制器Servlet,用来控制用户的请求发送到相应的Action对象;(2)在JSP页面中能够选用自定义标签库,而且在控制器Servlet中提供关联支持,这样能够帮助开发人员方便快捷地创立交互式表单应用;(3)Struts还提供了一系列实用对象:XML文件处理、经过Java Reflection API自动处理JavaBean属性、国际化的提示和消息。3.2.1 S
36、truts核心组件Struts是一组相互协作的类、Servlet和JSP标记,它们组成了一个可重用的MVC设计模式。这个定义表示Struts是一个框架,而不是一个库,但同时Struts也包含了丰富的标记库和独立于该框架工作的实用程序类库。Struts经过一些组件类来完成框架的功能,这些组件包括:ActionServlet、Action、ActionForm、ActionForward、ActionMapping。1. ActionServletActionServlet继承自javax.servlet.http.HttpServlet类,它在struts中扮演的角色是中心控制器。它提供了一个中
37、心位置来主要负责将Http客户请求组装后,根据配置文件的指定的描述,转发到适当的处理器。另外,除了作为应用程序的前端控制器外,ActionServlet实例还负责初始化和清除应用程序的资源。2. Action一个Action类的角色,就像是客户请求动作和业务逻辑处理之间的适配器,它作为应用程序响应用户请求的动作,将请求与业务逻辑分开。这样用户的请求和Action类之间能够有多个点对点的映射。Action最为常见的方法是execute(),典型的Action类一般要在execute()方法中实现下列逻辑:(l)检查用户session的当前状态。如果session过期或者用户没有登录,要将表示层的
38、页面跳转到用户登录页面;(2)检查用户输入的合法性。调用Form Bean实例的validate()方法检查一些字段的输入值是否恰当或合法;(3)执行业务操作。调用业务逻辑Bean的相应方法执行用户的业务请求;(4)更新服务器端的对象。将Model的状态改变通知给View,并返回请求页面。3. ActionForm一个应用系统的消息转移(或者说状态转移)的非持久性数据的存储,一般由ActionForm Bean来负责,它的主要功能是为Action的操作提供与客户表单相映射的数据。对于每一个客户的请求,一般要经历如下几个步骤:(l)检查Action的映射,确定配置文件中己经配置了对ActionF
39、orm的映射;(2)根据Name属性查找ActionForm的信息;(3)查找ActionForm的使用范围,确定在此范围下是否存在对应的 Form Bean的实例;(4)假如在当前范围内,相应的 Form Bean的实例己经存在,而且对当前的请求来说是同一类型的话,就能够重用,否则,就要重新构建一个 Form Bean的实例;(5)调用Form Bean的reset()方法;(6)调用对应的set()方法,对状态属性赋值;(7)如果validated属性值被设置为true,则调用Form Bean的validate()方法;(8)如果validate()方法没有返回错误,控制器将Action
40、Form作为参数,传给Action实例的execute()方法执行。 4. ActionForward当Action实例的execute()方法运行完毕后,控制器根据Mapping能够将响应信息转到适当的地方,ActionForward的主要功能就是对将要转向的视图的地址的一个封装。转向的各种属性也能够在配置文件中设置性,这样就大大提高了软件的复用性和可维护性。 5. ActionMappingActionMapping以Java的形式封装了怎样将一个请求URL映射到与其对应的Action的一些信息。ActionMapping对象帮助进行框架内部的流程控制,它们能够将请求URL映射到Actio
41、n类,而且将Action类与 ActionForm Bean相关联。Struts框架的控制器ActionServlet在内部使用这些映射将控制转移到特定的Action类的实例。3.2.2 Struts的工作流程采用Struts框架开发Web应用系统时,在Web应用启动时就会自动地加载并初始化ActionServlet,此时ActionServlet将会从Struts-config.xml文件读取配置信息,并把它们存放到各种对应的配置对象中。当ActionServlet接受到一个客户请求时,将执行如下流程:(l)检索与用户请求匹配的Action实例,如果不存在,控制器直接将请求转发给JSP或静态
42、页面;如果有对应的Action,而且这个Action有一个相应的Form Bean,ActionForm被实例化并用Http请求的数据来填充其属性,然后保存在ServletCotenxt中,以备其它Action对象或JSP调用。(2)控制器根据Struts-config.xml的配置信息将请求切换到具体的Action,对应的相关的 Form Bean的信息也一起发送给Action类的execute()方法。(3) Action的execute()方法返回一个ActionForward对象,控制器ActionServlet再经过该ActionForward对象来进行转发工作。(4) Action
43、根据业务处理的不同结果返回一个相应的目标响应对象给总控制器,这个目标响应对象能够对应一个具体的JSP页面或者是另外一个Action。(5)总控制器ActionServlet根据业务功能Action返回的目标响应对象(多数情况下,该响应目标是一个JSP页面),将Http请求转换到该目标响应对象中,进一步将结果页面展现给用户。3.2.3 Struts框架实现MVC模型Struts实质上就是JSP Model2的基础上实现的一个MVC模式框架,MVC设计模式为构建可扩展、可重用的体系结构打下了很好的基础,该设计模式需要用户将自己的代码抽象出来,把项目在一定的程度上分解为表示,逻辑和控制三部分,每部分
44、之间的关系相对较小,以便使得软件结构更加灵活,并具有较好的可重用性和可扩展性。在Struts框架中,模型一般有实现业务逻辑的JavaBean或EJB组件构成,控制器由ActionServlet和Action来实现,视图由一组JSP文件构成,Struts实现的MVC框架如图3.4所示。 图3.2 Struts实现的MVC模型Struts是Apache组织的一个项目,提供了一个实现MVC架构的高度自动化的方式,作为一个MVC的框架,Struts对Model、View和Controller都提供了对应的实现组件:(l)控制器(Controller):控制器的作用是从客户端接收请求,而且选择执行相应的
45、业务逻辑,然后把响应结果送回到客户端。在Struts中Controller功能由ActionServlet和ActionMapping对象构成。ActionServlet是MVC设计模式的决策控制部分,也是Struts框架的核心。它根据ActionMapping把Http消息形式的用户请求转换成相应的应用程序的动作。ActionServlet还负责用相应的请求参数填充ActionForm(一般称之为FormBean),并将其传给对应的动作类(一般称之为ActionBean)。动作类Action来实现核心商业逻辑,它能够访问JavaBean或调用EJB,最后动作类指向相应的JSP文件,最终生成相
46、关的视图。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action处理器对象类之间的点到点的映射。ActionMapping中有Action对象的名字和地址的描述,当有请求传入Controller时,它把请求的路径映射到Action的地址,并把请求传给那个Action类。ActionMapping类也包括一些程序中可能的唯一的信息,例如本地变量,特定环境数据,或者URL。(2)模型(Model):表示应用程序的状态和业务逻辑9。MVC系统中的Model部分从概念上能够分为两类:系统的内部
47、状态和改变系统状态的动作。Struts为Model部分提供了Action和ActionForm对象,所有的Action处理器对象都是程序开发者从Struts的Action类派生的子类,并对其中主要的方法进行覆盖。Action处理器对象封装了具体的业务处理逻辑,处理具体的业务逻辑操作,而且把响应提交到合适的View组件以产生响应。Struts提供的ActionForm组件对象,能够经过定义属性描述客户端表单数据。我们能够从它派生子类的对象,利用它能够实现对客户端的表单数据的良好封装和支持,相应的Action处理器对象能够直接对它的表单数据进行读写,而不再需要和Request、Response对象进行数据交互,经过ActionForm组件对象实现了对View和Model之间非持久性数据交互的支持。(3)视图(View):视图是用户看到并与之交互的界面。Struts应