1、本科毕业论文基于J2EE网上购书系统的设计与实现BACHELORS DEGREE THESIS OF WUHAN UNIVERSITYThe Design and Implementation of Online Bookstore System Based on J2EE PlatformCollege : International School of SoftwareSubject : Software EngineeringName : Zhang ZhengwuDirected by : May 2009毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研
2、究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期: 毕业论文(设计)授权使用说明本论文(设计)作者完全了解*学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。 作者签名: 指导教师签名: 日期: 日期: 注
3、 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺
4、规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它摘 要近些年来,J2EE(Java 2 Platform,Enterprise Edition)技术作为一种建立企业应用的标准平台出现,并逐步成熟,得以飞速发展。J2EE平台使用了大量不同的技术标准如Java Server pages(JSP),
5、JavaServlet, Enterprise JavaBeans(EJB), Java Message Service(JMS), Java Naming and Directory interface(JNDI)等,提供了多层分布式应用模型、组件复用能力、统一的安全模型和灵活的事务处理,为开发和配置企业应用提供了健壮和稳定的服务。框架技术与设计模式是J2EE中很重要的软件重用技术,框架技术通过重用提高了软件的生产效率,ZJEE项目是通过框架、模式的设计运用达到控制软件质量的目的。虽然这在一定程度上限制了开发人员的发挥创造,但是它带来了稳定的软件质量和可重用的组件,尤其适用于较大型项目的开发
6、。Struts是实现MVC模式的具体应用框架之一,其核心为一个灵活的、基于JavaServlets,JavaBeans,XML(Extensible Markup Language)等标准技术的控制层。Struts提供了自己的控制器组件,还整合EJB,JDBC等数据访问技术构造模型组件,整合JSP,XSLT等接口表示技术构造视图组件。设计模式是在设计面向对象软件的过程中记录的知识和经验。用一系列类结构和对象行为来具体描述设计模式的含义。在这样一个预先定义的设计结构的基础上,根据具体应用完成具体的设计。设计模式的目的就是复用这些面向对象软件设计的解决方案以便于这些抽象解决方案的积累和交流。本文从
7、网上购物系统的实际出发,引入了一个改进后的Struts框架,同时从占本系统很大比例的数据增、删、改、查操作中抽象出了一个数据操作通用框架,在框架的设计过程中运用了一些设计模式。系统具有高可靠性、可扩展性和可重用性的特点。 关键词: J2EE;EJB;Java;电子商务;网上书店ABSTRACT In this years, J2EE(Java 2 Platform,Enterprise Edition)is becoming into a standard platform in company. And it is becoming more and more mature and perf
8、ect. J2EE platform use lots of difference Technical standards such as:Java Server pages(JSP), JavaServlet, Enterprise JavaBeans(EJB), Java Message Service(JMS), Java Naming and Directory interface(JNDI) etc. it offers Multi-tier Distributed Application Model, reuse components ability, it provide a r
9、obust and stable service for the development and deployment of enterprise applications.Framework technology and design patterns is a important reuse technology in J2EE, it increase the product efficiency by reuse the code, J2EE project is through the framework of the design mode to control the use o
10、f software quality. Although to some extent, this limits the development of creative personnel, but it has a stable quality and reusable software components, Struts is a MVC model to achieve the specific application framework, and its core is a flexible, based on the JavaServlets, JavaBeans, XML (Ex
11、tensible Markup Language) standard technology, such as the control layer. Struts provides its own Controller component, but also to integrate EJB, JDBC data access technologies such as structural model components, integration of JSP, XSLT and other interface components that technical structure view.
12、 Design patterns in object-oriented software design process of the knowledge and experience record. This article from the online shopping system, change, check out the abstract operation of a common framework for data manipulation, in the framework of the design the course of the use of a number of
13、design patterns. System has high reliability, scalability and reusability characteristics.Key words: J2EE;EJB;Java;E-commerce;Online Bookstore。目 录摘 要 3ABSTRACT4目 录 5第1章 绪论61.1 论文选题背景及意义61.2 研究现状及发展趋势81.3 本文的组织结构结构91.4 本章小结9第2章 软件结构与框架技术102.1 J2EE框架结构102.2 软件框架(MVC)122.3 设计模式132.4 系统使用的框架与技术152.4 本章小
14、结21第3章 系统分析与设计213.1 系统需求分析223.2 系统整体设计233.3 系统架构设计263.4 系统详细设计273.5 数据库设计303.6 本章小结32第4章 系统实现334.1 开发运行环境334.2 关键技术的实现334.3 本章小结40第5章 总结41致谢42参考文献43第1章 绪论1.1 论文选题背景及意义1.1.1 论文研究背景电子商务这个概念起源于20世纪70年代。当时国际上一些大公司通过建立自己的计算机网络以实现各个机构之间、商业伙伴之间的信息共享,这个过程被称为EDI(电子数据交换)。EDI这种方式通过传递标准的数据流不仅可以避免人为的失误,而且能有效的降低成
15、本、提高效率,因此在过去30年中,世界1000个最大的企业中,有95%以上的使用或还在使用这一技术。现在大家公认的“电子商务”的概念是由著名的IBM公司于1998年率先提出并迅速得到广泛认同。它包括网络广告(过去已经实现)、在线电子贸易(已经实现并正在得到不断的完善)、在线电子服务(即将实现)等内容,可以说是一个较大的基础概念,涵孟了过去、现在和未来所有以电子形式实现的商业活动手段。随着时代的发展,计算机及网络产品、互联网技术(web技术)、完全支付等电子商务的支撑技术在电子商务应用的大潮中产生质的飞跃,电子商务的概念正在得到不断的补充和完善,它将不仅仅只局限于带动互联网经济的飞速发展,而是将
16、深入到经济活动的每一个角落,深入到千家万户,深入到每一个人的身边。电子商务提出了一种全新的商业机会、需求、规划和挑战,正是新世纪全球经济与社会发展的朝阳领域。图书是一种在整个社会生活中都很普及的精神消费品,在整个商品市场上占据不同于其它商品的特殊地位。基于J2EE的网上书店系统正是针对图书这样一类特殊的商品而建立起来的一个电子商务系统。如何迎合图书这种商品的特殊性,如何降低销售成本以及便利读者购书,便自然而然的成为这个系统设计和实现所追求的目标。近些年来,随着网络通信技术的不断发展和社会信息化建设水平的不断提高,电子商务系统在社会生活和经济生活中得到了越来越广泛的应用。电子商务大大改变了企业的
17、经营方式,规范了内部流程和交易手续,减少了交易的中间环节,降低了企业的经营成本;并使经营活动不再受地域和时间的限制,方便了客户,密切了企业和客户的关系。因此越来越多的企业采纳电子商务作为交易模式。随着互联网上的电子商务网站大量出现,电子商务作为一种交易形式已经在社会经济生活中占据一定的地位。另一方面,互联网技术的发展在推动电子商务进步的同时,也使电子商务系统的构建实现技术面临新的挑战。作为网络信息技术前沿的Java,已经是软件界的一个热门话题,它提供的跨平台性、网络和数据库支持为web应用系统的开发提供了新的途径。1995年,Sun公司的Java语言以其提供的跨平台应用程序开发与配置震撼了整个
18、web世界。几年来,Java从一种编程语言发展到了开发企业级应用系统的Java2平台。1999年Sun公司推出J2EE,它包括Servlets、JSP,和EJB等许多技术和规范。J2EE平台为web应用的开发提供了从客户层到web服务层到业务逻辑层的全方位技术支持,而且得到了IBM、BEA和ORACLE等很多公司的认可,是一种很有前途的也是比较成熟的开发web应用的技术选择方案。本文所述的图书网站系统正是以ZJEE技术和规范为基础,结合具体应用的电子商务系统。1.1.2 论文研究意义图书是一种在整个社会生活中都很普及的精神消费品,在整个商品市场上占据不同于其它商品的特殊地位。基于J2EE的网上
19、书店系统正是针对图书这样一类特殊的商品而建立起来的一个电子商务系统。如何迎合图书这种商品的特殊性,如何降低销售成本以及便利读者购书,便自然而然的成为这个系统设计和实现所追求的目标。近些年来,随着网络通信技术的不断发展和社会信息化建设水平的不断提高,电子商务系统在社会生活和经济生活中得到了越来越广泛的应用。电子商务大大改变了企业的经营方式,规范了内部流程和交易手续,减少了交易的中间环节,降低了企业的经营成本;并使经营活动不再受地域和时间的限制,方便了客户,密切了企业和客户的关系。因此越来越多的企业采纳电子商务作为交易模式。随着互联网上的电子商务网站大量出现,电子商务作为一种交易形式已经在社会经济
20、生活中占据一定的地位。另一方面,互联网技术的发展在推动电子商务进步的同时,也使电子商务系统的构建实现技术面临新的挑战。作为网络信息技术前沿的java,已经是软件界的一个热门话题,它提供的跨平台性、网络和数据库支持为WEB应用系统的开发提供了新的途径。1995年,Sun公司的java语言以其提供的跨平台应用程序开发与配置震撼了整个WEB世界。几年来,java从一种编程语言发展到了开发企业级应用系统的J2EE平台。1999年Sun公司推出JZEE,它包括Servlet、JSI,和EJB等许多技术和规范。JZEE平台为Web应用的开发提供了从客户层到服务层到业务逻辑层的全方位技术支持,而且得到了BI
21、M、BEA和ORACLE等很多公司的认可,是一种很有前途的也是比较成熟的开发WEB应用的技术选择方案。国际上已有越来越多的图书公司开始充分利用互联网资源,将其传统的业务模式转换为更具竞争力的电子商务模式,以拓展全球市场。1.2 研究现状及发展趋势电子商务虽然己经不是一个新名词。但是回顾电子商务的发展历程,它仍旧还很年轻,还有很多有待完善和发展的地方。目前,很多电子商务系统,结合J2EE的先进技术作为设计和开发的基础,实现了一定的突破,但是对技术的无限追求,往往忽略掉最原始、最真实的需要。如何以最有效的方式,完成最大的收益;如何使用最成熟的技术,实现最稳定高效的系统,是当今这个技术至上的世界所面
22、临的问题。另一方面,J2EE被广泛接纳为开发企业级服务器端解决方案的首选平台之一,但是如何提高服务器端的执行效率,又是一个有待研究的课题。本系统争取在以上一定的方面有所见效。著名调查公司AC尼尔森的一项研究显示:63%的中国网民曾在网上购物。而在中国大地上,最受欢迎的网上商品是书籍,56%的网上购物者选择网上买书。中国网上购书的比例是全球最高的。检索方便,无需楼上楼下、一个书架一个书架的翻找,是网上书店的第一大优势。不过,更重要的是价格,比实体书店低出20%-40%的价格是网上书店吸引消费者的最大优势所在。此外,网上书店品种越来越齐全也让消费者对其依赖度日益增加。网上书店是网络环境下图书发行的
23、典型代表,也是未来的发展趋势。但我国网上书店发展还不够理想,主要由于以下一些重要因素制约了网上书店的发展:结算方式滞后,网上银行发展不发达。2004年末中国互联网中网上银行用户为16.9%,其中只有5.1%将网络银行作为常用网络服务之一,更多的网上业务结算还是通过传统的异地汇款和货到付款。银行间的复杂结算造成延迟到书,失去网上书店快捷的比较优势,丧失竞争力。社会信用水平不高,交易诚信相对差。中国个人信用制度尚处于起步阶段,诚信凭个体的道德自律,社会上信用问题较多,人们担心网上交易的安全性。信息服务不完善、低质量。查询、分类形式单一,注重图书数量的丰富而忽略图书及其相关知识和信息的提供、介绍。图
24、书推介过于简明扼要、书评太少,读者缺少选择参考。图书配送周期长、成本高、时效性差。物流不发达,配送网络不畅,无配送点的地方只能采用邮资成本居高不下的邮寄方式。1.3 本文的组织结构结构本论文共分六章,各章节的主要内容如下:第1章是绪论,主要介绍了课题背景和现状;第2章介绍了电子商务并分析了几种流行的软件体系结构;第3章采用J2EE技术对图书销售网站进行了分析与设计;第5章对网上书店系统的实现进行了分析,并结合MyEclipse及MySQL给出部分模块的实现。最后,第6章对全文做了,总结与展望。1.4 本章小结本章对作为论文的绪论对论文进行了一个大概性的介绍。第2章 软件结构与框架技术2.1 J
25、2EE框架结构2.1.1 J2EE概念 J2EE是一种利用Java2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java2平台的标准版, J2EE不仅巩固了标准版中的许多优点,例如编写一次、随处运行的特性、方便存取数据库的JDBCAPI、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB(Enterprise JavaBeans)、JavaServlets API、JSP(JavaServer Pages)以及XML技术的全面支持26。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间
26、的体系结构。J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。2.1.2 J2EE优势J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制:保留现存的IT资产:由于企业必须适应新的商业需求,利用已有的企业信息系统方面的投资,而不是重新制定全盘方案就变得很重要。这样,一个以渐进的(而不是激进的,全盘
27、否定的)方式建立在已有系统之上的服务器端平台机制是公司所需求的。J2EE架构27可以充分利用用户原有的投资,如一些公司使用的BE Tuxedo/IBMCICS/ InpriseVisiBroker以及NetscapeApplicationServer。这之所以成为可能是因为J2EE拥有广泛的业界支持和一些重要的企业计算领域供应商的参与。每一个供应商都对现有的客户提供了不用废弃已有投资,进入可移植的J2EE领域的升级途径。由于基于J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系统和硬件也能被保留使用。高效的开发:J2EE允许公司把一些通用的、很繁琐的服务端任务交给中间件供应
28、商去完成。这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。高级中间件供应商提供以下这些复杂的中间件服务:状态管理服务-让开发人员写更少的代码,不用关心如何管理状态,这样能够更快地完成程序开发。持续性服务-让开发人员不用对数据访问逻辑进行编码就能编写应用程序,能生成更轻巧,与数据库无关的应用程序,这种应用程序更易于开发与维护。分布式共享数据对象CACHE服务-让开发人员编制高性能的系统,极大提高整体部署的伸缩性。支持异构环境:J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就
29、可部署到各种平台。这在典型的异构企业计算环境中是十分关键的。J2EE标准也允许客户订购与J2EE兼容的第三方的现成的组件,把他们部署到异构环境中,节省了由自己制订整个方案所需的费用。可伸缩性:企业必须要选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满足那些在他们系统上进行商业运作的大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上。例如可被部署到高端UNIX与大型机系统,这种系统单机可支持64至256个处理器。(这是NT服务器所望尘莫及的)J2EE领域的供应商提供了更为广泛的负载平衡策略。能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可高度伸缩的
30、系统,满足未来商业应用的需要。稳定的可用性:一个服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要。因为INTERNET是全球化的、无处不在的,即使在夜间按计划停机也可能造成严重损失。若是意外停机,那会有灾难性后果。J2EE部署到可靠的操作环境中,他们支持长期的可用性。一些J2EE部署在WINDOWS环境中,客户也可选择健壮性能更好的操作系统如SunSolaris、IBMOS/390。最健壮的操作系统可达到99.999%的可用性或每年只需5分钟停机时间。这是实时性很强商业系统理想的选择36。2.2 软件框架(MVC)MVC(ModelViewController,模型视图控制器)是一种
31、利用当代操作系统和应用程序具有图形屏幕及相关的事件处理特性,采用直观方法与应用程序互交的创建企业应用程序框架。用于实现如客户机/服务器、分布和Internet架构。这个架构分开了表示逻辑、业务逻辑和数据。MVC的各层定义:视图(view)是与用户交互的界面,向用户显示数据,接受用户输入,与模型层交互,向模型查询业务状态。接收模型发出的数据,更新显示用户界面。模型(Model)是应用程序的主题,它用于表示业务数据和业务逻辑。一个模型可以同事为多个视图提供数据,从而提高了代码的可重用性。控制器(Controller),顾名思义起控制作用。它接收用户输入,并调用模型和视图来完成用户请求。再用户提交表
32、单时,控制器本身并不做任何处理和输出工作。控制器所做的仅仅是:接收请求,然后调用模型组件处理请求,最后调用视图来显示模型处理后返回的数据。图21简单演示了MVC架构在企业环境中的工作原理。这里将控制器显示为五角形,将模组显示为组件,将视图显示为可视页面,并解释了用户操作和事件响应。2.3 设计模式2.3.1 设计模式概述设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。Go
33、F(Gang of Four,指设计模式-可复用面向对象软件的基础的四位作者: Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides)的“设计模式”是第一次将设计模式提升到理论高度,并将之规范化,提出了23种基本设计模式,自此,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现5。2.3.2 设计模式的基本要素设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路6。1.模式名称(pattern name)一个助记名,它用一两个词来描述模式的问题、
34、解决方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我们在较高的抽象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考,便于我们与其他人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的难点之一8。2.问题(problem)描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决条件。3.解决方案(solution)描述了设计的组成成分,它们之间的相
35、互关系及各自的职责和协作方式37。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。4.效果(consequences)描述了模式应用的效果及使用模式应权衡的问题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义38。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模
36、式很有帮助。2.3.3 设计模式的作用外观(Facade):为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用;装饰(Decorate):当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能;单件(Singleton):保证一个类仅有一个实例,并提供一个访问他的全局访问点;模板方法(Template Method):在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。模式(pattern)就是做事的一种方法,也即实现某个目标的途径,或者技术。这种捕获有效技术的思想可以应用到许多领域当中,比如烹饪、生产焰火制品、开发软件以及其他一些行业
37、。对于任何一个正迈向成熟的行业,人们总会开始寻找一些通用和有效的方法,来达到目标并解决不同场合中的问题。由某个行业的从业人员组成的社区通常会发明一些专业术语,以便于同行之间进行交流。这其中的某些专业术语将称为模式,即实现特定目标的公认技术。随着某个行业及其专业术语的发展,一些作者便开始起到重要的作用。他们将某个行业的模式记录归档,参与标准化专业术语,并且公开传播这些有效的技术32。2.3.4 设计模式的好处u 对不断重复出现问题,复用既有的、高质量的解决方案u 确立通用的术语,改善团队内的沟通。u 提升思考层次u 判断设计是否正确,而不仅仅是能够奏效u 改善个人学习和团队学习u 提高代码的可修
38、改性和可维护性u 采用更佳设计方案,即使没有明确使用模式u 发现巨型继承层次结构的代替放案2.4 系统使用的框架与技术2.4.1 设计模式和框架现在,可复用面向对象软件系统现在一般划分为三大类:应用程序、工具箱和框架(Framework),我们平时开发的具体软件都是应用程序;Java的API属于工具箱;而框架是构成一类特定软件可复用设计的一组相互协作的类。EJB(Enterprise JavaBeans)是Java应用于企业计算的框架。框架通常定义了应用体系的整体结构类和对象的关系等等设计参数,以便于具体应用实现者能集中精力于应用本身的特定细节。框架主要记录软件应用中共同的设计决策,框架强调设
39、计复用,因此框架设计中必然要使用设计模式4。另外,设计模式有助于对框架结构的理解,成熟的框架通常使用了多种设计模式,如果你熟悉这些设计模式,毫无疑问,你将迅速掌握框架的结构,我们一般开发者如果突然接触EJB、J2EE等框架,会觉得特别难学,难掌握,那么转而先掌握设计模式,无疑是给了你剖析EJB或J2EE系统的一把利器。软件框架(Frameworks)和设计模式易被混淆。它们两者时紧密相关的。下表列出了两者的相似点和不同点1019。2.4.2 Struts框架2.4.2.1 Struts概述Struts是在JSP Model2的基础上实现的一个MVC框架,它很好的结合了Jsp, Java Ser
40、vlet, Java Bean, Taglib等技术。结构如图2-2。在struts框架中,模型分为两个部分:u 系统的内部状态u 可以改变状态的操作(事务逻辑)内部状态通常由一组ActionForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车cart,它拥有用户购买商品的信息,可能还有addCart()方法用来添加购物车信息,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是st
41、ruts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。2.4.2.2 选择Struts的原因1.struts简单、易懂。容易被人采用,功能强大。2.通过采用模型-视图-控制器(MVC)设计模式,使用struts可以开发使用JAVAServlets和JavaServer Pages的高性能、面向事务的WEB应用程序。3.struts提供的模型2体系结构,视图层-事务处理层-数据模型层,通过明确的应用程序分工使得事务逻辑和显示逻辑彼此相互独立,视图层(html,JSP)将用户所需要的任何数据向事务处理层(serv
42、let)发送请求,事务处理层将根据请求处理相关事务(包括处理请求,验证数据等),将用户所需要的数据提交到数据模型层,数据模型层从数据库取得数据再反馈给事务处理层,由事务处理层传递给视图层显示数据信息。4.struts提供强大的自定义标签库(taglib),编程人员可以根据需要编写各种类型的标签。5.struts本身自带的validator框架,tiles和jstl标记库标记,更能为编程人员提供方便,提高编程效率。更能使整个项目结构性良好、清晰,便于维护。6.struts能很好的与hibernate、spring整合Struts框架对应客户请求的工作流程如下。判断ActionMapping实例是
43、否存在。如果实例不存在,则创建一个ActionMapping对象,它包含了把请求转发给哪个Action的消息。判断ActionForm实例是否存在。如果实例不存在,则创建一个ActionForm对象,并把客户提交的表单数据保存到ActionForm对象中。根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。如果ActionForm的validate()方法返回null,或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。如果ActionForm的validate()方法返回一个或多个ActionErro
44、r的ActionErrors对象,则表示表单验证失败,将直接把请求转发给包含客户提交表单的JSP组件。在这种情况下,不会再创建Action对象并调用Action的execute方法。ActionServlet根据配置信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用其execute方法。Action的execute方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。ActionForward对象指向的JSP组件生成动态网页,返回给客户。2.4.3 Hibernat
45、e框架2.4.2.1 Hibernate概述Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任 20。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration
46、。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五的核心接口分别加以介绍28。u Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。u SessionFactory接口:S
47、essionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。u Configuration接口:Configuration接口负责配置并启动Hibernate,创建u SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。Transaction接口:Transaction接口负责事务相关的操作。它是可选的,可发人员也可以设计编写自己的底层事务处理代码。u Query和Crit