还剩63页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
沈阳理工大学学士学位论文摘要随着互联网技术的不断强大,网络购物的趋势不断在攀升在当今社会中,繁忙的工作以至于人们没有足够的时间去书店去挑选自己想要的书籍这样给人们购买书籍方面造成了一点的困扰于是图书网上购物商城成为了一代人们新型购买书籍的一种更快捷,更方便,更舒心的一种方式通过研究与分析,了解到网络商品消费越来越受到人们的青睐,网络商品销售管系统的应用性日益突出基于网络商品销售系统的设计与开发,可为完整的大型商务网站开发积累大量的经验,完善中国的电子商务活动,为社会带来巨大的经济效益,提高社会的生产力系统采用基于B/S模式的Internet网络,在技术上,采用Java编程,使用比较流行的SSH框架技术,以MVC设计思想为主导整体提高了系统的扩展性、可维护性、代码重用性在功能上,分为前台用户模块、后台管理模块前台用户模块为消费者提供了用户注册、用户登录、图书分类查询、购物车、订单详细查询、商品评价、在线支付一体式的购物模式后台管理模块包括图书管理、分类管理、订单管理三大部分通过前台模块和后台模块可以实现整体网站的动态浏览和购物的流程通过对图书购物系统的设计、编码、调试系统具有易维护、易扩展、操作简单等特点使系统具有良好的运行性能易可通过改进,在原有的基础上进行二次开发扩充系统的功能关键字B/S;SSH;MVC;互联网;图书购物系统AbstractWiththepowerfultechnologyoftheInternetonlineshoppingtrendsconstantlyrising.Intodayssocietythebusyworkthatpeopledonothaveenoughtimetogotothebookstoretopickthebookstheywant.Sotorespectpeoplebuybookscausedalittletrouble.Sobooksonlineshoppingmallhasbecomeanewgenerationofpeoplebuybooksafastermoreconvenientmoreenjoyableway.Throughresearchandanalysisnetworkconsumergoodshaslearnedmoreandmorepeopleofallagesuseofthenetworkmerchandisingpipesystemsbecomeincreasinglyprominent.Designanddevelopmentofnetwork-basedmerchandisingsystemforcompletelarge-scalebusinesssitedevelopmentaccumulatedalotofexperienceandimproveChinase-commerceactivitiesbringhugeeconomicbenefitsforthecommunitytoimprovetheproductivityofsociety.SystemisbasedonB/SModeInternetnetworktechnicallytheuseofJavaprogrammingusingSSHpopularframeworktechnologytoMVCdesign-oriented.Itimprovesoverallsystemscalabilitymaintainabilitycodereuse.Functionallytheusermoduleisdividedintofrontbackofficemanagementmodule.FrontUserModuleprovidesconsumerswithuserregistrationuserloginbooksclassifiedinformationshoppingcartorderadetailedinquiryproductreviewsonlinepayment-in-oneshoppingpatterns.Adminmoduleinclude:librarymanagementcategorymanagementordermanagementthreeparts.Foregroundandbackgroundmodulebymoduleenablesdynamicbrowsingandshoppingthewholewebsiteprocess.Throughthebookshoppingsystemdesigncodingdebugging.Systemsareeasytomaintaineasytoexpandoperateandsimple.Thesystemhasgoodoperatingperformance.Easycanbeimprovedsecondarydevelopmentbasedontheoriginal.Extensionofthesystem.Keywords:B/S;SSH;MVC;Internet;BooksShoppingSystem目录TOC\o1-3\h\z\u1绪论
11.1课题背景、目的及意义
11.
1.1课题背景
11.
1.2课题目的和意义
21.2国内外研究现状22技术简介
42.1前台技术
42.
1.1JQuery
42.
1.2CSS
42.
1.3JSP
52.2后台技术
52.
2.1SpringMVC
62.
2.2Spring
62.
2.3Hibernate
62.
2.4Maven
62.
2.5MySQL
72.
2.6MVC
72.
2.7易宝支付83系统分析
93.1系统设计目标
93.2可行性分析
93.
2.1社会可行性
93.
2.2技术可行性
93.
2.3操作可行性
93.3系统开发平台及运行环境
103.
3.1系统开发平台
103.
3.2运行环境
103.4需求分析
113.
4.1系统功能模块概述和分析
113.
4.2系统功能模块设计
113.
4.3数据库分析134前台设计与实现
144.1流程设计
144.2数据库物理模型
154.3网站主页
164.
3.1用户注册
164.
3.2用户登录
184.
3.3修改当前用户密码
184.
3.4退出
194.4图书浏览模块
194.
4.1图书列表
194.
4.2图书详细列表
204.5购物车
204.
5.1添加商品到购物车
214.
5.2结算
214.6订单模块
224.
6.1生成订单
224.
6.2支付页面
224.
6.3订单列表
234.
6.4订单详细页面
234.
6.5商品评价245后台设计与实现
255.1登录模块
255.2后台主页
255.3分类管理
265.
3.1分类列表
265.
3.2添加分类
275.
3.3修改分类
275.
3.4删除分类
285.4图书管理
295.
4.1新增书籍
295.
4.2图书修改
305.5订单管理
305.
5.1订单列表
305.
5.2订单详细316系统测试
336.1测试的目的与目标
336.2测试方法
336.
2.1黑盒测试
336.
2.2白盒测试
346.
2.3单元测试
356.3测试用例
356.
3.1黑盒测试用例
356.
3.2单元测试用例
366.4测试结果37结论38致谢39参考文献40附录A英文原文41附录B汉语翻译48附录C程序代码531绪论
1.1课题背景、目的及意义
1.
1.1课题背景计算机网络时代的到来带给了社会巨大的变化,从过去只面向专业部门和特殊部门的信息已经扩展到人们日常生活中的各个角落,它为世界和人类的发张和进步做出了无可估量的贡献特别是在二十世纪九十年代,美国政府提出的“信息高速公路”计划并成功付诸于实施以后,网络不断的从人们极少了解的领域来到了全世界人们的日常生活当中在互联网潮流时代,网络是新时代潮流的宠儿在网络作用域中,电子商务则是一个热潮电子商务一个最基本体现就是网上购物消费,从一定程度和意义上讲它就是网上超市,也就是一种网上销售和消费“网”字意味着它具有信息时代的快捷方便等特征和遍布全世界的意义事实上电子商务的出现,给消费者的地位、消费观念带来了翻天覆地的变化自从中国加入WTO世界贸易组织后,越来越多的传统企业更进一步意识到企业经济发展的必然趋势是以网络化、全球化为主要特征必然企业实行电子商务成为企业发展与国际贸易接轨的必要条件和先决条件在国家发展的多年来国家十分重视企业信息化发展和建设,并做了大量工作,但目前企业加入信息化建设的比例还不到20%所以电子购物网站的实现是一个非常紧迫的需要现代的网络,已经经历过迅速发展和稳定的时期,它的技术也已经相当成熟因此,依靠网络编程技术来架设一个网站会在很多方面得到相关的支持和帮助作为信息传输的媒介,它的高速运转、海量数据、安全、可靠性满足了现代人们对于需求的渴望现在的计算机网络对于人们来说,已经可以不再是单单是为了获得信息为目的,更反应了现代人们生活的理念和追求,更为重要的是成为企业与政府传达思想和介绍企业文化的平台因为现代社会和发张愈发的依赖于网络传输,特别是“万维网”,为企业或政府量身设计开发一个网站被默认为一件必不可少的事情互联网以前所未有的速度发展,成为与报纸、广播、电视相并列的第四媒体,同时以其便捷的传输模式改变着人们的消费方式
1.
1.2课题目的和意义网上销售为人们提供了更广阔的购物环境人们可以不再受时间的束缚,不受空间的限制,不受传统购物带来的的诸多问题,可以随时随地轻松的在网上购物交易更广阔的交易市场在互联网时代这个世界将会变得很小,一个商家可以面对全球的消费者,当然一个消费者可以在全球的任何网上商店进行购物更快速的商品流通和低廉的商品价格电子商务减少了商品流通的中间环节,节省了大量的人力和物力的开支,从而也大大降低了商品流通和交易的资金成本更符合当今网络时代的要求如今的人们越来越追求时尚、讲究个性,注重购物的环境和购物的时间,网上购物,更能体现购物带来的享受感和个性化的购物过程
1.2国内外研究现状据调研数据显示,希望通过电子商务http://www.ibicn.com/\t_blank购买的消费者比例,大部分国家都超过8成有电子商务渠道购物3年以上经验者,日本、美国均超过6成,中国达到5成3个国家的电子商务市场都具有巨大的潜能2011年,美国网络购物人数是
1.41亿人,电子商务使用率
71.2%根据comScore的调查,2011年美国电子商务市场规模为1664亿美元美国电子商务市场,虽然2009年受金融危机影响,首次出现负增长,但是2010年便扭转颓势达到历史最高销售额,目前呈现强劲增长态势2013年中国网络零售市场交易规模达18851亿元,较2012年增长
42.8%,占社会消费品零售http://www.ocn.com.cn/2012/1223lingshou.shtml总额的
8.04%2013年中国网络购物市场之所以依然保持较高的增长,主要归结于以下原因一是伴随网购市场日益规范,越来越多的人加入到网购队伍当中;二是电商企业在一二线城市发展稳定后,逐渐向三四线城市延伸,推动了网购市场扩大;三是2013年移动购物成为一股力量,推动网购的进一步发展2014年中国网上零售市场交易规模达
28637.2亿元,增速为45%,继续保持高增长的态势2014年,网上零售市场增长迅猛,渗透率稳步提升,已成为国民经济重要组成部分,四季度“双十一”、“双十二”促销季再次引爆网购热潮,网上零售业务对中国整个零售产业的影响愈加深刻随着阿里巴巴、京东等电商巨头相继上市,网上零售市场格局逐渐清晰,淘宝、天猫、京东位居第一集团,无论是市场份额、业务创新,还是品类丰富度,都处于领先地位其他电商企业则努力在细分市场稳固地位,在品类、模式等方面寻求突破目前网上零售http://www.ocn.com.cn/2012/1223lingshou.shtml市场已基本形成“双超多强”的格局,并将长期保持目前的竞争态势 2014年移动网购呈爆发式增长态势,2014年移动网购交易规模达
8616.6亿元,增速达
229.3%,消费者向移动端的迁移和渗透是支撑移动网购高速发展的主因 在未来社会发展几年,随着传统企业大规模进军电商行业,中国西部省份及中东部三四线城市的网购潜力也将得到进一步开发和扩张,加上移动互联网的发展促使移动网购日益便捷,中国网络购物市场整体还将保持较快增长速度电子商务基本情况
1、电子商务的使用频率每周使用电子商务一次以上的消费者比例,中国
42.1%、美国
17.8%、日本
7.4%中国消费者似乎对于使用电子商务交易更加热衷美国消费者每个月使用2~3次电子商务进行交易的比例明显居多,占比为
26.9%,其次为2~3个月才使用一次的人,占比为
20.8%中国每周使用2~3次的消费者,年龄层次集中在20岁~40岁之间在日本,每个月使用一次电子商务进行交易的比例最大,占
27.9%,而每个月使用2~3次的人和2~3个月才使用一次的人的比例,分别是
25.6%、
23.3%,与每个月使用一次的消费者占比相距不大这3种消费者所占的比例达到全体的75%从每周使用1~2次以上电子商务进行交易的比例每周使用3~5次与每周使用1~2次的占比之和来看,中国比美国和日本高很多,达到
42.1%
2、电子商务热门类目书籍杂志不包括电子书中,商务类、漫画、文学、生活类的购买比例较多衣服和装饰品领域,都是男装、女装、时尚的小商品占比较高热门交易类目方面,3个国家的书籍杂志不包括电子书、衣服和装饰品都占据前3位2技术简介本项目采用J2EE企业级编程,采用MVC设计思想,集合SpringMVC、Spring、Hibernate、JQuery、CSS、Maven、JSP、第三方支付平台为技术实现以Eclipse为开发平台,数据库采用MySql,服务器采用Tomcat7部署发布
2.1前台技术前台主要应用JQuery框架,利用CSS层叠样式表进行修饰,视图文件应用Jsp来实现动态页面
2.
1.1JQueryJQuery是继prototypehttp://baike.baidu.com/view/
1217697.htm\t_blank之后又一个优秀的Javascripthttp://baike.baidu.com/view/
16168.htm\t_blank库它是轻量级的js库,它兼容CSS3http://baike.baidu.com/view/
1713027.htm\t_blank,同时还兼容许多浏览器(IE
6.0+FF
1.5+Safari
2.0+Opera
9.0+),jQuery
2.0及后续版本将不再继续支持IE6/7/8浏览器jQuery能够使用户能更方便、简单地处理HTMLhttp://baike.baidu.com/view/
692.htm\t_blank(标准通用标记语言http://baike.baidu.com/view/
5286041.htm\t_blank下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件http://baike.baidu.com/view/
18979.htm\t_blank可供选择jQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需要定义id即可jQuery是免费、开源的,使用MIT许可协议jQuery的语法设计可以使开发者更加便捷,例如操作文档http://baike.baidu.com/view/
55621.htm\t_blank对象、选择DOMhttp://baike.baidu.com/view/
14806.htm\t_blank元素、制作动画效果、事件处理、使用Ajaxhttp://baike.baidu.com/view/
1641.htm\t_blank以及其他功能除此以外,jQuery提供API让开发者编写插件其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页
2.
1.2CSS级联样式表是一种用来表现HTMLhttp://baike.baidu.com/view/
692.htm\t_blank(标准通用标记语言http://baike.baidu.com/view/
5286041.htm\t_blank的一个应用)或XMLhttp://baike.baidu.com/view/
63.htm\t_blank(标准通用标记语言的一个子集)等文件样式的计算机语言CSS目前最新版本为CSS3http://baike.baidu.com/view/
1713027.htm\t_blank,是能够真正做到网页http://baike.baidu.com/view/
828.htm\t_blank表现与内容分离的一种样式设计语言相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计http://baike.baidu.com/view/
426920.htm\t_blank,是目前基于文本展示最优秀的表现设计语言CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性
2.
1.3JSPJSP全名为JavaServerPages,中文名叫java服务器页面,其根本是一个简化的Servlethttp://baike.baidu.com/view/
25169.htm\t_blank设计,它是由SunMicrosystemshttp://baike.baidu.com/view/
1061350.htm\t_blank公司倡导、许多公司参与一起建立的一种动态网页http://baike.baidu.com/view/
348756.htm\t_blank技术标准JSP技术有点类似ASP技术,它是在传统的网页http://baike.baidu.com/view/
828.htm\t_blankHTML(标准通用标记语言http://baike.baidu.com/view/
5286041.htm\t_blank的子集)文件*.htm*.htmlhttp://baike.baidu.com/view/
692.htm\t_blank中插入Java程序段http://baike.baidu.com/view/
1005329.htm\t_blankScriptlet和JSP标记tag,从而形成JSP文件,后缀名为*.jsp用JSP开发的Web应用是跨平台http://baike.baidu.com/view/
469855.htm\t_blank的,既能在Linux下运行,也能在其他操作系统上运行它实现了Html语法中的java扩张(以%%形式)JSP与Servlet一样,是在服务器端执行的通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易JSPJavaServerPages是一种动态页面技术,它的主要目的是将表示逻辑从Servlethttp://baike.baidu.com/view/
25169.htm\t_blank中分离出来JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成JSP具备了Javahttp://baike.baidu.com/subview/29/
12654100.htm\t_blank技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点
2.2后台技术后台主要以MVC设计思想,应用SpringMVC、Spring、Hibernate三大框架整合,以Maven最为项目管理工具搭建系统环境,同时采用C3P0连接池、EhCache二级缓存来提升系统性能,利用Log4J进行日志文件操作,数据库采用Mysql进行数据操作第三方支付接口易宝支付进行支付操作
2.
2.1SpringMVCSpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面Spring框架提供了构建Web应用程序的全功能MVC模块它是一个典型的教科书式的mvc构架,而不像strutshttp://baike.baidu.com/view/
25603.htm\t_blank等都是变种或者不是完全基于mvc系统的框架,它和tapestryhttp://baike.baidu.com/view/
66879.htm\t_blank一样是一个纯正的servlet系统,这也是它和tapestryhttp://baike.baidu.com/subview/66879/
9372794.htm\t_blank相比struts所没有的优势而且框架本身有代码,而且看起来容易理解
2.
2.2SpringSpring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnsonhttp://baike.baidu.com/view/
2192255.htm\t_blank 在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中阐述的部分理念和原型衍生而来它是为了解决企业应用开发的复杂性而创建的框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EEhttp://baike.baidu.com/view/
1507.htm\t_blank 应用程序开发提供集成的框架Spring使用基本的JavaBeanhttp://baike.baidu.com/view/
28155.htm\t_blank来完成以前只可能由EJB完成的事情然而,Spring的用途不仅限于服务器http://baike.baidu.com/view/
899.htm\t_blank端的开发从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益Spring的核心是控制反转http://baike.baidu.com/view/
1486379.htm\t_blank(IoChttp://baike.baidu.com/view/
146665.htm\t_blank)和面向切面(AOPhttp://baike.baidu.com/view/
73626.htm\t_blank)简单来说,Spring是一个分层的JavaSE/EEfull-stack一站式 轻量级http://baike.baidu.com/subview/1318763/
16205192.htm\t_blank开源框架
2.
2.3HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EEhttp://baike.baidu.com/view/
1507.htm\t_blank架构中取代CMP,完成数据持久化http://baike.baidu.com/view/
4549557.htm\t_blank的重任
2.
2.4MavenMaven是基于项目对象模型POMhttp://baike.baidu.com/view/
175698.htm\t_blank,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具http://baike.baidu.com/view/
3169783.htm\t_blankMaven除了以程序构建能力为特色之外,还提供高级项目管理工具由于Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目由于Maven的面向项目的方法,许多ApacheJakarta项目发文时使用Maven,而且公司项目采用Maven的比例在持续增长Maven这个单词来自于意第绪语,意为知识的积累,最早在JakataTurbine项目中它开始被用来试图简化构建过程当时有很多项目,它们的Antbuild文件仅有细微的差别,而JAR文件都由CVS来维护于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式
2.
2.5MySQLMySQL是一个关系型数据库管理系统http://baike.baidu.com/view/
1450387.htm\t_blank,由瑞典MySQLAB公司开发,目前属于 Oraclehttp://baike.baidu.com/view/
15020.htm\t_blank 公司MySQL最流行的关系型数据库管理系统http://baike.baidu.com/view/
1450387.htm\t_blank,在WEB应用方面MySQL是最好的RDBMSRelationalDatabaseManagementSystem,关系数据库管理系统应用软件之一MySQL是一种关联数据库管理系统http://baike.baidu.com/view/
68446.htm\t_blank,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言MySQL软件采用了双授权政策(本词条授权政策),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码http://baike.baidu.com/view/
394804.htm\t_blank这一特点,一般中小型网站的开发都选择MySQL作为网站数据库由于其社区版的性能卓越,搭配 PHPhttp://baike.baidu.com/view/
99.htm\t_blank 和 Apachehttp://baike.baidu.com/view/
28283.htm\t_blank 可组成良好的开发环境
2.
2.6MVCMVC即模型-视图-控制器,是XeroxPARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎MVC是一种设计模式,它强制性的使应用程序的输入、处理和输出分开使用MVC应用程序被分成三个核心部件模型、视图、控制器它们各自处理自己的任务.
(1)模型模型表示企业数据和业务规则在MVC的三个部件中,模型拥有最多的处理任务例如它可能用象EJBs和ColdFusionComponents这样的构件对象来处理数据库被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性
(2)视图视图是用户看到并与之交互的界面对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括MacromediaFlash和象XHTML,XML/XSL,WML等一些标识语言和Webservices.如何处理应用程序的界面变得越来越有挑战性MVC一个大的好处是它能为你的应用程序处理很多不同的视图在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式
(3)控制器控制器接受用户的输入并调用模型和视图去完成用户的需求所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何的处理它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据综上所述,MVC的处理过程是首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户
2.
2.7易宝支付第三方支付平台采用易宝支付易宝作为互联网金融专家,2005年便首创了行业支付模式,陆续推出了网上在线支付、非银行卡支付、信用卡无卡支付、POS支付、基金易购通、一键支付等创新产品,先后为数字娱乐、航空旅游、电信移动、行政教育、保险、基金、快消连锁、电商物流等众多行业提供了量身定制的行业解决方案,为产业转型及行业变革做出了积极贡献易宝在航空旅游、数字娱乐、行政教育等多个领域保持领先地位2011年5月,易宝获得首批央行颁发的支付牌照2012年3月,易宝获得证监会颁发的基金销售支付结算许可证2013年10月,易宝支付获得国家外汇管理局批准的跨境支付业务许可证3系统分析
3.1系统设计目标系统提供图书的在线浏览、购物车、支付的一体式方式以满足大部分消费者的用户需求本着用户体验度为宗旨系统设计严密,实现用户操作简单,精确的找到自己想要的商品在管理人员方面,同时满足后台管理人员进行图书信息、图书分类信息、订单的ARUD等操作
3.2可行性分析
3.
2.1社会可行性随着互联网时代的到来,人们的生活越来越离不开网络生活,网络生活给人们的现实生活增添了许多便利,例如现今的网络购物,它的到来满足了不同年龄段人们的需要,本图书购物网站的设计可解决人们不需要去书店苦苦的去寻找自己想到的书只需要通过精确搜索即可找到你自己想到的图书本系统将会受到人们的欢迎
3.
2.2技术可行性本系统采用的是J2SE企业级编程,整合SpringMVC、Spring、Hibernate整合开发数据库采用MySQL
5.0,Windows7操作系统,服务器采用Tomcat7进行部署发布硬件方面内存要求4G以上,硬盘要求500G以上,从而可以达到服务器性能的最好体现,以及达到网站整体运行的正常指标
3.
2.3操作可行性界面设计时充分考虑到消费者和管理人员操作习惯,系统操作流程简单、易理解能够让消费者很容易的进行相关在线浏览、购物后台管理模块界面简洁分层模块清晰,管理人员可以进行无需指导就能进行相关工作由于系统采用MVC设计思想整合SSH框架技术使得系统易维护、可扩展、低耦合
3.3系统开发平台及运行环境
3.
3.1系统开发平台Eclipse是一个开放源代码http://baike.baidu.com/subview/60376/
5122159.htm\t_blank的、基于Javahttp://baike.baidu.com/subview/29/
12654100.htm\t_blank的可扩展开发平台就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境Eclipse还提供一个标准的插件集,可用于就需求安装相应的插件,简化开发Eclipse具有以下特点1.在大部分平台上提供一致的特性集不论使用什么平台,Eclipse就像为该平台建立的应用程序一样当下载Eclipse时,可以选择下载满足自己需要平台的Eclipse,对每个平台它都有单独的图工具包这提供了接近本土的外观,以及更好的性能2.不仅支持Java或任意单一的语言,插件体系结构使Eclipse支持许多语言和模型3.开源且免费,但完全得到支持Eclipse平台和它的许多免费插件让使用很容易地下载他们所需要的东西另外,通过尝试新的语言和工具,大量的免费插件提供一种低风险的方式来扩展视野4.真正地可扩展并可配置Eclipse插件的页面列出了825个提供产品,它是平台可扩展性的证据5.行业力量Eclipse这样的高级图形用户界面来开发软件也是极好的,由于它去掉了许多重复琐碎的工作,使自己可以有更多的时间考虑实际的代码和重要的算法
3.
3.2运行环境操作系统WindowsXP以上版本服务器软件Tomcat
7.0以上版本数据库Mysql
5.0以上版本浏览器IE、GoogleChrome、以及以火狐内核的其它浏览器
3.4需求分析
3.
4.1系统功能模块概述和分析网站设计采用集成两个子系统的设计,包括购物系统和后台管理系统购物系统主要功能如下
(1)前台(客户购买)部分
①用户管理注册会员、登录、激活、注销、修改密码;
②图书分类显示简洁、清晰显示图示的分类结构;
③检索支持用户按商品名称模糊查询,按出版社、作者、名称进行高级组合查询;
④购物车采用数据库保存购物车信息方式,永久保存购物车信息,可对购物车信息进行修改、添加功能;
⑤订单管理通过订单管理可实时查询当前订单的状态,以及历史订单对于未付款状态的订单,用户可进行付款操作或者取消操作;
⑥商品评价对于处于订单交易成功的订单可进行商品评价;
(2)后台(管理员管理)部分
①管理员管理员登录;
②分类管理可对图书的分类结构进行调整、以及添加分类等级;
③图书管理可对图书进行内容的修改、添加新书籍、删除书籍等操作;
④订单管理对所有订单可按不同状态进行查询,以及进行订单状态的修改;
3.
4.2系统功能模块设计根据系统功能分析,可以画出系统的功能模块图,如图
3.1所示#0;叮叮图书购物网站购物子系统后台管理系统用户信息模块图书分类模块图书检索模块购物车模块订单管理模块图书分类管理模块图书信息管理模块订单管理模块用户注册用户登录修改密码账户激活删除分类根据分类查询图书显示所有分类结构修改图书信息按书名模糊查询按书名作者出版社高级查询选定将要支付商品数量名称提交订单取消订单商品评价修改分类信息支付订单添加分类信息添加图书删除图书按订单状态查询取消订单确定发货
3.1系统功能模块描述
3.
4.3数据库分析信息系统的主要任务是通过大量数据获得管理所需要的信息,这就要求系统本身能够存储和管理大量的数据,而这一功能的实现必须借助大型数据库系统本系统的开发选择免费版本MySQL
5.0作为后台数据库开发工具考虑到系统性能问题,本系统将采用C3P0数据库连接池以及采用ehcache二级缓存来提升系统的整体性能4前台设计与实现
4.1流程设计在客户购物的过程中,未登录的用户只能浏览商品信息,只有登录成功的用户才能进行将商品添加到购物车、查看订单、修改订单、支付等操作,具体流程如图
4.1所示#0;#0;#0;网站入口浏览商品添加至购物车已登录会员用户登陆注册查看购物车再逛一逛提交订单付款成功支付完成继续支付订单查看YYNYNNYYNNY图
4.1购物流程图
4.2数据库物理模型系统中功能模块都有一个对应的实体,每个实体都具有一定的属性,实体之间同样存在着关联数据库系统设计中,将对象模型转换成关系模型,数据库物理模型如图
4.2所示图
4.2数据库物理模型
4.3网站主页网站主页最为消费者进入系统的入口,消费者可以在未登陆状态下进行商品的浏览以及商品的查询如果消费者不是本站的会员,可以在主页点击注册链接进行会员注册除此之外消费者在未登录状态不能进行其他的操作,如图
4.3所示网站主页采用动态iframe框架技术,集成上、左、右三个页面进行数据的加载及展现如图
4.3所示图
4.3购物商城主页
4.
3.1用户注册注册用户是构成网站主体的一个重要组成部分,网站设置注册用户的目的之一在于方便网站信息的管理用户注册为会员后可以订购图书并享受折扣待遇对于没有网站账号的顾客,如果需要进行购物操作,需要注册新的会员,从而用户才能实现购买、将商品添加到购物车、订单管理等功能,可以点击主页的注册链接进行注册,注册页面如下图
4.4所示图
4.4用户注册页面注册页面采用前端数据校验功能、具体要求如下
1.表单校验注册页面使用JQuery对用户输入的数据进行校验⑴用户名不能为空、长度必须在3-20之间且采用ajax进行数据实时查询校验,不能是已经注册过的用户名;⑵登录密码不能为空、长度必须在3-20之间;⑶确认密码不能为空、两次密码必须一致;⑷Email不能为空、必须是正确的Email格式且采用ajax进行数据实时查询校验,不能是注册过的Email;⑸验证码非空,并且采用ajax与保存在session中的验证码进行校验;
2.账号激活当用户注册成功后还需要激活成功后才能登录在注册成功后,系统给用户的邮箱发送一份激活邮件当用户登录自己的邮箱后,在激活邮件中点击激活链接完成激活后,才算最终完成了注册
4.
3.2用户登录在首页点击“登录”链接就可以来到登录页面,如下图
4.5所示图
4.5登录页面
1.表单校验⑴用户名不能为空、长度必须在20-15之间;⑵密码不能为空、长度必须在2-15之间;⑶验证码非空,并且采用ajax与保存在session中的验证码进行校验,在点击登录之后进入服务器端,服务器端还会进行后台校验保证反正js恶性攻击等
2.登录成功用户登录成功后,会回到首页这时在首页会显示当前用户的名称,以及“我的购物车”、“我的订单”、“修改密码”、“退出链接”也就是说,这几个功能只能登录用户才能使用,而游客是无法使用的
4.
3.3修改当前用户密码用户在登录成功后,点击修改密码链接就会到达修改密码页面,如下图
4.6所示图
4.6修改密码
1.表单校验⑴密码不能为空,长度必须在2~15之间;⑵新密码不能为空,长度必须在2~15之间;⑶验证码非空,并且采用ajax与保存在session中的验证码进行校验;
4.
3.4退出当用户登录后,点击退出链接可以完成退出退出成功后会到达登录页面
4.4图书浏览模块
4.
4.1图书列表消费者可以通过左边分类进行范围缩小查询,也可通过搜索框进行图书模糊查询,还有课通过高级查询,按书名、作者、出版社进行相关的组合查询如图
4.7所示图
4.7图书搜素
4.
4.2图书详细列表点击商品进入商品的详细页面和商品评价等信息,同时也可以输入自己想买商品的数量,并进行点击购买按钮,如下图
4.8所示图
4.8图书详情页面
4.5购物车购物车使用数据库来保存数据,不是通过session或者cookie形式来保存,无论用户什么时候都可以看到购物车信息
4.
5.1添加商品到购物车商品添加至购物车当中,消费者可以在购物车对选中的商品进行修改数量以及将商品移除至购物车,如图
4.9所示图
4.9购物车
4.
5.2结算提供批量操作,可批量结算商品,当批量结算后,将参与结算的商品移除购物车,采用物理删除的形式,当点结算时候,将跳转到填写收货地址页面然后进行你给提交订单,添加到订单,如图
4.10所示图
4.10结算
4.6订单模块订单模块包括订单信息的查询、订单信息的修改,以及商品评价功能提供用户进行订单相关操作
4.
6.1生成订单消费者填写地址并点击提交订单,即生成订单,在生成订单之时,可直接进行支付操作,可以不立即进行支付操作,再次操作可在订单列表中进行支付,如图
4.11所示图
4.11生成订单页面
4.
6.2支付页面支付采用第三方支付平台(易宝支付),银行支持中国建设银行、中国农业银行、交通银行等大型银行如点击下一步将跳往易宝支付,易宝支付接收到请求记录订单信息,将跳转银行页面,如图
4.12所示图
4.12支付方式页面
4.
6.3订单列表订单分为5中状态,即等待付款,待发货,已发货,交易成功,取消状态,生成订单初始状态为等待付款状态,消费者可进行继续支付或者取消订单操作,如图
4.13所示图
4.13订单列表
4.
6.4订单详细页面在订单列表页面中,点击某个订单的查看、取消、确认收货都会到达订单详细页面其中点击查看到达订单详细页面后没有按钮;点击取消和到达订单详细页面有取消按钮按钮;点击确认收货按钮到达订单详细页面有确认收货按钮,如下图
4.14所示图
4.14订单详细
4.
6.5商品评价对于订单状态为交易成功的订单,消费者可对订单中订单条目进行评价,如图
4.15所示图
4.15商品评价页面5后台设计与实现后台管理系统为前台页面内容提供支撑,分为分类管理、图书管理、订单管理三个模块,通过后台管理系统即可完成对内容的更新以及订单等相关的管理工作
5.1登录模块在登陆操作中,登录账号采用cookie形式进行浏览器保存,保存时长为10天,页面如图
5.1所示图
5.1管理员登录页面
5.2后台主页主页默认显示分类管理模块内容,主页上显示分类管理、图书管理、订单管理三个功能点入口,如图
5.2所示图
5.2后台主页
5.3分类管理分类管理提供管理员对以及分类进行统一管理,包括添加分类、删除分类、修改分类
5.
3.1分类列表分类管理提供一级分类的增、删、改功能,删除功能采用再次确定提示来提示后台管理人员是否确定删除,此删除是物理删除,同时将删除分类下的所有的图书,以及图书的所有的评论信息,如图
5.3所示图
5.3分类列表
5.
3.2添加分类添加分类信息,填写分类名称完成后当光标失焦采用ajax去实时查询是否存在此分类名称,保证分类信息唯一性,如图
5.4所示图
5.4添加一级分类在一级分类模块中选择添加二级分类,进入二级分类页面,一级分类名称只读,如图
5.5所示图
5.5添加二级分类
5.
3.3修改分类分类管理中提供对分类信息进行修改的功能,同样支持分类名称校验的功能,保证分类名称的唯一性,如图
5.6和
5.7所示图
5.6修改一级分类图
5.7修改二级分类
5.
3.4删除分类在分类删除模块中采用级联删除方式,例如删除一级分类,将删除二级分类以及二级分类下的所有的图书以及所有图书的评价内容为了确保后台管理员的误操作,所以采用再次提醒的方式来确定是否确定删除这个分类,如图
5.8所示图
5.8分类删除
5.4图书管理后台管理人员可对指定的图书进行修改、删除操作,同时可进行新增书籍功能,每次操作都会实时在影响前端书籍的信息
5.
4.1新增书籍新增书籍包括填写书籍相关的一系列的信息,还包括图片的上传同时也需要对图书名称唯一性进行相关的校验、约束操作,如图
5.9所示图
5.9图书新增页面
5.
4.2图书修改点击图书详细页左上方的编辑或者删除复选框可进行图书信息变为可编辑状态,同时将修改按钮和删除按钮显示出来在进行修改过程中会进行除此本书名之外的校验,保证书名的唯一性,同时删除也将会进行确认,是否要进行删除操作,防止误点击删除按钮,造成数据没法恢复,如图
5.10所示图
5.10商品修改
5.5订单管理订单管理模块是方便后台管理人员对订单的管理,提供对订单信息的查看,以及提供对订单状态的修改
5.
5.1订单列表点击“订单管理”链接会到达订单列表页面该页面会分页显示所有订单,订单列表页面上包含按状态查询的链接,分别为未付款、已付款、已发货、交易成功、已取消,管理员可以点击这几个链接按状态查询显示订单,如图
5.11所示图
5.11订单列表
5.
5.2订单详细在订单列表页面中,点击某个订单后面的查看、取消、发货链接会进入到订单详细页面订单详细页面会显示当前订单的信息,而且会根据点击的链接显示不同的按钮,如图
5.12和
5.13所示图
5.12订单详细图
5.13订单详细当订单状态为交易完成时,后台管理人员也没有权限去修改订单,只能进行查看订单详细操作,如图
5.14所示图
5.14查看订单6系统测试
6.1测试的目的与目标软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性它是软件生命周期中一项非常重要且非常复杂的工作,对软件可靠性保证具有极其重要的意义在目前形式化方法和程序正确性证明技术还无望成为实用性方法的情况下,软件测试在将来相当一段时间内仍然是软件可靠性保证的有效方法保证高效率、高质量地完成软件开发项目不足的测试势必使软件带着一些未揭露的隐藏错误投入运行,这将意味着更大的危险让用户承担
6.2测试方法软件测试对于软件开发过程中,甚至是软件在上线前对产品质量保证的最后一关也是至关重要的一关,对于不用的性能要求有着不同的测试方式,按分类分为是否关心软件内部结构和具体实现的角度划分和软件开发的过程按阶段划分两种形式常用的测试为黑盒测试、白盒测试以及单元测试
6.
2.1黑盒测试黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试黑盒测试是以用户的角度,从输入数据和输出数据的对应关系出发进行测试的,很明显,如果本身设计有问题或者说明规格有错误,用黑盒测试是发现不了的黑盒测试法注重于测试软件的功能需求,主要试图发现下列几类错误
(1)功能不正确或遗漏;
(2)界面错误;
(3)输入和输出错误;
(4)数据库访问错误;
(5)性能错误;
(6)初始化和终止错误等;从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试这样看来,完全测试是不可能的,所以自己要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等
6.
2.2白盒测试白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异白盒测试的实施步骤
1.测试计划阶段根据需求说明书,制定测试进度
2.测试设计阶段依据程序设计说明书按照一定规范化的方法进行软件结构划分和设计测试用例
3.测试执行阶段输入测试用例,得到测试结果
4.测试总结阶段对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误白盒测试的优点
(1)迫使测试人员去仔细思考软件的实现;
(2)可以检测代码中的每条分支和路径;
(3)揭示隐藏在代码中的错误;
(4)对代码的测试比较彻底;
6.
2.3单元测试单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等总的来说,单元就是人为规定的最小的被测功能模块单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试
6.3测试用例本设计测试采用黑盒测试以及单元测试,通过测试可以将bug数降到最低,以及使程序能够稳定、高效的运行
6.
3.1黑盒测试用例系统主要针对比较重要的模块进行功能测试,如表
6.1所示表
6.1登入系统测试用例测试内容操作描述测试数据期望结果实际结果测试状态注册发送邮件用户填写正确邮箱,点击发送邮件S888X999@qq.com邮箱收到邮件邮箱收到邮件与期望结果相同级联删除分类信息点击一级分类按钮,删除本分类点击删除HTML一级分类分类下的所有的二级分类包括图书和评价全部级联删除分类下的所有的二级分类包括图书和评价全部级联删除与期望结果相同图片上传大小限制添加图书,选择本地图片,点击上传按钮导入本地一张大于80kb的图片上传失败,跳转到错误页上传失败,跳转到错误页与期望结果相同商品支付用户点击选定的商品进行支付选定待付款订单进行支付付款成功,商家收到付款金额,并且订单状态变为待发货付款成功,商家收到付款金额,并且订单状态变为待付款与期望结果相同
6.
3.2单元测试用例本系统主要针对开发环境搭建进行部分单元测试,保证开发环境的正确、稳定、规范,部分程序如下/***测试spring和hibernate集成注入sessionFactory***/@TestpublicvoidtestSessionFactory{ApplicationContextapplicationContext=newClassPathXmlApplicationContextclasspath:applicationContext.xml;SessionFactorysessionFactory=SessionFactoryapplicationContext.getBeansessionFactory;Assert.assertNotNullsessionFactory;}/***测试事务**/@TestpublicvoidtestTranstration{ApplicationContextapplicationContext=newClassPathXmlApplicationContextclasspath:applicationContext.xml;StudentControllerstudentController=StudentControllerapplicationContext.getBeanstudentController;Assert.assertNotNullstudentController;Studentstudent=newStudent;student.setUsername123;Stringresult=studentController.saveStudentstudent;Assert.assertEqualsresultsuccess;}通过对Spring与Hibernate集成测单元测试以及事务的测试,达到预期的效果能够正常的工作
6.4测试结果通过对系统的黑盒测试和单元测试,在黑盒测试中遇到一些bug,通过对程序代码的调试以及对代码进行重构,消除了测试中存在的一些问题,使功能运转较为正常,在系统高并发状态时,通过消费者不同的功能操作,可能会出现别的问题,系统功能稳定性还有待完善,在单元测试当中,可以对部分功能进行最小部分的测试,本系统主要针对框架集成进行测试,为系统以后集成工作提供保证最终测试结果初步满足期望要求和效果对于不断的系统功能的开发,还有待更全面的测试部分功能的效果,以及运行状态争取将系统的运行性能达到高速、稳定的状态结论前端购物系统经测试,系统已经能够较稳定的运行,在登录注册、图书浏览、图书查询、订单查询,购物车管理,订单管理功能模块都能达到预期的效果,在操作方面,操作方法简单,流程清晰,消费者能够快速上手,在高并发的环境下,系统的性能还是有待后续进行性能优化,以及达到更高的性能要求后台管理系统经测试,系统初步可以较稳定的运行,在图书分类管理、图书管理、订单管理等功能模块都能达到预期的效果,经管理员进行对前端数据的相关操作,系统能够准确的进行数据操作,实时的进行前端数据的展现系统在功能方面还有许多的不足,还有待以后能够进行功能的扩展,以及更高强度的测试,这样系统才能更稳定、安全的进行线上操作,并且能够进行更多功能的操作致谢经过一学期的学习和忙碌,本次毕业设计已经接近制作的尾声,作为一个缺乏实战开发的自己来说,由于缺少设计、动手制作的经验,难免有许多的疏漏,会有很多考虑不周全的地方,如果没有导师长期的督促指导帮助,以及身边一起努力工作的同学们的支持,想要顺利完成这个毕业设计还很难想象的从毕设开题到开始毕设、完成毕设,感谢导师和检查组的帮助和指导通过几个月毕设设计,使自己更加的独立去完成一项任务,能够克服各种毕设当中遇到的问题,并通过自己的思考、努力,还有老师和同学们的帮助,使自己的毕业设计进行的更加顺利,虽然几个月的毕设设计很煎熬,但是带给自己不一样的感受,这种感受和体验对于自己以后无论是职业生涯还是人生道路,都是一种磨练这次的毕设完成,代表自己的大学画完了一个圆满的句号,大学的时光带给自己的不管是知识的学习,还是自己踏入社会的指导老师,从大学四年当中,自己知道了怎么去为人处世,怎么去做好自己的工作内容感谢大学带给自己的一切参考文献
[1]李兴华.javaweb开发实战经典[M].清华大学出版社,
2010.
[2]耿渊,张卫滨,Spring实战[M].第三版.人民邮电出版社,
2013.
[3]杨春花,彭永康,俞黎敏.hibernate实战[M].第二版.人民邮电出版社,
2008.
[4]拉德.深入解析SpringMVC与WebFlow[M].人民邮电出版社,
2008.
[5]唐汉明,翟振兴,关宝军,王洪权,黄潇.深入浅出MySQL[M].人民邮电出版社,
2014.
[6]孙卫琴.基于MVC的JavaWeb设计与开发[M].电子工业出版社,
2004.
[7]BearBibeault,YehudaKatz.jQuery实战[M].人民邮电出版,
2010.
[8]李峰,晁阳.JavaScript开发技术详解[M].清华大学出版社,
2009.
[9]Michaelkofler.MySQL5权威指南[M].人民邮电出版社,
2006.
[10]曾顺.精通CSS+DIV网页样式与布局[M].人民邮电出版社,2009年.
[11]周杨.AJAX应用的典型设计模式计算机系统应用[D].
[12]Weiss,MA.数据结构与算法分析Java语言描述[M].第2版.机械工业出版社,2009年01月.
[13]MetskerSJ.Java设计模式[M].第2版.电子工业出版社,2012年09月.
[14]孙卫琴.Tomcat与JavaWeb开发技术详解[M].第2版.电子工业出版社,2009年01月.
[15]陈刚.Eclipse从入门到精通[M].北京清华大学出版社,2005年4月.
[16]清宏计算机工作室.《JSP编程技巧》.机械工业出版社,2004年5月.
[17]贺松平.基于MVC模式的B/S架构的研究及应用[D].武汉华中科技学,2006年4月.附录A英文原文THEBRIEFOFSPRINGAuthor:LaddSource:In-depthanalyticalSpringMVCandWebFlowSpringFrameworkisduetothecomplexityofsoftwaredevelopmentcreated.SpringisthebasicJavaBeanusedpreviouslycouldonlybeaccomplishedbytheEJBaccomplish.HoweverSpringisnotlimitedtotheuseofserver-sidedevelopment.MostJavaapplicationscanbenefitfromthesimplicitytestabilityandloosecouplingperspectivefromtheSpring.◆Objective:Tosolvethecomplexityofenterpriseapplicationdevelopment◆function:insteadofusingthebasicJavaBeanEJBandoffersmoreenterpriseapplications◆Range:AnyJavaapplicationSpringisalightweightInversionofControlIoCcontainerframeandaspect-orientedAOP.OriginSpringtotalkabouthistorywemustfirsttalkaboutJ2EE.J2EEapplicationsarewidelyimplementedin1999and2000whichbroughttheemergenceofthemiddlelayerofthecoreconceptsofstandardizationsuchastransactionmanagementandthelikebutinpracticedidnotobtainanabsolutesuccessbecausethedevelopmentefficiencydevelopmentdifficultyandactualperformancearedisappointing.HavebeenusedtodevelopJ2EEEJBapplicationmustknowthatthebeginningofthestudyandapplicationinEJBisveryhardallofasuddenalotofthingsarenotveryeasytounderstand.EJBstrictsuccessiontothevarioustypesofinterfacessimilarorduplicatecodeabound.TheconfigurationiscomplexandmonotonousthesameobjectusingJNDIlookupcodealsobemonotonousandboring.WhilethereissomedevelopmentworkwithxdocletappearandeasedbutthehighcostoflearningEJBandlowdevelopmentefficiencyhighconsumptionofresourceshavecauseddifficultiesintheuseofEJB.TheoriginalintentionofSpringappearsimilartosolvetheseproblems.SpringisoneofthebiggestgoalistomakeJ2EEdevelopmenteasier.MeanwhileSpringreasonwithStrutsHibernateandothersingle-frameisdifferentbecauseSpringiscommittedtoprovidingaconsistentandefficientmannerconstructtheentireapplicationandcanbesingleframeworkwiththebestcombinationofrubbingtogethertocreateacoherentsystem.SpringcanbesaidtobeabetterdevelopmentenvironmentprovidesaframeworkthatcanbePOJOPlainOldJavaObjectobjectprovidesenterprise-classservices.SpringformationoriginallyfromRodJahnsonwrittenbyaveryinfluentialbookExpertOne-on-OneJ2EEDesignandDevelopmentisinthisbookfirstappearedintheSpringofsomeofthecoreideasofthebookwaspublishedin
2002.AnotherbookExpertOne-on-OneJ2EEDevelopmentwithoutEJBfurtherelaboratedwithoutusingEJBJ2EEenterpriseapplicationdevelopmentsomedesignideasandspecificpractices.Havethetimeyoucanreadaboutindetail.Springinmind:1J2EEshouldbeeasiertostart.2usingtheinterfaceinsteadofusingtheclassisbetterprogrammingpractice.Springwillusetheinterfacecomplexityisreducedtoalmostzero.3toprovideabetterJavaBeanapplicationconfigurationframework.4moreemphasisonobject-orienteddesignratherthanexistingtechnologiessuchasJ2EE.5minimizeunnecessaryunusualcatch.6makingapplicationseasiertotest.Springgoals:1itiseasytobepleasanttouseSpring.2theapplicationcodedoesnotdependonSpringAPIs.3Springdoesnotcompetewithexistingsolutionsbutiscommittedtoblendthemtogether.Springbasiccomponents:1themostperfectlightweightcoreframework.2generictransactionmanagementabstractionlayer.3JDBCabstractionlayer.4integratedToplinkHibernateJDOandiBATISSQLMaps.5AOPfunctionality.6flexibleMVCWebapplicationframework.Advantage◆J2EEshouldbeeasiertouse.◆object-orienteddesignismoreimportantthananyimplementationtechnologysuchasJ2EE.◆orientedprogramminginterfaceratherthanonclassprogramming.Springwillusethecomplexityoftheinterfaceisreducedtozero.◆codeshouldbeeasytotest.SpringFrameworkwillhelpyoutomakethecodeeasiertotest.◆JavaBeanprovidesthebestmethodofapplicationconfiguration.◆InJavacheckedexceptionsCheckedexceptionareoverused.Frameworkshouldnotforceyoutocatchexceptionscannotberestored.BriefintroductionSpringisanopensourceframeworkwhichwascreatedbyRodJohnson.Itistoaddressthecomplexityofenterpriseapplicationdevelopmentcreated.SpringaccomplishedusingbasicJavaBeanpreviouslycouldonlybecompletedbytheEJBthing.HoweverSpringisnotlimitedtotheuseofserver-sidedevelopment.AnyJavaapplicationcanbenefitfromthesimplicitytestabilityandloosecouplingperspectivefromtheSpring.SpringisalightweightInversionofControlIoCcontainerframeandaspect-orientedAOPis.Lightweight-thesizeandpurposeoftheoverheadfromtheSpringarebothlightweight.CompleteSpringFrameworkcanbepublishedonlyinasizemorethan1MBJARfile.Springandprocessingoverheadrequiredisnegligible.InadditionSpringisnon-invasive:typicallySpringapplicationobjectdoesnotdependonaspecificclassofSpring.InversionofControl-Springreversedbyaknowncontroltechnologyforthelooselycoupled.WhenapplyingtheIoCotherobjectsthroughanobjectdependspassedinapassivewayratherthantheobjecttocreateorfindthemselvesdependentobjects.YoucanthinkofIoCandJNDIopposite-notobjecttofinddependencyfromthecontainerbutthecontainerobjectwhentheobjectisinitializedrangingrequestwilldependontheinitiativepassedtoit.AspectOriented-Springprovidesrichsupportforaspect-orientedprogrammingallowingforthedevelopmentofcohesiveapplicationsbyseparatingbusinesslogicandsystem-levelservicessuchasauditingandtransactionmanagement.Applicationobjectonlytorealizethattheyshoulddo-completethebusinesslogic-andnothingmore.Theyarenotresponsibleforothersystem-levelconcernssuchasloggingortransactionalsupport.Container-Springandmanageapplicationobjectscontainconfigurationandlifecycleinthesensethatitisacontaineryoucanconfigurehoweachofyourbeaniscreated-canbeconfiguredbasedonaprototypeyoucancreateabeanseparateinstanceoreverytimeyouneedtogenerateanewinstance-andhowtheyareinterrelated.HoweverSpringshouldnotbeconfusedwiththetraditionalheavyweightEJBcontainerswhichareoftenlargeandbulkydifficulttouse.Frame-Springcanbeasimplecomponentconfigurationcombinedintocomplexapplications.InSpringapplicationobjectsaredeclarativecombinationtypicallyinanXMLfile.Springalsoprovidesalotofbasicfunctionalitytransactionmanagementpersistenceframeworkintegrationetc.thedevelopmentoftheapplicationlogicleftyou.AllofthesefeaturesSpringallowsyoutowritecleanermoremanageableandeasiertotestthecode.TheyarealsoinavarietyofmodulesfortheSpringprovidesthebasisforsupport.ModuleSpringframeworkconsistsofsevenwell-definedmodulesIfasawholethesemodulesprovideyouwithallthenecessaryenterpriseapplicationdevelopment.ButyoudonothavetocompletetheapplicationbasedonSpringframework.Youarefreetochooseforyourapplicationmoduleandignoretherestofthemodules.AsyoucanseeallofSpringmodulesarebuiltontopofthecorecontainer.Beancontainerdefineshowtocreateconfigureandmanage-Springmoredetails.Whenyouconfigureyourapplicationyoucanpotentiallyusetheseclasses.Butasadeveloperyouaremostlikelytoaffectservicetoothermodulesinterestedinthecontainerprovided.ThesemoduleswillprovidetheframeworkforbuildingapplicationsforyousuchasAOPandpersistence.CorecontainerThisisthemostbasicpartoftheSpringFrameworkwhichprovidesadependencyinjectioncontainerfeaturestoachievethemanagementoftheBean.BasicconcepthereisBeanFactorywhichistheheartofanySpringapplications.BeanFactoryisanimplementationofthefactorymodelwhichusesIoCtoillustratetheapplicationconfigurationanddependencyseparatedfromtheactualapplicationcode.ApplicationContextmoduleSpringBeanFactorycoremodulesintoacontainersothatwhilethecontextmodulemakesitaframework.ThismoduleextendstheconceptofBeanFactoryincreasinginternationalizationnewseventsdisseminationandvalidationsupport.Inadditionthismoduleprovidesanumberofbusinessservicessuchase-mailJNDIaccessEJBintegrationremoteschedulingandtimingservices.AlsoincludedsuchasVelocityandFreeMarkerintegratedsupportfortemplateframework.SpringsAOPmoduleSpringprovidesrichsupportforaspect-orientedprogramminginitsAOPmodule.ThismoduleisthebasisfortheprogrammingsectioninSpringapplications.ToensureinteroperabilitywithotherSpringAOPframeworkSpringAOPsupportdefinedbasedAPIAOPAlliance.AOPAllianceisanopensourceprojectitsgoalistopromoteinteroperabilityanduseofAOPAOPimplementationbetweendifferentbydefiningacommonsetofinterfacesandcomponents.ByvisitingtheirsiteyoucanfindoutmoreaboutAOPAlliance.SpringsAOPmodulealsointroducesmetadataprogrammingSpring.UsingSpringsmetadatasupportyoucanaddcommentstoyoursourcecodeindicatingwhereandhowtoapplySpringsectionfunctions.JDBCabstractionandDAOmoduleUseJDBCoftenleadtoalotofduplicatecodemadetheconnectioncreateastatementtheresultsetandthenclosetheconnection.SpringsJDBCandDAOmoduletoextracttheseduplicatecodesoyoucankeepyourcodecleanandsimpledatabaseaccessandcanpreventproblemscausedbythefailuretoclosedatabaseresourcescaused.Thismoduleisalsoontheerrormessagegivenbyseveraldatabaseserverstoestablishameaningfulexceptionlayers.SoyoudonothavetotrytodecipherthemysteryofproprietarySQLerrormessages.InadditionthismodulealsousesSpringsAOPmoduleprovidestransactionmanagementservicesfortheSpringapplicationobject.Object/relationalmappingintegrationmoduleForthosewhoprefertouseobject/relationalmappingtoolratherthanthepersondirectlyusingJDBCSpringprovidesaORMmodules.SpringdoesnotattempttoimplementitsownORMsolutionbuttoprovideintegratedsolutionsforseveralpopularORMframeworksincludingHibernateJDOandiBATISSQLmapping.SpringstransactionmanagementsupportineachoftheseORMframeworksincludingJDBC.SpringsWebmoduleWebcontextmodulebuildsontheapplicationcontextmoduleprovidingacontextsuitableforWebapplications.Inadditionthismodulealsoprovidessomeservice-orientedsupport.Forexample:multipartfileuploadrequestitalsoprovidesanintegratedSpringandotherWebframeworkssuchasStrutsWebWork.SpringMVCframeworkSpringforbuildingWebapplicationsprovideafull-featuredMVCframework.AlthoughSpringcanbeeasilyintegratedwithotherMVCframeworkssuchasStrutsSpringMVCframeworkbutuseIoCcontrollogicandbusinessobjectsprovideacompleteseparation.ItalsoallowsyoutodeclarativelybindrequestparameterstoyourbusinessobjectsinadditionSpringMVCframeworkcanalsouseanyotherserviceSpringforexampleaninternationalinformationandverification.SummarySpringbringsasophisticatedJ2EEdevelopmentinthespring.AtitscoreisalightweightIoCcontaineritsgoalistoprovideacomprehensiveintegratedframeworkforJ2EEapplicationstoachieveacombinationofmultiplesub-framesintheSpringframeworkbetweenthesesub-framecanbeindependentofeachotheryoucanalsouseotherTheframeworkprogramtobereplacedSpringhopetoprovideaone-stopsolutionforenterpriseapplications.附录B汉语翻译SpringMVC简介作者拉德来源深入解析SpringMVC与WebFlowSpring框架是由于软件开发的复杂性而创建的Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情然而,Spring的用途不仅仅限于服务器端的开发从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益◆目的解决企业应用开发的复杂性◆功能使用基本的JavaBean代替EJB,并提供了更多的企业应用功能◆范围任何Java应用Spring是一个轻量级控制反转IoC和面向切面AOP的容器框架起源要谈Spring的历史,就要先谈J2EEJ2EE应用程序http://baike.baidu.com/view/
330120.htm的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望曾经使用过EJB开发J2EE应用的人,一定知道,在EJB开始的学习和应用非常的艰苦,很多东西都不能一下子就很容易的理解EJB要严格地继承各种不同类型的接口,类似的或者重复的代码大量存在而配置也是复杂和单调,同样使用JNDI进行对象查找的代码也是单调而枯燥虽然有一些开发工作随着xdoclet的出现,而有所缓解,但是学习EJB的高昂代价,和极低的开发效率,极高的资源消耗,都造成了EJB的使用困难而Spring出现的初衷就是为了解决类似的这些问题Spring的一个最大的目的就是使J2EE开发更加容易同时,Spring之所以与Struts、Hibernate等单层框架不同,是因为Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系可以说Spring是一个提供了更完善开发环境的一个框架,可以为POJOPlainOldJavaObject对象提供企业级的服务Spring的形成,最初来自RodJahnson所著的一本很有影响力的书籍《ExpertOne-on-OneJ2EEDesignandDevelopment》,就是在这本书中第一次出现了Spring的一些核心思想,该书出版于2002年另外一本书《ExpertOne-on-OneJ2EEDevelopmentwithoutEJB》,更进一步阐述了在不使用EJB开发J2EE企业级应用的一些设计思想和具体的做法有时间了可以详细的研读一下Spring的初衷
1、J2EE开始应该更加简单
2、使用接口而不是使用类,是更好的编程习惯Spring将使用接口的复杂度几乎降低到了零
3、为JavaBean提供了一个更好的应用配置框架
4、更多地强调面向对象http://baike.baidu.com/view/
125370.htm的设计,而不是现行的技术如J2EE
5、尽量减少不必要的异常捕捉
6、使应用程序更加容易测试Spring的目标
1、可以令人方便愉快的使用Spring
2、应用程序代码并不依赖于SpringAPIs
3、Spring不和现有的解决方案竞争,而是致力于将它们融合在一起Spring的基本组成
1、最完善的轻量级核心框架
2、通用的事务管理抽象层
3、JDBC抽象层
4、集成了ToplinkHibernateJDOandiBATISSQLMaps
5、AOP功能
6、灵活的MVCWeb应用框架优点◆J2EE应该更加容易使用◆面向对象的设计比任何实现技术(比如J2EE)都重要◆面向接口编程,而不是针对类编程Spring将使用接口的复杂度降低到零◆代码应该易于测试Spring框架会帮助你,使代码的测试更加简单◆JavaBean提供了应用程序配置的最好方法◆在Java中,已检查异常(Checkedexception)被过度使用框架不应该迫使你捕获不能恢复的异常简介Spring是一个开源框架,它由RodJohnsonhttp://baike.baidu.com/view/
2192255.htm创建它是为了解决企业应用开发的复杂性而创建的Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情然而,Spring的用途不仅限于服务器端的开发从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益Spring是一个轻量级的控制反转IoC和面向切面AOP的容器框架轻量——从大小与开销两方面而言Spring都是轻量的完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布并且Spring所需的处理开销也是微不足道的此外,Spring是非侵入式的典型地,Spring应用中的对象不依赖于Spring的特定类控制反转——Spring通过一种称作控制反转的技术促进了松耦合当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它面向切面——Spring提供了面向切面编程http://baike.baidu.com/view/
1865230.htm的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计和事务管理)进行内聚性的开发应用对象只实现它们应该做的——完成业务逻辑——仅此而已它们并不负责其它的系统级关注点,例如日志或事务支持容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型,你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用框架——Spring可以将简单的组件配置、组合成为复杂的应用在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码它们也为Spring中的各种模块提供了基础支持Spring框架由七个定义明确的模块组成如果作为一个整体,这些模块为你提供了开发企业应用所需的一切但你不必将应用完全基于Spring框架你可以自由地挑选适合你的应用的模块而忽略其余的模块就像你所看到的,所有的Spring模块都是在核心容器之上构建的容器定义了Bean是如何创建、配置和管理的——更多的Spring细节当你配置你的应用时,你会潜在地使用这些类但是作为一名开发者,你最可能对影响容器所提供的服务的其它模块感兴趣这些模块将会为你提供用于构建应用服务的框架,例如AOP和持久性核心容器这是Spring框架最基础的部分,它提供了依赖注入特征来实现容器对Bean的管理这里最基本的概念是BeanFactory,它是任何Spring应用的核心BeanFactory是工厂模式的一个实现,它使用IoC将应用配置和依赖说明从实际的应用代码中分离出来应用上下文模块核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架这个模块扩展了BeanFactory的概念,增加了对国际化消息、事件传播以及验证的支持另外,这个模块提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度服务也包括了对模版框架例如Velocity和FreeMarker集成的支持Spring的AOP模块Spring在它的AOP模块中提供了对面向切面编程的丰富支持这个模块是在Spring应用中实现切面编程的基础为了确保Spring与其它AOP框架的互用性,Spring的AOP支持基于AOP联盟定义的APIAOP联盟是一个开源项目,它的目标是通过定义一组共同的接口和组件来促进AOP的使用以及不同的AOP实现之间的互用性通过访问他们的站点,你可以找到关于AOP联盟的更多内容Spring的AOP模块也将元数据编程引入了Spring使用Spring的元数据支持,你可以为你的源代码增加注释,指示Spring在何处以及如何应用切面函数JDBC抽象和DAO模块使用JDBC经常导致大量的重复代码,取得连接、创建语句、处理结果集,然后关闭连接Spring的JDBC和DAO模块抽取了这些重复代码,因此你可以保持你的数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题这个模块还在几种数据库服务器给出的错误消息之上建立了一个有意义的异常层使你不用再试图破译神秘的私有的SQL错误消息另外,这个模块还使用了Spring的AOP模块为Spring应用中的对象提供了事务管理服务对象/关系映射集成模块对那些更喜欢使用对象/关系映射工具而不是直接使用JDBC的人,Spring提供了ORM模块Spring并不试图实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATISSQL映射Spring的事务管理支持这些ORM框架中的每一个也包括JDBCSpring的Web模块Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文另外,这个模块还提供了一些面向服务支持例如实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWorkSpring的MVC框架Spring为构建Web应用提供了一个功能全面的MVC框架虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC对控制逻辑和业务对象提供了完全的分离它也允许你声明性地将请求参数绑定到你的业务对象中,此外,Spring的MVC框架还可以利用Spring的任何其它服务,例如国际化信息与验证总结Spring带来了复杂的J2EE开发的春天它的核心是轻量级的IoC容器,它的目标是为J2EE应用提供了全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间可以彼此独立,也可以使用其它的框架方案加以代替,Spring希望为企业应用提供一站式的解决方案附录C程序代码packagecom.shop.order.action;importjava.io.IOException;importjava.math.BigDecimal;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjavax.annotation.Resource;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.log4j.Logger;importorg.springframework.stereotype.Controller;importorg.springframework.ui.ModelMap;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.RequestParam;importcom.shop.cart.entity.CartItem;importcom.shop.cart.service.CartService;importcom.shop.common.constant.Status;importcom.shop.common.entity.PageBean;importcom.shop.common.util.PageUtil;importcom.shop.common.util.PaymentUtil;importcom.shop.order.entity.Order;importcom.shop.order.entity.OrderItem;importcom.shop.order.service.OrderService;importcom.shop.user.entity.User;/***订单控制类**@authorfanxiaochun*@since2015年6月6日*/@Controller@RequestMappingvalue=/orderControllerpublicclassOrderController{@ResourceprivateOrderServiceorderServiceImpl;@ResourceprivateCartServicecartServceImpl;privatestaticLoggerlog=Logger.getLoggerOrderController.class;/***查询所有的订单**@paramrequest*@parammap*@paramstatus*订单状态/br为空表示查询所有的状态的订单*@parampower1:管理员后台查询订单/br2:表示用户自己查询订单*@return*@authorfanxiaochun*@since2015年6月9日*/@RequestMappingvalue=/findOrderpublicStringfindOrderHttpServletRequestrequestModelMapmapPageBeanOrderpage@RequestParamvalue=statusrequired=falseIntegerstatusIntegerpower{//判断当前页码是否为0,如果为0则置于1ifpage.getPc==0page.setPc1;//重置urlpage.setUrlPageUtil.getUrlrequest;ifpower==2{//取得当前的登录人Useruser=Userrequest.getSession.getAttributesessionUser;page=orderServiceImpl.findOrderuser.getUseridpagestatus;map.putpbpage;returnorder/list;}page=orderServiceImpl.findOrdernullpagestatus;map.putpbpage;returnadminjsps/admin/order/list;}/***提交订单**@paramrequest*@parammap*@paramorder*@return*@authorfanxiaochun*@since2015年6月6日*/@RequestMappingvalue=/addOrdermethod=RequestMethod.POSTpublicStringaddOrderHttpServletRequestrequestModelMapmapOrderorderStringcartItemIds{try{//或者当前登录用户Useruser=Userrequest.getSession.getAttributesessionUser;//设置订单初始状态order.setOrdertimenewSimpleDateFormatyyyy-MM-ddHH:mm:ss.formatnewDate;order.setStatusStatus.WAIT_MONEY;order.setOwneruser;//查询选中的购物车信息ListCartItemcartItemList=cartServceImpl.findByCartItemIdscartItemIds;OrderItemorderItem=null;//创建订单集合ListOrderItemorderItemList=newArrayListOrderItem;BigDecimaltotal=newBigDecimal0;//封装对象属性forCartItemcartItem:cartItemList{orderItem=newOrderItem;orderItem.setOrderorder;orderItem.setBookcartItem.getBook;orderItem.setQuantitycartItem.getQuantity;orderItem.setSubtotalcartItem.getSubtotal;orderItemList.addorderItem;/***计算总计*/total=total.addnewBigDecimalcartItem.getSubtotal+;}order.setOrderItemsorderItemList;//设置总金额order.setTotaltotal.doubleValue;//保存订单orderServiceImpl.addOrderordercartItemIds;//数据模型map.putorderorder;}catchExceptione{map.putmsg服务器正在维护中~~~请小君一会在来哦!!;//设置错误信息map.putcodeerror;log.error保存订单e;returnmsg;}returnorder/ordersucc;}/***根据订单编号查询**@paramrequest*@parammap*@paramorder*@return*@authorfanxiaochun*@since2015年6月6日*/@RequestMappingvalue=/findByOidpublicStringfindByOidHttpServletRequestrequestModelMapmapOrderorderintpower{order=orderServiceImpl.findByOidorder.getOid;//设置显示按钮map.putbtnrequest.getParameterbtn;map.putorderorder;ifpower==1{returnadminjsps/admin/order/desc;}returnorder/desc;}/***取消订单**@paramrequest*@parammap*@paramoid*订单编号*@return*@authorfanxiaochun*@since2015年6月6日*/@RequestMappingvalue=/cancleOrderpublicStringcancleOrderHttpServletRequestrequestModelMapmapStringoid{try{orderServiceImpl.updateStatusoidStatus.ORDER_CANCLE;}catchExceptione{map.putmsg服务器正在维护中~~~请小君一会在来哦!!;//设置错误信息map.putcodeerror;log.error取消订单e;}returnredirect:/orderController/findOrderpower=2;}/***确定订单**@paramrequest*@parammap*@paramoid*订单编号*@return*@authorfanxiaochun*@since2015年6月6日*/@RequestMappingvalue=/OrderConfirmpublicStringOrderConfirmHttpServletRequestrequestModelMapmapStringoid{try{orderServiceImpl.updateStatusoidStatus.ORDER_SUCCESS;map.putcodesuccess;map.putmsg订单交易成功;}catchExceptione{map.putmsg服务器正在维护中~~~请小君一会在来哦!!;//设置错误信息map.putcodeerror;log.error确定订单e;}returnmsg;}/***跳转到支付页**@paramrequest*@paramoid*订单编号*@parammap*@return*@authorfanxiaochun*@since2015年6月6日*/@RequestMappingvalue=/paymentPrepublicStringpaymentPreHttpServletRequestrequestStringoidModelMapmap{//取得订单对象Orderorder=orderServiceImpl.findByOidoid;map.putorderorder;returnorder/pay;}/***跳转到易宝支付平台**@paramrequest*@paramorderId*@paramyh*@return*@authorfanxiaochun*@since2015年6月6日*/@RequestMappingvalue=/paymentmethod=RequestMethod.POSTpublicStringpaymentHttpServletRequestrequestStringorderIdStringyh{returnredirect:+PaymentUtil.getPaymentUrlorderIdyh;}@RequestMappingvalue=/payBackpublicStringpayBackHttpServletRequestrequestModelMapmapHttpServletResponseresponsethrowsIOException{Stringp1_MerId=request.getParameterp1_MerId;Stringr0_Cmd=request.getParameterr0_Cmd;Stringr1_Code=request.getParameterr1_Code;Stringr2_TrxId=request.getParameterr2_TrxId;Stringr3_Amt=request.getParameterr3_Amt;Stringr4_Cur=request.getParameterr4_Cur;Stringr5_Pid=request.getParameterr5_Pid;Stringr6_Order=request.getParameterr6_Order;Stringr7_Uid=request.getParameterr7_Uid;Stringr8_MP=request.getParameterr8_MP;Stringr9_BType=request.getParameterr9_BType;Stringhmac=request.getParameterhamc;//获取keyValueStringkeyValue=PaymentUtil.getKeyValue;//验证验证码是否正确booleanisTrue=PaymentUtil.verifyCallbackhmacp1_MerIdr0_Cmdr1_Coder2_TrxIdr3_Amtr4_Curr5_Pidr6_Orderr7_Uidr8_MPr9_BTypekeyValue;try{if!isTrue{map.putcodeerror;map.putmsg验证错误;}elseifr1_Code.equals1{//表示访问的是重定向方式ifr9_BType.endsWith1{orderServiceImpl.updateStatusr6_OrderStatus.ORDER_SUCCESS;map.putcodesuccess;map.putmsg支付成功;}elseifr9_BType.endsWith2{//查询订单状态Orderorder=orderServiceImpl.findByOidr6_Order;iforder.getStatus!=Status.ORDER_SUCCESS{orderServiceImpl.updateStatusr6_OrderStatus.ORDER_SUCCESS;response.getWriter.printsuccess;returnnull;}}else{map.putcodeerror;map.putmsg支付失败!;}}}catchExceptione{map.putcodeerror;map.putmsg支付失败!;log.error支付出现问题e;}returnmsg;}}PAGE。