毕业设计(论文)-基于J2EE的商场资产管理系统.doc_第1页
毕业设计(论文)-基于J2EE的商场资产管理系统.doc_第2页
毕业设计(论文)-基于J2EE的商场资产管理系统.doc_第3页
毕业设计(论文)-基于J2EE的商场资产管理系统.doc_第4页
毕业设计(论文)-基于J2EE的商场资产管理系统.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

中北大学2013届毕业设计说明书毕业设计说明书 基于J2EE的商场资产管理系统8班 级: 学号: 姓 名: 软件学院学 院: 软件工程专 业: 指导教师: 2013年 6 月中北大学2013届毕业设计说明书基于J2EE的商场资产管理系统 全套设计加扣 3012250582 摘要随着internet技术的不断发展,应用软件迅速普及,大到厂矿校企,小到图书、餐饮行业,无不应用了信息技术,实现了现代化管理。目前我国中小商场运用信息化等手段,开展现代化治理已经具备良好的基础。但是发展不平衡,从商场规模看,大型商场的信息化水平远远高于小型商场,尤其是采购、生产、库存和销售的信息化程度这四项指标尤为突出,中小商场的差距也最为明显,因此加快信息化建设,实现现代化管理是中小商场的必然选择。 商场资产管理的着眼点是帮助商场管理好有形资产,使之物尽其用,而且要使商场资产的投资回报最大化。原始的商场资产管理体制,采用人力管理浪费大量的时间、人力和物力,并且数据准确性低,数据汇总速度慢。商场资产管理之所以非常重要,是因为良好的资产管理能够减少设备的故障率,缩短维修响应和维修工作时间,延长设备寿命,提高仓库备件储存水平的合理性,提高采购的科学性。 现代商场管理越来越强调利用有形资产来提供优质服务的能力,即通过资产管理来确保有形资产物尽其用、安全运行,在希望的时间和地点提供需要的设备,同时尽可能地降低运行和维护成本。资产管理系统为商场提供全面、迅速的资产信息,方便管理者了解和操作商场内部的资产管理。 本系统是基于B/S的多层Web应用,在windows 7操作系统下,本系统选择了Myeclipse8.6开发环境、Mysql数据库和JSP、Struts、Spring、Hibernate、AJAX技术,利用MVC设计模式将业务逻辑和表示逻辑分离,在表示逻辑层利用JSP技术实现了页面制作、利用AJAX实现无刷新技术,在业务逻辑层,使用Struts、Spring技术,后台使用Mysql进行数据库的开发,并利用Hibernate技术完成对数据库的封装映射。【关键词】商场资产管理,B/S,JSP,SSH,MySQL,设计模式 Abstractwith the development of Internet technology, the rapid expansion in the application software, big into factories and mines, small to books, food industry, all application information technology and modernized management. At present our country small and medium-sized market by means of informatization, etc, to carry out the modernization management has good foundation. But unbalanced development, from store scale, large supermarket information level is significantly higher than that of small market, especially the procurement, production, inventory and sales information degree of the four indicators of particular, small and medium-sized market gap is most pronounced, so to speed up the informatization construction, implement modern management is the inevitable choice of small and medium-sized shopping malls.Store asset managements focus is to help the market managing tangible assets, make, and to maximize the return on investment of mall assets. Original store asset management system, the use of human management to waste a lot of time, manpower and material resources, and the data accuracy is low, data aggregation is slow. Store asset management is very important, because good asset management to reduce equipment failure rate, shorten the maintenance and repair work time response and extend the service life of equipment, improve the level of spare parts warehouse storage of rationality, raise the scientific nature of the procurement.Modern mall management is more and more emphasis on the use of tangible assets to ability to provide quality services, through asset management to ensure that tangible material, safe operation, in the hope that the time and place to provide needed equipment, at the same time as much as possible to reduce operation and maintenance costs. Asset management system for the stores to provide comprehensive, rapid asset information, convenient for managers to understand and operate assets management inside the mall.This system is based on B/S multilayer Web application, under the Windows 7 operating system, this system chose Myeclipse8.6 development environment, the Mysql database and JSP, Struts, Spring, Hibernate, AJAX technology, using the MVC design pattern to separate the business logic and presentation logic, in the page of presentation logic layer using the JSP technology to achieve the production, use AJAX to refresh technology is realized. In the business logic layer, using Struts, Spring, the background using Mysql for database development, and use the Hibernate technology complete encapsulation mapping to the database.【 key words 】 store asset management, B/S, JSP, SSH, MySQL, and design patterns 目录(下面目录小四号宋体,1.5倍行间距,字体统一)1 引言11.1 选题的背景11.2 问题的提出11.3 国内及国外现状研究11.4 系统的开发目标31.5 论文体系结构32 理论及技术基础42.1 JAVA语言42.2 Ajax及JQuery52.2.1 Ajax52.2.2 JQuery62.3 MySql数据库72.4 开发工具82.4.1 IDE工具:MyEclipse8.682.4.2 数据库可视化工具:Navicat for MySQL92.4.3 web容器:Apache Tomcat 6.092.5 系统所用的架构模式(MVC架构模式)102.6 系统所采用的框架(SSH)132.6.1 Struts2132.6.2 Hiberbate142.6.3 Spring162.6.4 三大框架SSH整合182.7 JSP202.8 FancyBox图片插件223 系统需求分析233.1 系统的性能要求233.2 系统的可行性研究分析233.2.1 技术可行性233.2.2 经济可行性243.2.3 操作可行性243.3 需求分析244.1 系统设计思想264.2 系统设计原则265 数据库的设计275.1 数据库表结构275.2 数据库表的ER图295.3 数据字典295.3.1 系统中的数据项条目295.3.2 系统中的部分数据流条目315.3.3 系统中的部分文件条目325.3.4 系统中的部分加工条目335.3.5 系统中的源或宿条目346 系统详细的设计356.1 系统总体结构356.2 系统功能模块设计356.2.1 系统登陆356.2.2 个人信息设置模块366.2.3 部门设置模块376.2.4 类别设置模块386.2.5 管理员设置模块396.2.6 员工设置模块406.2.7 资产设置模块406.2.8 分类统计模块43第 II 页 共 II 页1 引言1.1 选题的背景 随着internet技术的不断发展,应用软件迅速普及,大到厂矿校企,小到图书、餐饮行业,无不应用了信息技术,实现了现代化管理。目前我国中小商场运用信息化等手段,开展现代化治理已经具备良好的基础。但是发展不平衡,从商场规模看,大型商场的信息化水平远远高于小型商场,尤其是采购、生产、库存和销售的信息化程度这四项指标尤为突出,中小商场的差距也最为明显,因此加快信息化建设,实现现代化管理是中小商场的必然选择。1.2 问题的提出 商场资产管理的着眼点是帮助商场管理好有形资产,使之物尽其用,而且要使商场资产的投资回报最大化。原始的商场资产管理体制,采用人力管理浪费大量的时间、人力和物力,并且数据准确性低,数据汇总速度慢。商场资产管理之所以非常重要,是因为良好的资产管理能够减少设备的故障率,缩短维修响应和维修工作时间,延长设备寿命,提高仓库备件储存水平的合理性,提高采购的科学性。 现代商场管理越来越强调利用有形资产来提供优质服务的能力,即通过资产管理来确保有形资产物尽其用、安全运行,在希望的时间和地点提供需要的设备,同时尽可能地降低运行和维护成本。资产管理系统为商场提供全面、迅速的资产信息,方便管理者了解和操作商场内部的资产管理。1.3 国内及国外现状研究就国外EAM研究和开发情况来看,分为以下几种情况: (1)、专业从事EAM研发的公司。有些已经进入国内,比如MRO、DATASTREAM、IFS、INDUS等,他们在国内做了一些客户,有些还是比较有影响的行业。但是遗憾的是,鲜有成功案例。这有几方面的原因,一是国外软件并不一定就包含先进商场资产管理思想,比如状态监测技术在EAM中的应用,上述几家外国公司很难实现;二是这些公司进入国内后,主要精力是销售,因此根本无法进行商场资产管理的研究,而是生搬硬套地推销给国内商场,然后让商场按照其软件设计的模式和流程去进行所谓的BPR(流程再造),结果当然失败。三是国外公司根本不具备设备工程与管理方面的人才。(2)一些ERP厂家,如SAP、ORACLE等。他们在做ERP的过程中,发现自己缺少商场资产管理这块内容,于是或开发或收购,对自己的不足进行补充。但是目前他们缺少设备工程技术人员和在国内进行EAM研发的机制,无法从事EAM研发。就国内EAM研究和开发情况来看,分为以下几种情况: (1)、专业从事设备工程与管理的公司。他们拥有一批专业从事设备工程与管理研究和开发的研发人员,拥有强大的咨询及研发团队,汇集了国内一批知名的设备管理专家,在设备维修、备品备件、维修策略、库存管理、状态监测等领域均有专业人员进行理论研究、案例实施及咨询服务。他们开发的商场资产管理(EAM)系统非常成功,为商场创造了显著的效益,受到了用户的一致欢迎,被称为“是“真正搞设备管理的专家设计出来的软件”。(2)、一些软件公司。他们为不少商场开发或销售了设备管理软件,应该说用户还是很多的,但是由于他们缺乏专业从事设备工程与管理研究和开发的研发人员,并且没有很好领会商场资产管理(EAM)的含义,因此虽然在这个领域已经有好多年了,但是在国内很难找到一家完整并成功的案例,其案例大多是单项、批处理系统。(3)、某些从事开发和服务的机构,包括一些计算机系统集成公司等。同样的原因他们缺乏专业从事设备工程与管理研究和开发的研发人员,并且大多是因为商场在开发MIS系统时顺便开发设备管理系统,根本无从谈起领会商场资产管理(EAM)的含义,因此可以说开发一个失败一个。(4)、一些国外EAM厂家的咨询和代理商。他们更多关注销售软件,因此不可能有力量从事EAM的研发。他们的关注点是如何吸引客户的目光。 总体来看,国内那些不专业的公司及国外公司共同的问题是系统支离破碎,无法涵盖商场资产管理所有要求,无法满足当前商场对资产管理特别是状态维修的要求。国内公司的问题大多是静态、单项、批处理系统居多,国外公司的问题是软件停留在几年前设备管理的水平,想当然地让客户进行BPR,孰不知一个商场的流程并不取决与一个软件,而是取决于先进的商场资产管理思想,同时要求软件能够适应商场机构、人员变化而软件并不需做很大调整。1.4 系统的开发目标开发资产管理系统目的在于解决企业资产管理过程中不必要的人力、物力的浪费,提高数据汇总速度,从而提高资产管理的合理性和科学性。1.5 论文体系结构本文共分七章,各章的主要内容如下:第一章“绪论”部分主要综述了系统的开发背景、国内外研究现状、系统的开发目标及论文的体系结构。第二章“理论及技术基础”部分对论文研究中所用到的理论、技术简单的介绍。第三章“系统需求分析”部分主要描述了系统的需求分析过程,包括系统的基本情况描述,系统功能分析,可行性分析以及软硬件环境要求。第四章“系统概要设计”部分对系统的总体设计过程做了阐述,主要包括系统的整体功能模块分析,功能模块细分与设计。第五章“数据库的设计”部分对系统的数据库表结构做了阐述,主要包括系统的数据库设计和表结构的设计,以及各表之间的关系。第六章“系统详细设计”部分主要对本系统的核心代码做了讲解,并且列出了相应的核心代码。2 理论及技术基础2.1 JAVA语言 Java是一种简单的面向对象的解释型语言。它的三大特性是继承、封装、多态。1. java 的跨平台性:Java 通过JVM 实现了跨平台技术,Java 源代码(*.java)经过Java的编译器编译成Java字节码(*.class),执行Java字节码,Java字节码,经过JVM的解释为具体平台的具体指令,并执行。不同平台有不同的JVM,主流平台都提供了JVM。所以JAVA字节码可以在所有平台上能够解释执行。在这个意义上Java是跨平台的。也就是说:Java 的字节码是跨平台的。 2. Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3. Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、 URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4. Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。5. Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让 Java应用设置安全哨兵。 软件开发网 6. Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。7. Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。8. Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9. Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。 11. Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。2.2 Ajax及JQuery2.2.1 AjaxAjax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。通过 AJAX, JavaScript 可使用 JavaScript的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据。AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。AJAX 可使因特网应用程序更小、更快,更友好。AJAX 是一种独立于 Web 服务器软件的浏览器技术。AJAX 基于下列 Web 标准:JavaScript XML HTML CSS 在 AJAX 中使用的 Web 标准已被良好定义,并被所有的主流浏览器支持。AJAX 应用程序独立于浏览器和平台。Web 应用程序较桌面应用程序有诸多优势;它们能够涉及广大的用户,它们更易安装及维护,也更易开发。不过,因特网应用程序并不像传统的桌面应用程序那样完善且友好。通过 AJAX,因特网应用程序可以变得更完善,更友好。2.2.2 JQueryjQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写的更少,做的更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多javascript高手加入,现在由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。jQuery库是一个单独的javascript文件,可以保存到本地或者服务器直接引用,也可以从多个公共服务器中选择引用。jQuery包含以下特点:DOM元素选择。基于开源的选择器引擎sizzle(从1.3版开始使用)。DOM元素遍历及修改(包含对CSS1-3的支持)事件处理动态特效AJAX通过插件来扩展方便的工具 - 例如浏览器版本判断渐进增强链式调用多浏览器支持,支持Internet Explorer 6.0+、Opera 9.0+、Firefox 2+、Safari 2.0+、Chrome 1.0+。2.3 MySql数据库 MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力。 MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。 SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。 MySQL 主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。自1996年以来,我们一直都在使用MySQL,其环境有超过 40 个数据库,包含 10,000个表,其中500多个表超过7百万行,这大约有100 个吉字节(GB)的关键应用数据。 MySQL数据库的主要功能只在组织和管理很庞大或复杂的信息和基于WEB的库存查询请求不仅仅为客户提供信息,而且还可以为您自己使用数据库可以提供如下功能: (一)减少记录编档的时间 (二)减小记录检索时间 (三)灵活的查找序列 (四)灵活的输出格式 (五)多个用户同时访问记录综上所述,MySQL由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用。2.4 开发工具2.4.1 IDE工具:MyEclipse8.6MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。MyEclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。MyEclipse 8.6的主要改进是在团队写作和集中工作环境的集中配置管理方面。同时MyEclipse 8.6还包含了上百个功能的改进和新特性,这些新功能和特性将让MyEclipse 8.6用户在开发代码,测试,以及部署应用方面都得到极大的便利。相比以前的版本MyEclipse 8.6 主要改进了如下功能:1MyEclipse 8.6 M1引入了一个全新的JavaScript编辑器,该编辑器提供了更好的JavaScript/HTML高亮标记和代码支持,同时提供了更为精确的语法校验功能。2MyEclipse 8.6 M1新增了Struts2图形编辑器3MyEclipse 8.6 M1引入了MyEclipse配置中心功能4该功能包括,允许用户更方便的安装/卸载MyEclipse模块5快速检索和安装目前最流行的Eclipse插件,与IDEA一样直接检索到之后可以通过checkbox选择安装,十分方便。6浏览,编辑和安装所有的软件更新,同时支持自定义升级站点。7轻松的在团队中共享MyEclipse 8.6工作平台配置8通过授权获取用户的工作台变更信息,同时让用户共享这些工作台的配置9通过MyEclipse配置中心持久化(保存)工作台的个性化设置10允许独立共享工作台配置信息,也可以通过授权让特定的用户更改工作台配置信息11MyEclipse 8.6 M1新增了大量的应用程序服务器联接器,让MyEclipse 8.6支持更多的应用程序服务器。表2.4.3 服务器Glassfish 3JBoss 6Resin 4Jetty 7JOnAS 5SpringSource tc ServerJava System Web Server 712MyEclipse 8.6 M1在开源框架的支持方面也进行了不少改进包括:Spring 3.0 ,Hibernate 3.3,Spring Security 2.0,Spring Security 3.013MyEclipse 8.6 M1新增了截屏功能14MyEclipse 8.6 M1改进了对UML2.0的支持15MyEclipse 8.6 M1改进了对JavaServer Faces,Facelets,ICEfaces的支持2.4.2 数据库可视化工具:Navicat for MySQL(下文1.5倍行间距)Navicat for MySQL是一款强大的 MySQL 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。Navicat for MySQL 基于Windows平台,为 MySQL 量身订作,提供类似于 MySQL 的用管理界面工具。此解决方案的出现,将解放 PHP、J2EE 等程序员以及数据库设计者、管理者的大脑,降低开发成本,为用户带来更高的开发效率。Navicat for MySQL 使用了极好的图形用户界面(GUI),可以用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息。 用户可完全控制 MySQL 数据库和显示不同的管理资料,包括一个多功能的图形化管理用户和访问权限的管理工具,方便将数据从一个数据库转移到另一个数据库中(Local to Remote、Remote to Remote、Remote to Local),进行档案备份。 Navicat for MySQL 支援 Unicode,以及本地或远程 MySQL 服务器多连线,用户可浏览数据库、建立和删除数据库、编辑数据、建立或执行 SQL queries、管理用户权限(安全设定)、将数据库备份/复原、汇入/汇出数据(支援 CSV, TXT, DBF 和 XML 档案种类)等。软件与任何 MySQL 5.0.x 伺服器版本兼容,支援 Triggers,以及 BINARY VARBINARY/BIT 数据种类等的规范。2.4.3 web容器:Apache Tomcat 6.0 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器。技术先进、性能稳定,,而且免费,它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat 是一个轻量级应用服务器,对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。 图2.4.3 tomcat6.0 的运行原理图(图表号与图表名之间空一格,下同,自己调整)2.5 系统所用的架构模式(MVC架构模式)MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。MVC是 模型(Model),视图(View)和控制(Controller)的缩写,其目的实现Web系统的职能分工。其中Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现; View层用于与用户的交互,通常用JSP来实现; Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。 图2.5.1 MVC模式图视图视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。模型模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。控制器控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。表现层(Presentation layer)包含表示代码、用户交互GUI、数据验证。该层用于向客户端 。用户提供GUI交互,它允许用户在显示系统中输入和编辑数据,同时系统提供数据验证功能。业务逻辑层(Business layer)包含业务规则处理代码,即程序中与业务 相关专业算法、业务政策等等。该层用于执行业务流程和制订数据的业务规则。业务逻辑层主要面向业务应用,为表示层提供业务服务。数据持久层(Persistence layer)包含数据处理代码和数据存储代码。数据持久层主要包括数据存取服务,负责与数据库管理系统(如数据库)之间的通信。 三个层次的每一层在处理程序上有各自明确的任务,在功能实现上有清晰的区分, 各层与其余层分离,但各层之间存有通信接口。 MVC的优点低耦合性视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。高重用性和可适用性随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。快速的部署使用MVC模式使开发时间得到相当大的缩减,它使程序员集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。可维护性分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。2.6 系统所采用的框架(SSH)2.6.1 Struts2 Struts:是最早的java开源框架之一,大多数java web应用程序都是基于struts框架构建的,它是MVC设计模式的一个优秀实现,struts运行离不开他的核心组件,也就是filterDispatcher,它需要中容器启动时,加载sturts-config.xml然后利用DispatchAction和Struts提供的标签库来简化程序编程,优点:1MVC设计模式的实现 2接收用户请求,调用业务逻辑,转发到正确页面 3控制器。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。 图2.6.1 sturts2工作原理图一个请求在Struts2框架中的处理大概分为以下几个步骤1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类6 ActionProxy创建一个ActionInvocation的实例。7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper在上述过程中所有的对象(Action,Results,Interceptors)都是通过ObjectFactory来创建的。2.6.2 Hiberbate Hibernate是一个优秀的持久化框架,也是一个主流的ORM(对象-关系映射)框架。负责简化将对象数据保存到数据库中,或者从数据库中读取数据而封装到对象的工作,记得以前写的JDBC连接数据库代码比较繁琐,自从学习了Hibernate后,代码精简很多,例如,加载数据,以前我们需要繁琐的ResultSet读取数据,然后封装到实体,而现在,加载只需一行代码,User user=(User) session.get(User.class,id)。Hibernate还可以帮我们自动创建DAO类,里面内容特别丰富,增删改查,当使用时直接调用就可以了,代码量大大减少了。 与具体的数据库无关。图 Hibernate体系结构的概要图Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这6个核心接口分别加以介绍。Session接口Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。SessionFactory接口SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。Configuration类Configuration类负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。Transaction接口Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码Query和Criteria接口Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语句或SQL语句两种表达方式。 图 6个核心模块之间的关系图2.6.3 Spring Spring是一个轻量级的控制反转(IoC)和面

温馨提示

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

评论

0/150

提交评论