客户关系管理系统教学文案.doc
Good is good, but better carries it.精益求精,善益求善。客户关系管理系统-学校代码:10459学号:毕业设计(论文)题目:客户关系管理系统指导教师:职称:副教授学生姓名:学号:专业:计算机科学与技术(软件开发)院(系):软件学院完成时间:2012-5-22012年05月02日-目录目录I摘要IIIABSTRACTIV1前言11.1系统开发意义和前景11.2系统最终目标12系统可行性研究22.1技术可行性研究22.2经济、社会效益分析32.2.1经济效益32.2.2社会效益32.3法律可行性分析32.4开发方案的选择性以及开发进程研究32.4.1开发方案的选择33系统总体描述53.1关键技术53.1.1B/S架构53.1.2J2EE技术架构63.1.3JSP+SERVELET技术73.1.4JAVASCRIPT脚本语言83.1.5AJAX技术93.1.6APACHE服务器93.1.7ORACLE10G数据库技术103.1.8VSS技术113.2系统简介和用途113.3系统的结构123.4系统功能123.5系统特点143.5.1程序特点143.5.2系统创新点143.5.3同类产品比较153.6数据库设计与编码体系154系统模块描述及数据库设计164.1系统管理模块164.1.1组织机构管理174.1.2角色管理184.1.3用户管理194.1.4信息上报204.1.5系统公告214.1.6文件管理224.1.7年度变更234.1.8数据备份234.2补贴项目模块244.2.1补贴项目信息244.2.2发放补贴244.2.3删除发放补贴254.2.4核对补贴信息254.3数据库设计264.3.1数据库需求分析264.3.2ORACLE数据库中用户的创建及其角色的分配和表空间的分配274.3.3数据库中各主要表的结构275软件测试305.1测试原则305.2测试目的305.3测试人员和测试时间305.4测试环境305.5系统测试315.5.1连通性测试315.5.2功能测试315.5.3网络性能测试315.6主机平台系统测试315.6.1实测项目315.6.2操作系统315.6.3软件平台系统测试325.6.4性能测试325.7应用系统功能测试335.7.1测试对象335.7.2测试内容335.7.3测试方法335.7.4测试结果335.8测试结论336总结34致谢35参考文献36摘要客户系统管理系统通过集成各种与客户接触的渠道如TelphoneNumber、Web、Email、Fax/Mail等,建立统一的与客户互动的接触界面;以此为基础,建立起基于可定制业务流程基础上的销售管理、市场营销、客户服务与支持等与客户相关的全部业务的应用系统,形成跨越部门的业务处理协作环境;通过对与客户接触过程以及企业面向客户的协作过程所产生的大量数据进行分析,识别客户规律,指导企业的运作过程,进一步改善与客户的互动关系,发现和捕捉更多的市场机会。因此,客户管理系统越来越多的被一些中小型企业所青睐,它的开发需求也应运而生。客户系统管理系统采用了目前业内主流的B/S结构平台以及JAVA分层开发模式如DAO、SERVICE、ACTION。合理运用了设计模式,代码比较规范,良好的风格提高了系统的可读性和可维护性。采用Oracle10g数据库和Tomcat6.0服务器,主要运用的技术为SSH框架技术、JSP、HTML、Div+CSS、JSTL标签、Struts2标签,Hibernate、Spring技术。JSP语言是当前流行的Web程序开发语言,它结合JavaScript和CSS极大的丰富了本系统的WEB表现,后台采用支持百万级数据存储计算的ORACLE数据库来满足大量数据计算的要求;经过不懈的努力,该系统不但严格遵守了需求分析,代码也是很规范,系统可用性,稳定性,可扩展性比较好;系统在一定的软硬件环境下,在预定的数据量下能满足系统既定的性能要求;并且系统的交互性比较强,极大提升了用户的体验。关键词:JSPSSHSERVLETORACLEDiv+CSSStrutsSpringJavaScriptABSTRACTCustomersystemmanagementsystembyintegratingvariouscustomercontactchannelssuchasTelphoneNumber,theWeb,email,Fax/Mail,toestablishaunifiedcontactinterfacetointeractwithcustomers;asabasistoestablishbasedoncustomizablebusinessprocessesbasedonsalesmanagement,marketing,customerserviceandsupportcustomerbusinessapplicationsystems,theformationofcross-sectorbusinessprocesscollaborationenvironment;largeamountsofdatageneratedbytheprocessofcontactwithcustomersandcorporatecustomer-oriented,collaborativeprocessanalysis,customeridentificationlaw,theprocessofguidingtheoperationofenterprises,tofurtherimprovetheinteractiverelationshipwithcustomers,discoveryandcapturemoremarketopportunities.Therefore,thecustomermanagementsystem,moreandmoresmallandmediumenterprisesfavoreditsdevelopmentneedshaveemerged.Thecustomersystemmanagementsystemusestheindustrymainstream,B/SstructureplatformandJAVAlayereddevelopmentmodelsuchasDAO,SERVICE,ACTION.Rationaluseofdesignpatterns,thecodeisfairlystandard,andagoodstyletoimprovereadabilityandmaintainabilityofthesystem.Oracle10gdatabaseandTomcat6.0ofserver,themainuseoftechnologyfortheSSHframework,JSP,HTML,DivCSS,JSTLtags,theStruts2tags,Hibernate,theSpringtechnology.JSPlanguageisapopularWebprogramminglanguagethatcombinesJavaScriptandCSSgreatlyenrichedWEBperformanceofthissystem,thebackgroundusingtheORACLEdatabasetomeetthecomputingrequirementsoflargeamountsofdatatoonemilliondatastoragecalculated;makeunremittingeffortstothesystemnotonlyinstrictcompliancewithrequirementsanalysis,thecodeisverystandardized,systemavailability,stability,scalability;systemhardwareandsoftwareenvironment,inapredeterminedamountofdatatomeettheestablishedperformancerequirements;andtheinteractionofthesystem,whichgreatlyenhancetheuserexperience.Keywords:JSPSSHSERVLETORACLEDiv+CSSStrutsSprinJavaScript1前言1.1系统开发意义和前景随着信息技术的高速发展、互联网全球化、企业全球化的时代的到来,世界正朝着市场全球化、企业生存数字化、商业竞争国际化、竞争对手扩大化等方向发展。因此,在这数字化的时代里,普通的人工管理技术也受到了极大的挑战。企业的经营进一步打破了地域的阻隔,如何在全球贸易体系中占有一席之地,如何赢得更大的市场份额和更广阔的市场前景,如何开发和保持相对稳定的客户资源,已成为影响企业生存和发展的关键问题。客户是公司最宝贵的资源,为了更好的发掘老客户的价值,CRM(客户关系管理)随即产生。它是一种以客户为中心的管理理念和战略,是建立在互联网基础上的一个新系统,旨在改善企业与客户之间的关系,最终实现并提高企业的价值。客户关系系统的实现不仅使企业全面观察其所具有的客户资源,可以帮助公司抓住主要客户,维持一般客户,开拓新客户同时对将要流失的客户进行提醒和警告,这样对公司更好更快的发展有着显著的意义:1)CRM可以加速企业对客户的响应速度。CRM改变了企业的运做流程,企业应用CRM系统采取多种方式与客户直接进行交流,缩短了企业对客户的响应时间,企业也可以更及时的了解到客户的需求,从而有针对性的改进企业的业务。2)CRM可以帮助企业改善服务。CRM向客户提供主动的客户关怀,根据销售和服务历史提供个性化的服务,在知识库的支持下向客户提供更加专业化的服务和客户纠纷跟踪,这些都是为企业改善服务的有力保证。3)CRM可以提高企业的工作效率。由于CRM建立了客户与企业打交道的统一平台,客户与企业的一点点接触就可以完成多项任务,因此办事效率大大提高。另一方面,CRM提高了业务管理的自动化程度,使得很多繁琐的、重复性的工作(如批量发传真、邮件)都由计算机系统完成,工作的效率和质量都是人工无法比拟的12。4)CRM可以有效地减低成本。运做CRM可以使得团队销售的效率和准确率大大提高,服务质量的提高也会使得服务时间和工作量大大降低,这些都无形中降低了企业的运做成本。5)CRM可以规范企业的管理。CRM为企业提供了同意的业务平台,并且通过自动化的工作流程将企业的各种业务活动紧密地结合起来,将个人的工作纳入到规范的业务流程中。同时将发生的各种业务信息存储在统一的数据库中,可以避免重复工作和以及人员流动造成的损失,这样使得企业的管理更加规范。6)CRM可以帮助企业深入的挖掘客户的需求。CRM注意收集各种客户信息,并将这些信息存储在统一的数据库中,同时CRM还提供了数据挖掘工具,可以帮助企业对客户的各种信息进行深入的分析,从而挖掘客户的需求,提升客户的价值。7)CRM可以为企业提供科学的决策支持。CRM是建立在“海量”的数据库之上的,其统计分析工具可以帮助企业了解信息和数据背后蕴涵的规律和逻辑关系。掌握了这些,企业的管理者就可以做出科学、准确的决策,使得企业在竞争中抢占先机众所周知,顾客就是上帝,只有满足了上帝的需求,上帝才能给我们带来一切。一个企业要生存、要发展,就是要不断的满足客户的需求,无论做出什么样的决策,最终都是为了这个的目。每个领域都有自身生存法则,但无论这个法则如何变化,为客户服务的宗旨是不会变的。作为企业,只有不断地挖掘新客户,维护好和老客户的关系,占领市场客户群体的绝大多数份额,才能在整个领域取得一席之地从企业的长远利益出发,企业应保持并发展与客户的长期关系。双方越是相互了解和信任,交易越是容易实现,并可节约交易成本和时间,由过去逐次逐项的谈判交易发展成为例行的程序化交易。所有的企业都需要管理好自己的客户关系。客户被作为一种宝贵的资源纳入到企业的经营发展中来了。客户资源决定企业核心竞争力,这样企业对顾客的合理而又科学的管理使得企业在日益激烈而又残酷的社会竞争中立于不败之地。1.2系统最终目标建立起基于可定制业务流程基础上的销售管理、市场营销、客户服务与支持等与客户相关的全部业务的应用系统,形成跨越部门的业务处理协作环境;通过对与客户接触过程以及企业面向客户的协作过程所产生的大量数据进行分析,识别客户规律,指导企业的运作过程,进一步改善与客户的互动关系,发现和捕捉更多的市场机会。2系统可行性研究2.1技术可行性研究根据企业针对客户关系管理系统所提出的系统功能、性能以及系统必须是可靠、安全、先进、开放、实用和可扩展的等其他实现的各项约束条件,从技术的角度研究实现系统的可行性:(1) 易用性软件系统的易用性往往是决定使用者是否容易接受系统的重要因素,好使用的系统更有利于在企业中推广。CRM是一种以客户为中心的经营策略,它以信息技术为手段,对业务功能进行重新设计,并对工作流程进行重组。这个系统的交互设计比较自由而又舒适人性化,信息组织比较有条理,操作交互性强,页面框架清晰、页面导航层次合,各个功能页面之间链接合理,各个页面内容放置清晰、位置合理,操作简单,流程合理,界面友好 ,错误处理得当,有统一的处理页面,相应的操作有提示信息 ,页面排版布局一致 ,页面颜色风格显示一致,功能和链接页面保持一致,而且页面风格比较简约大方易操作。(2) 安全性无SQL 注入漏洞,不允许直接输入URL地址访问页面,给出了处理,无越权操作漏洞(比如普通用户能进行管理员的操作),系统采用先进而成熟的技术。系统对外必须有完备的安全防范措施,必须建立符合安全要求的防火墙,能够严格有效地防止外来非法用户入侵,能够避免遭受攻击或遭到攻击能报警。系统必须具有完备的用户权限管理功能,禁止越权操作。通过对常见的各种安全状况进行分析,本系统的安全系数还是比较高的。(3) 可维护性因为在数据量很小,用户并发数很小的情况下,性能问题并不容易显现出来,性能问题往往在系统真正上线或上线运营一段时间后才会集中显现出来,所以在开发这个系统时,考虑到性能问题并在实现系统时进行多方面的考虑与测试,系统采用基于Web的多层结构设计,实现了客户端零安装,使系统的可维护性大幅度提高。基于Web的瘦客户端将为用户节省大量的系统维护费用。由于在开发阶段考虑到很多突发情况,在编码阶段就加入了一些防护措施,系统还是比较强大的,但是意外情况太多,系统整体的可维护性还是比较强。(4) 可靠性系统对于规范要求以外的输入能够判断这个输入不符合规范要求,并能有合理的处理方式。能对一些异常进行捕捉,并进行统一处理。不能在较短时间内出现当机,频繁出现故障等。在数据处理中,采用严格的事务控制,保证对数据库中多个表的操作同时提交或回滚,维护数据的一致性和完整性。(5) 可扩展性现在的系统大部分是可以扩展的,可以在以后的需求更改或者企业发展中增加一些功能,并利于以后的系统维护与扩展,并且在CRW系统设计中,所有的网络、服务器、存储、应用软件的设计都将遵循可扩充的原则,利用企业现有的软硬件资源,提供最大的软硬件选择余地。系统采用易于扩展的框架结构,使应用系统的客户化和二次开发变得简单,本系统用于管理与客户相关的信息与活动,所以在设计时考虑到很多情况,比如查询功能、库存数据查询功能、历史订单查询功能就是后来添加的,本系统的扩展性更强。(6) 灵活性必要的非空判断,数字、日期处理 ,页面出现异常,统一页面处理,页面不存在,给出提示信息,不能出现,系统融合了各中小型企业的管理、营销和服务情况,支持多种开发客户与管理客户,并对客户进行长期管理的和服务的组合选择性。可以按照新添加客户信息,经行初步的沟通与营销活动,也可以根据老顾客的需求信息及习惯进行服务,顾客的等级不一样,可以进行不同的服务,因人而异,尽量把所有等级的顾客都变成公司的忠诚的老顾客,壮大公司的客户群及现代市场竞争力,所以此系统很多功能都可以灵活的供用户选择。(7) 系统高度集成进入系统的数据能根据事先的设定以及管理工作的内在规律和内在联系,传递到相关的功能模块中,从而实现数据高度共享和系统的高度集成。(8)支持多种数据库保证系统尽可能支持不同类型的后台数据库。在数据库设计过程中,尽量保证数据库表、字段等与具体的后台数据库管理系统无关,这样可以方便数据在不同的数据库系统之间迁移。(9)结构模块化本系统采用Struts框架技术,Strut中的各种组件都是标准的J2EEWeb组件:利用Servlet、JavaBean和JSP、定制标签库等Web组件以及XML等方面的技术来实现构建Web应用系统。Struts同时也是基于MVC模式的Web应用最经典的框架:作为一个日渐成熟的优秀框架技术,Struts框架在构建基于MVC模式的J2EEWeb应用系统有许多技术方面的优势,由于采用软件系统在设计和开发过程中要保证各子系统、子系统中的各项功能,甚至每一个应用程序的高度模块化。2.2系统运用后的效果分析客户关系管理是一种新颖的企业战略和管理手段。客户关系管理在市场开拓、吸引和保留客户、降低销售成本,减少销售环节、提高企业运行效率方面提升企业竞争优势,具体体现在以下几个方面:1)市场开拓通过电话、网络等新的业务模式与客户进行频繁交往,扩大企业经营活动范围;增加与客户的往来信息,掌握市场最新动态,及时把握机会和竞争时机,扩大市场占有份额。2)吸引、保留客户,提高客户忠诚度良好的CRM不仅是企业更好的保留现有的客户,而且还可使企业寻找回已经失去的客户。根据一些调查结果表明,目前客户已不再象过去那样长期保持对某一企业的绝对忠诚,因为目前的客户已经有了更多的选择,更多的购买渠道等等能力。如果客户对某一供应商感到不甚满意,则可迅速转向其他的供应商,而企业为此付出的代价是:发展一个新客户往往要比保留一个老客户多花费8倍的投入。CRM智能客户管理为企业带来忠实和稳定的客户群。3)减少销售环节、降低销售成本、提高企业运行效率CRM改进信息提交方式。由于市场的迅速膨胀,企业所管理的客户信息正在急剧增长。但是公司内部的部门设置乃至基础通讯设施,均是围绕每一项服务而非每一个客户加以组织的,雇员们很难回答那些接受了一项以上服务的客户所提出的请求。CRM允许对某一客户相关的信息进行集中化的管理,企业中各部门的雇员都可对这些信息加以存取,信息传递的中间环节减少,销售环节相应减少,销售费用和成本随之降低。同时客户关系管理所提供的从产品、销售数量、销售成本、到市场风险、客户变化等方面的多维分析,可提高企业营运效率。2.4开发环境及运行环境2.4.1开发环境本系统是在windowsXP操作系统下,使用MyEclipse8.0、DwCS4、PLSqlDev8.0作为开发工具进行开发的。数据库使用的是Oracle10g。服务器使用的是Tomcat6.0。2.4.2运行环境在服务器端运行系统所需的环境如表1所示:表1服务器端配置软件环境:jre1.5及以上tomcat6.0及以上Oracle10g或者MySQL4.0以上硬件环境:512DDR2寄存器SDRAM内存推荐1G以上英特尔(R)Core(TM)2及以上处理器2GB以上SCSIHardDrivewindowsServer,linux在客户端运行系统所需的环境如表2所示:表2客户端端配置软件环境:可选软件平台:中文Windows95及以上IE浏览器5以上硬件环境:1GBDDR2寄存器SDRAM内存100MBSCSIHardDrive3客户关系管理系统总体描述3.1关键技术CRW整个系统采用B/S开发模式,客户端计算机上安装通用的浏览器(例如Windows操作系统的InternetExplorer),用户通过使用虚拟专用网(VPN)用浏览器向WEB服务器发出业务处理请求,WEB服务器收到请求后,如果需要业务处理,就调用业务处理组件,访问数据库,然后将处理后的结果形成HTML格式的信息返回浏览器进行显示。软件平台采用J2EE平台,采用Apache和Tomcat作为运行平台,采用Java、Jsp、Servlet、XML、AJAX、SSH、Div+CSS、Struts、Spring、JavaScript等进行软件开发用来显示用户界面;数据库采用ORACLE10g。3.1.1SSH框架技术著名的软件大师RalphJohnson对框架(Framework)进行了如下的定义:框架是整个系统或系统的一部分的可重用设计,由一组抽象的类及其实例间的相互作用方式组成1。框架一般具有即插即用的可重用性、成熟的稳定性以及良好的团队协作性。J2EE复杂的多层结构决定了大型的J2EE项目需要运用框架和设计模式来控制软件质量。目前,市场上出现了一些商业的、开源的基于J2EE的应用框架,其中主流的框架技术有:基于MVC模式的Struts框架和基于IoC模式的Spring框架以及对象/关系映射框架Hibernate等。SSH(Spring、Struts、Hibernate),即表示层框架Struts,业务逻辑层框架Spring,数据持久层框架Hibernate,流程:在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的SpringIoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。3.1.2Spring技术Spring是一个开源框架,它由RodJohnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整。目的:解决企业应用开发的复杂性功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能范围:任何Java应用简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。它定位的领域是许多其他流行的framework没有的。Spring关注提供一种方法管理你的业务对象。Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。Spring对你的工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。让我们看一下Spring可以给一个工程带来的一些好处:Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。如果你仅仅使用了Struts或其他的包含了J2EE特有APIs的framework,你会发现Spring关注了遗留下的问题,。Spring能消除在许多工程上对Singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。Spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置。曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,为此不得不读Javadoc乃至源编码吗?有了Spring,你可很简单地看到类的JavaBean属性。倒置控制的使用(在下面讨论)帮助完成这种简化。Spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。使用Spring构建的应用程序易于单元测试。Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或localEJBs来实现业务接口,却不会影响调用代码。Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适于许多web应用。例如,Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。Spring为数据存取提供了一致的框架,不论是使用JDBC或O/Rmapping产品(如Hibernate)。Spring确实使你能通过最简单可行的解决办法解决你的问题。这些特性是有很大价值的。总结起来,Spring有如下优点:低侵入式设计,代码污染极低。独立于各种应用服务器,可以真正实现WriteOnce,RunAnywhere的承诺。Spring的DI机制降低了业务对象替换的复杂性。Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全。3.1.3Struts技术Struts是Apache基金会Jakarta项目组的一个OpenSource项目,它采用MVC模式,能够很好地帮助java开发者利用J2EE开发Web应用。和其他的java架构一样,Struts也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs框架的核心是一个弹性的控制层,基于如JavaServlets,JavaBeans,ResourceBundles与XML等标准技术,以及JakartaCommons的一些类库。Struts有一组相互协作的类(组件)、Serlvet以及jsptaglib组成。基于struts构架的web应用程序基本上符合JSPModel2的设计标准,可以说是一个传统MVC设计模式的一种变化类型。Struts2号称是一个全新的框架,但这仅仅是相对Struts1而言。Struts2与Struts1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts1的血统,而是继承WebWork的血统。或者说,WebWork衍生出了Struts2,而不是Struts1衍生了Struts2。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts1和WebWork两者的优势,因此,是一个非常值得期待的框。ApacheStruts2是一个优雅的,可扩展的JAVAEEweb框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。ApacheStruts2即是之前大家所熟知的WebWork2。在经历了几年的各自发展后,WebWork和Struts社区决定合二为一,也即是Struts2。Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不是Struts1的设计核心。Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与ServletAPI分离。图4是Struts2的体系结构简图。图4Struts2的体系结构简图Struts2框架的大概处理流程如下:1.浏览器发送一个请求。2.核心控制器FilterDispatcher根据请求决定调用合适的Action。3.WebWork的拦截器链自动对请求应用通用功能,如验证等。4.回调Action的execute方法,该execute方法根据请求的参数来执行一定的操作。5.Action的execute方法处理结果信息将被输出到浏览器中,支持多种形式的视。3.1.4Hibernate技术Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方。3.1.5TOMCAT简介Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新的java产品,可见其在业界的地位。与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(WebArchive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录