网站商城毕业论文

网站商城毕业论文

ID:46258967

大小:716.40 KB

页数:62页

时间:2019-11-22

上传者:U-7604
网站商城毕业论文_第1页
网站商城毕业论文_第2页
网站商城毕业论文_第3页
网站商城毕业论文_第4页
网站商城毕业论文_第5页
资源描述:

《网站商城毕业论文》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

计算机系2014届毕业设计(论文)材料清单班级:学号:姓名:性别:指导老师:毕业设计(论文)题目:Gogo购物商城序号资料名称1毕业设计(论文)课题申报表(学生)2毕业设计(论文)任务书3毕业设计(论文)开题报告4毕业设计(论文)正文5毕业设计(论文)成绩评定表(含答辩记录)6毕业设计(论文)中期学生口杳表 常卅工養建書枝術聲阮mimmiiE(?eh^ee躺&闊聪跻毕业设计(论文)任务书系名称:计算机系姓名性别专业班纯学号级指导教师信息姓名联系电话e-mai1毕业设计(论文)题目Gogo购物商城毕业设计(论文)主要内容及目标要求主要内容:1、shell模块(商城主要模块,首页)2、登录模块(实现会员,卖家的登录)3、注册模块(实现会员,卖家的注册)4、公共模块(公共的css,javascript,servlet)5、商品管理模块(实现商品的显示,发布,下架)6、会员管理模块(实现会员信息的修改)7、购物模块(实现简单的购物流程)8、软件测试实现的目标要求:利用html,jsp,css和后台服务器等相关技术,实现对电子商务平台会员、卖家和商品的增加,修改,和查看,可以实现简单的购物流程,完成与前台的交互功能,以及软件测试,发现软件漏洞,提出问题,并组织团队一起解决,优化软件。毕业设计(论文)进度安排时间安排预期完成内容及目标检查方式2013.12-2014.1完成需求分析报告2014.1-2014.2创建数据库演示2014.2-2014.3完成前台页面演示2014.3-2014.4完成前后台交互,处理数据演示2014.4-2014.5数据维护,系统测试演示 指导教师签字:年月日专业教研室主任签字:年訂日系主任签字:年月日注:1、本任务书一式三份,系、教师、学生各执一份;2、学生须将此任务书作为附件,装订在毕业设计报告(论文)中。 QftOKWIimEtFE側EE狮毕业设计(论文)开题报告一、基本信息学生姓名班级学号系名称)毕业设计(论文)题目Gogo购物商城指导教师二、开题意义课题的现状与发展趋势纵观全球电子商务市场,各地区发展并不平衡,呈现出美国、欧盟、亚洲“三足抽立”的局面。美国是世界最早发展电子商务的国家,同时也是电子商务发展最为成熟的国家,一直引领全球电子商务的发展,是全球电子商务成熟发达地区。欧盟电子商务的发展起步较美国晚,但发展速度鮫快,成为全球电子商务较为领先的地区。亚洲作为电子商务的新秀,市场潜力较大,但是近年的发展速度和所占份额并不理想,是全球电子商务的持续发展地区。bl前人型企业主导的B2B成为其全球竞争力的重要组成部分。B2B发展的特点是以人型企业为主导,以集成供应链管理为起点,以降低成本为主要冃标。而J1网上零售已成为发达国家主要零售渠道据众多长期关注电了商务的分析师、观察员以及零售店的管理人员都认为在接下来这儿年实体店的业绩必然下滑。课题的背景、意义;课题欲解决哪些方面问题背景与意义:电子商务并非是一种刚诞生的事物。早在木世纪70年代,电子数据交换(EDI)和电了资金传送(EFT)作为企业间电了商务应丿IJ的系统雏什么是电子商务形,已经出现。多年来,大量的银行、航空公司、连锁店及制造业单位已建立了供方和客八间的电子通信和处理关系。这种方式加快了供方处理速度,有助于实现最优化管理,使得操作更有效率,并提高了对客户服务的质量。随着Internet的高速发展,电了商务的旺盛生命力口益显露,眼下,Internet已有5000万个用户,并以侮季度X%的速度递增,约有50()万台主机连在Internet±0internet的强劲发展和网络应用在全球范围内的普及,为电子商务的发展奠定了良好的基础。根据统计,在网上银行作一次资金交割,其成本只有柜台交割的13%。Internet的发展在环境、技术和经济上都为电子商务创造了条件,电了商务作为Internet的一项授为重要的应川系统已呈现在我们眼前了随着经济的快速发展,“电子商务+快递”也顺应了社会的低碳要求。欲解决的问题:1、利用html+css+jsp技术实现前端主页面模块2、网络间的通讯问题3、前后台的交互性 三、课题方案课题内容Gogo购物商城首先需要一个商城的首页,当用户操作时,需要判断用户是否登录,未登录的话,需要先登录,如果没有账号,需耍先注册,注册成功后进行登录,课题研究(设登录成功示,进入主页,访问商品,同时,将会员信息保存在session域屮,方便调用会员信息。当用户发现商品的时候,可以直接付款或者加入购物车,计)思路、方法直接付款就是直接将信息传入后台,进行付款。加入购物车,就是将商品信息存入购物车表,当用户进入购物车页面的时候,读取后台购物车表中的数论述据,然后选择商品,付款。在卖家管理中,首先进行登录,如果卖家没有账号,需要先注册,注册成功后登录,登录之后可以进行商站信息的修改,商品的发布和下架。课题预期目标完成前后台数据交互,实现简单的购物流程(成果)课题进度安排2013.12-2014.1完成需求分析2014.1-2014.2创建数据库(时间阶段、阶2014.2-2014.3完成前台页面2014.3-2014.4完成前后台交互,处理数据段完成内容)2014.4-2014.5数据维护,系统测试四、审核指导教师意见签名:年月日系审核小组组长签名:意见年月日 牢卅工程織業技倦學P完毕业设计报告(论文)(2014届)题所属系:班级:学生姓名:学号同组成员:指导教师:Gogo购物商城 摘要纵观全球电子商务市场,各地区发展并不平衡,呈现出美国、欧盟、亚洲“三足鼎立”的局面。美国是世界最早发展电子商务的国家,同时也是电子商务发展最为成熟的国家,一直引领全球电子商务的发展,是全球电子商务成熟发达地区。欧盟电子商务的发展起步较美国晚,但发展速度较快,成为全球电了商务较为领先的地区。亚洲作为电了商务的新秀,市场潜力较大,但是近年的发展速度和所占份额并不理想,是全球电子商务的持续发展地区。关键词:HTML;CSS;JAVASCRIPTE;JSP;ORACLE;JQUERY;AJAX AbstractThroughouttheglobale-commercemarket,unevenregionaldevelopment,showingaAmerica,EU,Asia"asituationoftripartiteconfrontation"situation.USAistheworld'sfirstelectroniccommercedevelopmentstate,butalsothedevelopedcountriestothedevelopmentofelectroniccommerce,hasbeenleadingthedevelopmentofglobalelectroniccommerce,isaglobalelectroniccommercedevelopedarea・ThedevelopmentoftheelectroniccommercestartsrelativelyUSAlate,butthedevelopmentspeedisquick,themoretheworld'sleadinge-commercearea.ElectroniccommerceinAsiaasarookie,greatmarketpotential,butthepaceofdevelopmentinrecentyearsandtheshareisnotideal,isthesustainabledevelopmentofglobale-commerceareas.Keywords:HTML;CSS;JAVASCRIPTE;JSP;ORACLE;JQUERY;AJAX 第一章需求分析51.1、基本原理51.2、总体框图5第二章前台设计62.1、前台总体设计62.2、前台公共模块设计62.3、前台核心模块设计82.4、前台注册模块设计92.5、前台会员管理模块设计102.6、前台商品管理模块设计152.7、前台登陆模块设计182.8、前台购物模块设计192.9、前台整合设计21第三章软件设计213.1、软件总体架构设计(MVC架构)213.2、后台公共模块设计213.3、后台核心管理模块设计323.4、后台注册模块设计333.5、后台会员管理模块设计363.6、后台商品管理模块设计393.7、后台登陆模块设计433.8、后台购物模块设计453.9、tomcat月艮务器简介473.10^oracle数据库简介473.11servIet运彳亍原理48第四章成果演示49结论55参考文献56致谢56 近年來,随着Internet的迅速崛起,互联网已H益成为收集提供信息的最佳渠道并逐步进入传统的流通领域,互联网的跨地域性和可交互性使具在与传统媒体行业和传统贸易行业的竟争屮具不可抗拒的优势,因而发展十分迅速。在电子商务在屮国逐步兴起的人环境下,建立利川互联网开拓销售渠道,帮助企业及时调整商品结构,协助经销商打开货源的信息门八成为解决信息流通不畅的有效方案。毫无疑问,电子商务有利于企业转换经营机制,建立现代企业制度,提高企业的销售水平和竞争力。目前屮国的Internet已经从起步阶段进入了高速发展阶段,根据计算机行业年鉴最新的统计和预测,随着DSL技术和电缆调制解调器进入当地市场,亚洲和欧洲国家的互联网普及率将逐渐赶上美国。随着对互联网基础设施投资的加强,再加上庞大的人口数量,中国和印度的互联网用户数量到2010年将超过美国。中国的Internet,发展速度快,潜力大。在2000年1月18日发表的《中国互联网络发展状况统计报告》给出的数据中,我国互联网用户到去年年底己经达到890万,国内外专家预测五年内我国互联网用八数将超过美国成为世界笫一。当前屮国的电了商务存在很多局限性,例如:屮国人屮企业拥有网址百分率只在35.6%,其屮90%的网站是静态页面的,85%的网站半年以上才有更新内容。应该说目前我国的网络规模增长速度非常快,电了商务的兴起也为加速互联网的发展起了强大的推进作用。一般互联网的发展需经历以下两个个阶段:ICP模式。互联网内容提供商,成功范例为YAHOO,这种以媒体提供信息带动经济发展的模式,其特点是创业人大多是出于对互联网技术的个人兴趣,并非为了赚钱,访问率高就标志成功,随着网站变为媒体靠广告开始盈利,称为互联网媒体阶段。这一类网站盂要丰富的不断更新的多层而信息吸引访问者以逐步具备盈利的基木条件,显然与鞋业行业的特点不相符,鞋业市场是有和对固定的客八和商詁流通渠道的流通领域,有行业的专有信息,故互联网的媒体特性仅可作为徳记鞋铺电了商务网在行业屮的新型的信息传播方式。BtoC时代。面向最终消费者的电子商务,成功范例为亚马逊、DELL电脑,标志着互联网的商务时代的来临。2005年中国国内的BtoC的市场界•常活跃,易趣淘宝的迅速崛起,告诉人家商业运作是可行的,人类社会的商业发展是从最初的易货贸易到零售再到金业的人宗交易,互联网也从零售开始,网上零售体现了互联网的互动特性,同时减少了交易的流通环节。BtoC模式的直接受益人是最终消费者,由于互联网的互动特性,任何人可以通过网络挑选商品,货比三家,讨价还价。第一章需求分析1.1、基本原理本设计分为前台和后台两个部分,前台通过HTML静态页面,CSS样式,JSP动态页面,JAVASCRIPT脚木和AJAX异步通讯,实现前后台的交互,获取后台数据,让后台数据直观的显示给用户,让用户可以看到这些数据,并执行相关操作。后台通过servlet技术,对前台的请求了以应答,通过逻辑业务处理Z后,将将数据封装好后通过前台页面显示给用户。后台 主要承担的是处理数据,1.2、总体框图登录成功第二章前台设计2.1、前台总体设计前台设计分为前台前台公告模块设计,前台核心模块设计,前台登陆模块设计,前台注册模块设计,前台会员管理模块设计,前台商品管理模块设计和购物模块这七个模块。前台公告模块设计主要负责公告的CSS样式,javascript脚木,和公告的html页血前台核心模块负责的是主页商品的显示和各模块导航。前台登陆模块设计主要负责前台用户的登陆和卖家的登陆。両台注册模块主要负责前台会员的注册和卖家的注册。前台会员管理模块主要负责前台会员信息的显示和修改等。前台商品管理模块主耍负责的是前台商品信息的显示。前台购物模块主要负责的是川户实现购物功能。 2.2、前台公共模块设计前台公告模块主要包含了公告的CSS,javascript,和网页。公共的CSS主要包括网站的头样式,网站logo的样式,对于超链接各模式的设置,和验证码的样式。公共的javascript的包含ajax对象的封装,封装的ajax对象是川来执行ajax异步通信的对象,他封装了解决浏览器兼•容性问题,他的具体实现如下functionMyAjax(){〃定义varhttpRcqucst;〃设置界步方式varasynch=true;〃定义调用结果varmessage=u";this.gctMcssagc=function(){returnmessage;}this.setAsynch=function(newAsynch){asynch=newAsynch;}〃私冇方法创建XMLHttpRequest对象functioncreateXMLHttpRequest(){if(window.XMLHttpRequest){〃说明当前浏览器支持XMLHttpRequest对象httpRequest=newXMLHttpRequest();}else{〃如果不支持说明是IE7及以下版本〃应该通过尝试法來创建此対象varnames=[”Microsoft.XMLHTTP”,MMSXML2.XMLHTTPUJ;for(vari=0;i=0){rurl=url+n&t=H+newDatc();}else{rurl=url+u?t=M+newDate();}returnrurl; }this.sendAjax=function(url,method5params,callBack){if(url==nullIIurl=="undefinedu){message="url必须要填写!”;returnfalse;}url=getUrl(url);if(method==nullIImethod="undefined"){〃默认get方式method="get";}method=method.toLowerCase();//统一转换成小写〃创建对象createXMLHttpRequest();if(httpRequest==nullIIhttpRequest=nundefinedM){message="XMLHttpRequest创建失败,请开启ActiveX控件再尝试!";returnfalse;}〃注册冋调httpRequest.onreadystatechange=function(){if(httpRcqucst.rcadyStatc==4&&httpRcqucst.status==200)(callBack(httpRequest.responseText);}else{message="服务器返回的代码:"+httpRequest.status;}}〃打开请求httpRequest.open(method,url,asynch);〃设置一些基本参数(解决浏览器缓存数据的问题)httpRequest.setRequestHeader(nCache-Contror no-cacheH);httpRequest.setRequestHeader(nExpires,H0M);httpRequest.setRequestHeader(nPragmaM,Hno-cacheu);〃判断if(method=="postu){//如果是post请求设置头信息httpRequest.setRequestHeader(,,Content-Type,Mapplication/x-www-form-urlencodedH);//最好要进行参数验证httpRequest.send(params);}else{//如果是gethttpRequest.send(null);}}}o还包含了jqucry的运行脚本。公共的页面包含了导航页面和网站的头部。2.3、前台核心模块设计前台核心模块负责的是主页商品的显示和各模块导航。他包含了网站的框架,头部固定,底部有变化,头部是通过jsp指令动态包含的公共的jsp页而,他的具体实现是:S{empty hyglVo.yhm?”登陆”:“欢迎hyglVo.yhm"}联系客服卖家屮心jf5品分类收藏夹购物车我的Gogo首页

。底部是在框架中处理后台发回的数据,动态加载商品信息。 SWQ)MIQ[)Vt«»ZJ*3&dosoE千牧■畫■品分雯夷C中彷ITMT«箜a2.4、前台注册模块设计前台注册模块主要负责的会员注册和卖家注册。注册模块的验证是通过ajax界步通信的形式,让用户可以在服务器处理请求的同时操作页面。他的具体实现是://失去焦点的时候验证用八名functionyzYhm(obj){if(trim(obj.value)!=""){varurl=,7gogo/servlet/yzyhmservlet?yhm=M4-$(HyhmH).value;varajax=newMyAjax();ajax.sendAjax(url/,getM,null,clYhm);}else{$(Myhmsn).inncrHTML=n*“;}}〃显不处理结果functioncljg(rstr,id){if(rstr){vars_id=id+”s“;varflag=rstr.split(":")[OJ;varmsg=rstr.split(”:")[1];if(ntruen==flag){$(s_id).stylc.color=H#00FF00u;$(id).style.borderColor="#00FF00";}else{ $(s_id).stylc.color=”#FFOOOO";$(id).style.borderColor="#FF0000H;$(id).focus();$(id).select();}$(s_jd).inncrHTML=msg;}。上述实现屮,页面通过绑定的事件来调用javascript脚本。发送ajax请求,后台处理之后发挥rstr字符串。前台通过対rstr字符串的解析來实现具体操作。必SO购砺商城3到IMemberKnrdl@会城注册2.5、前台会员管理模块设计前台会员管理模块主要负责的是前台会员信息的查询和修改。他是通过jsp页面处理请求中的数据之后动态改变页面的相关信息。主要分为会员信息处理和卖家信息处理这两块。处理会员信息的貝-体实现是:<%@includefile=,7view/shell/top.jspu%>设置头像
个人信息v/a>修改个人信息 账户余额^d/(S注销
class=MgrxxcssH>${loginVo.yhm)class=ngrxxcssn>${loginVo.sfzhm}class=ngrxxcssu>${loginVo.zsxm}class=,rgrxxcssH>${loginVo.xb}class=,grxxcssH>${loginVo-dhhm}class=HgrxxcssH>${loginVo.zhje}cmailclass=HgrxxcssH>${loginVb.cmail}class=ngrxxcssH>${loginVo.dz}修改用户名:*设置新密码:*确认密码:*修改身份证号码: 修改真实姓名:验证码:v/td>实现卖家信息修改的貝•体实现是: 修改卖家信息发布商品显示所有商ii?i商品总数:${mjxxVo.mjsr}卖家名:店铺logo:密码:扌屮金:
type=MbuttonHname=${spzs}卖家class=HcenterHxinputclass=McenterMxinputclass=ncenterMxinputclass=ncenternxinput输入商品名:typc=HtcxtMnamc=Mspmu/>输入价格:type=HtextHname=HjgH/>输入库存量:type=HtextMname=MkclH/>输入款式按”,”class=ncenterHxinputtype=ntextHname=uksH/>商品类型:情侣服装情侣饰iffi儿童服装儿童玩具上传商品图片:上传商品详细图片:
显示处理的会员信息和卖家信息基本上相同,但是在卖家信息这一-快,他比会员信息多了一项发布商品的业务。他通过表单元素提交的形式将商品的各种信息以及图片上传。后台接受到之后,保存到数据库中。效果图如下:品分矣W衣中心屛〃右SiMnzh!235龟航册用户名1szhl23S身协证号码:320381199301044913真实姓名:suzhihaow电话号码,15261150551■户余额,130.0esailt2350093435«qq.cooHtrth一nWHsHWF沂市t???$尖家名:lisil23105f?K4tRt2289.0it* 2.6、前台商品管理模块设计前台商品管理模块主要负责的是前台商品信息的显示。主要包含,显示详细商品和显示分类商品。显示详细商品是通过核心模块中的商品信息拼装成url地址,发送到后台,后台对以上数据进行处理,返回应答信息,前台将得到的信息进行解析。得到显示详细商品的业务。显示分类商品是通过拼装uH将类型名发送到后台,后台将所有符合条件的商品包装起来打冋前台,前台处理之示,拼装成JSP的页面。他的具体实现是:Mi铺:${xxspVo.mjhym}
S{xxspVo.spm}—>${xxspVo.spid}价格:¥:${xxspVo.spjg}${xxspVo.xsl}数量:   库存(${xxspVo.kcl}) ~>—>f0j家信息v/span>vbi7>${xxspVb.mjhym}销售量:${xxspVo.xsl)库存.量:${xxspVo.kcl) ${xxspVo.spxx)bbb效果图如下:商凛信息li€il2311ftff#!100Mas ■Am二n欢迎登陆邮箱/用户名/已验证手机密码${msg}^记密码?I注册新账号I®见反馈效果图如下: 文奔w門*①•1r]•・•GOGO欢迎咖关于GoGo箒飭中心网塔坟馬诙聃養才联弔孜门制銘台世取权浪明MVRMBdlMVF.tUBMUI|IE用I矣・I*!<■I-41IMVMM|MVsitBCorm"•Mtmi,ffcrMWCuGo.ooo2.8、前台购物模块设计前台购物模块主要负责的是用户实现购物功能。他主要负责的是购物车,和结算这两个页面。在购物车中,当用户选中商品的同时购物车底部的总金额会发生变化。这是通过ajax异步通讯的形式来完成的。他的具体实现是:<%@includefile=,7view/shell/top.jsp,,%>
全选商品款式价格数量小计操作 卖家:${gwc.mjyhm}${gwc.spm)${gwc.ks)${gwc.jg}${gwc.sl}${gwc.xj} O.OO总计:¥ v/ti>
效果图如下:(Sogo左中1ir厂全遶*左0ihet>«Nan1U・价ta«1厂J叶倍裁抱925鈍fl!对惑士♦咏子卑她饰lisil2S180.0149.0WJrT30枪dis慣奇水3恨丰(4京杯版跨阳辛MH看咸.KhanciviMiX125.01125.0rT©牲“俗世奇水3儉孚(4女♦磁时妙孚彌fi+tt3$12S.0112S.0.m1竟不・xhM)s»a»rJRfll侶或18焙純恨洁心士軒乐臧孑KftW怖0—财见费劑字2149・0149.0-JHLJ厂JFTtt侶对8拓纯银可咸舅土♦仮咸孑更耐饰凳專.xhangJtftn1949.0149.0申」rJF袱侶或18拓純怅灯咸勇士H乐號子履価饰r叶侶或用溜純根对曲士林播臧子原规!饰品一MftWIT20go149.01849.0149.0U品索轧*h・muan18goI49.0..i.JrT呦储塔搭世总才;品光恢手铤京弗阪flTtt犬家、rhanxsan3$125.01125.0JMUrT他絡华18世奇木斗愀T版时35125』1125.0c^・—-|w*▼-zl2.9、前台整合设计首先根据mvc架构,分模块处理。然后再导入公共的css,javascript和公共贞面。然后根据不同的结构将前台页曲各部分整合出来。同时提炼公共部分,将他写入到公共模块的CSS和javascript中。这样可以节省网站的成本,提高网站的运行速度。 第三章软件设计3.1、软件总体架构设计(MVC架构)木网站是居于MVC架构来开发的。首先有一组拦截器和监听器会工作,他们负责处理前台发送的请求,过滤出垃圾信息,和恶意攻击。MVC(ModelViewController)是一种架构设计模式,该模式主要应用于图形化用户界而(GUI)应用程序。MVC由Model(模型)、View(视图)及Controller(控制器)三部分组成。MVC是一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前捉是如果业务逻辑被聚集到一个部件里面,而H•界面和川户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界而的结构中。后台数据是保存在Oracle数据库中。本系统分为会员表,商品表,商品类型表(是商品类型种类表的二级菜单表),商品类型种类表,卖家表,购物车表,商品详细图片表,会员头像表,省表,市表,县表。3.2、后台公共模块设计示台公共模块主要负责对公共数据的提炼和封装,得到一纟fl公共的对象,共其他模块一起使用。他包含处理密码问题的加密业务,验证码的获取和与数据库相关的操作。处理数据库的具体实现是://配置文件名称privateStringiniFileName="jdbc.properties";//连接数据库privateStringdriver=noraclc.jdbc.drivcr.OraclcDrivcrH;privateStringurl=,rjdbc:oracle:thin:@localhost:1521:ORCLH;privateStringuser=Msuzhihaon;privateStringpassword=//定义连接属性privateConnectionconnect=null;//与连接有关三个通道privateStatementstmt=null;privatePreparedStatementpstmt=null;privateCallablcStatcmcntcstmt=null; publicstaticfinalStringstmtType=nstmtM;publicstaticfinalStringpstmtType=npstmtn;publicstaticfinalStringcstmtType="cstmt";〃定义参数类型的静态常量值publicstaticfinalStringvarCharType="VARCHAR";publicstaticfinalStringintType="INTEGER*;publicstaticfinalStringdoubleType="DOUBLE";publicstaticfinalStringdateType="DATE";publicstaticfinalStringtimeType="TIMESTAMP";//定义全局的结果集privateRcsultSctrs=null;//在构造方法屮对属性进行初始化赋值操作publicOperateOracle(){//初始化连接initConncct();}//数据池建立连接privatevoidinitConnectFormDataSource(){InitialContextcontext=newInitialContext();DataSourcesource=(DataSource)context.lookup(Hjava:comp/env/jdbc/oracledsn);this.connect=source.getConnection();//设置手动提交事务this.conncct.sctAutoCommit(falsc);this.stmt=this.connect.createStatement();)catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(NamingExccptionc){//TODOAuto-generatedcatchblocke.printStackTrace();//建立连接privatevoidinitConnect(){try{Class.forName(driver);this.conncct=DrivcrManagcr.gctConncction(url,user,password);//设置手动提交事务this.connect.setAutoCommit(false);this.stmt=connect.createStatement();}catch(ClassNotFoundExceptione){//TODOAuto-gcncratcdcatchblocke.printStackTrace();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();} }//需耍调用者控制事务的两个方法//提交方法privatevoidcommit(){this.connect.comiiiit();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}//回滚事务privatevoidrollBack(){try{this.conncct.rollback();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}〃返回查询出來的结果集的笫一行一列的字符串publicStringgetRsFirstRowFirstColumn(Stringsql){Stringstr=rs=select(sql);try{if(rs.next()){str=rs.getString(l);}catch(SQLExccptionc){//TODOAuto-generatedcatchblocke.printStackTrace();}retumstr;}〃返回预编译通道查询出來的结果集的第一行一列的字符串publicStringgetRsFirstRowFirstColumn(Stringsql,Stringtype,ListcsList){Stringstr=rs=select(sql,type,csList);try{if(rs.next()){str=rs.getString(l);}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnstr;}//返回结果集的第一行的集合 publicListgetRsFirstRow(Stringsql){Listlist=null;rs=select(sql);try{if(rs.next()){list=newArrayList();ResultSetMetaDatarsmd=rs.getMetaData();intcolumnCount=rsmd.getColumnCount();for(inti=1;i<=columnCount;i++){Stringtype=rsmd.getCoIumnTypeName(i);〃需耍判断一个进度intscale=rsmd.getScale(i);list.add(getResultSetValue(rs,i,type,scale));}}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnlist;}〃返回通过预编译通道得到结果集第一•行的集合publicListgctRsFirstRow(StringsqLStringtypc,ListvString>csList){Listlist=null;rs=select(sql,type,csList);try{if(rs.next()){list=newArrayList();ResultSetMetaDatarsmd=rs.getMetaData();intcolumnCount=rsmd.getColumnCount();for(inti=1;i<=columnCount;i++){Stringptype=rsmd.getColumnTypeName(i);〃需要判断-个进度intscale=rsmd.getScale(i);list.add(getResultSetValue(rs,i,ptype,scale));})}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnlist;}〃返回查询的sql对应的rs结果集的条数publicintgetRsRowCount(Stringsql){intnumber=0;Stringpsql=uselectcount(*)from(u+sql+M)tmpsqlH;rs=sclcct(psql);try{if(rs.next()){ number=rs.getlnt(1);)}catch(SQLExceptionc){//TODOAuto-generatedcatchblocke.printStackTrace();}returnnumber;}〃返回预编译通道查询的sql对应的rs结果集的条数publicintgetRsRowCount(Stringsql,Stringtype,ListcsList){intnumber=0;Stringpsql="selectcount(*)from(,f+sql+n)tmpsqlH;rs=sclcct(psqLtype,csList);try{if(rs.next()){number=rs.getlnt(1);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnnumber;}〃定义一组与操作有关的方法〃使用普通通道执行的selectpublicResultSetselect(Stringsql){RcsultSctprs=null;if(stmt!=null){try{prs=stmt.executeQuery(sql);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}returnprs;}//使用普通通道执行的select〃返回通过预编译通道杳询到的结果集publicResultSetselect(Stringsql,Stringtype,ListcsList){ResultSetprs=null;if(type.equals(stmtType)){//说明使用普通通道来执行prs=select(sql);}elseif(type.equals(pstmtType)){//说明使用预编译通道来执行if(connect!=null){try{pstmt=connect.prcparcStatcmcnt(sql);〃验证传入的参数和sql中的参数个数一致〃将参数设置进当前的预编译通道setPrepareStatement(pstmt,csList); prs=pstmt.executeQueryO;}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();returnprs;获取验证码的具体实现是:publicclassYzmextendsHttpServlet{privateintwidth=100;privateintheight=32;privatefinalStringSZ二“0123456789”;privatefinalStringZM=”ABCDEFGHIJKLMOPQRSTUVWXYZ";privatefinalStringHZ=”u6211u4F60u4ED6u7231u4E0Au5BF9u65B9u79BBu5F00u5BB6u4F53u80B2u76D8u53E3u770Bu5417u;owsIOExccptionifanerroroccurredpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{〃在内存中构建的一副图片Bufferedlmageimage=newBufferedlmage(width,height,Bufferedlmage.TYPE_INT_RGB);M仅产牛了一个内存空间〃在上述空间屮画图〃得到I出i笔Graphicsgraphics=imagc.gctGraphics();//开始画〃画一个边框drawBk(graphics);drawBj(graphics);drawSjx(graphics);Stringlx="sz";Stringnr=getRandomNr(lx);HttpSessionsession=request.getSession();session.setAttribute("yzmH,nr);//^生成的验证码图片保存在服务器端Cookiecookie=newCookie("JSESSIONID",session.getld());cookie.setMaxAge(60*60);//此处的时间一定和服务端session的有效时间配合使用cookie.setPath(request.getContextPath());response.addCookie(cookie);drawNr(graphics,nr,lx);response.setHeader(MCache-ControrHno-cacheH);response.setHeader(HExpires, 0°); response.setHeader(nPragmaM,Mno-cachen);response.setContentType(nimage/jpegn);ScrvlctOutputStrcamsos=rcsponsc.gctOutputStrcam();ImageIO.write(image,"jpeg",sos);sos.flush();sos.close();〃画随机线privatevoiddrawSjx(Graphicsgraphics)}Randomrandom=newRandom();for(inti=0;iv5;i++){graphics.sctColor(gctRandomColor(l30,160));intxl=l+random.nextInt(width-2);intyl=1+random.nextInt(height-2);intx2=1+random.nextInt(width-2);inty2=1+random.nextInt(height-2);graphics.drawLinc(x1,yl,x2,y2);}}〃画内容到图形中privatevoiddrawNr(Graphicsgraphics,Stringnr,Stringlx){if(nr!=null&&nr.length()>0){intbj=6;if("zm".equals(lx)IIUsz,'.equals(lx)){graphics.setFont(newFont("宋体",Font.BOLD,3()));}else{graphics.setFont(newFont(H宋体Font.PLAIN,26));bj=1;}//graphics.drawString(内容,x轴坐标,y轴坐标(原点在图片下部));for(inti=();i255){min=0;}if(max<()IImax>255){max=255;}Randomrandom=newRandom();intr=min+random.nextlnt(max-min);intg=min+random.nextlnt(max-min);intb=min+random.ncxtlnt(max-min);returnnewColor(r,g,b);}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGct(rcqucst,response);}}密码加密的具体业务是://产生md5字符串方法publicstaticStringgctMd5(Stringstr){Stringrstr=str;try{ MessageDigestmessageDigest=MessageDigest.getInstance(Hmd5n);BASE64Encoderencoder=newBASE64Encoder();rstr=cncodcr.cncodc(mcssagcDigcst.digcst(str.gctBytcs()));)catch(NoSuchAlgorithmExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();retumrstr;publicstaticTconvertFirstResultSetToBean(ResultSetrs,Classclazz){Tt=null;try{if(rs!=null){〃说明结果集有内容String[Jcolumns=null;//获取所有查询出来的结果集得字段名称ResultSetMetaDatarsmd=rs.getMetaData();//得到结果集列数intcolumnCount=rsmd.getColumnCount();columns=newString[columnCountJ;//输出此结果集的所有列名for(inti=1;i<=columnCount;i++){columns[i-l]=rsmd.getColumnName(i).toL«werCase();}讦(rs.next()){t=(T)clazz.newlnstance();//初始化bean对象if(columns!=null&&columns.length>0){for(Stringzdme:columns){Stringvalue=rs.getString(zdmc);if(value!=null&&value.trim().length()>0){〃得到此类属性的描述PropcrtyDcscriptorpd=newPropcrtyDcscriptor(zdmc,clazz);〃得到属性的类型ClasspropertyType=pd.getPropertyType();//根据反射将值赋值到此对象中Methodmethod=pd.getWriteMethod();讦(method!=null){//调用用法method.invoke(t,convertPropertyType(value,propertyType));}} }}catch(Exceptione){//TODOAuto-gcncratcdcatchblocke.printStackTrace();returnt;publicstaticListconvertResultSetToList(ResultSetrs,Classclazz){Listlist=null;try{if(rs!=null){//说明结果集有内容String[]columns=null;〃获取所冇查询出來的结果集得字段名称ResultSetMetaDatarsmd=rs.getMetaData();//得到结果集列数intcolumnCount=rsmd.getColumnCount();columns=newString[columnCount];//输出此结果集的所有列名for(inti=I;i<=columnCount;i++){columns[i-lj=rsmd.getColumnName(i).toLowerCase();)list=newArrayListvT>();while(rs.next()){Tt=(T)clazz.newlnstance();//初始化bean对象if(columns!=null&&columns.length>0){for(Stringzdme:columns){Stringvalue=rs.getString(zdmc);if(value!=null&&value.trim().length()>0){〃得到此类属性的描述PropertyDescriptorpd=newPropertyDescriptor(zdmc,clazz);〃得到属性的类型ClasspropertyType=pd.getPropertyType();//根据反射将值赋值到此对象屮Methodmethod=pd.getWriteMethod();if(method!=null){//调用用法method.invoke(t,convertPropertyType(value,propertyType));}}}}list.add(t);}})catch(Exceptione){//TODOAuto-gcncratcdcatchblocke.printStackTrace(); returnlist;//将value转换成java能认识的数据类型publicstaticObjectconvertPropertyType(Stringvalue,ClasspropertyType)throwsParseException{Objecto=value;if(propcrtyTypc==int.class){o=Integer.valueOf(value);}elseif(propertyType==double.class){o=Double.valueOf(value);}elseif(propertyType==Date.class){o=newSimpleDateFormat(nyyyy-MM-ddn).parse(value);}elseif(propertyType==Timestamp.class){o=newTimestamp(newSimpleDateFormat(uyyyy-MM-ddHH:mm:ssH).parse(value).getTime());}elseif(propertyType==BigDecimal.class){o=newBigDecimal(value);}returno;}3.3、后台核心管理模块设计后台核心管理模块主要负责的是得到所冇的商品信息,并将此信息封装到与前台界面映射的V0对象屮,然后将这些对象放在一个集合里血,最后通过Gjson,将对象转换成json格式返冋到前台界而。其中,商品信息是做过分页处理的,每次只得到一小部分商品信息。他的具体实现是:publicclassShellServletextendsHttpServlet{publicvoiddoGct(HttpScrvlctRcqucstrequest,HttpScrvlctRcsponscresponse)throwsServletException,IOException{Stringtype=request.getParameter(MtypeH);Stringpage=request.getParameter(npagen);response.setCharacterEncoding(Hutf-8M);PrintWritcrout=response.getWritcr();if("spzs".equals(type)){Stringsql=Mselectcount(*)fromspbM;SpglDaoImpsdi=newSpglDaoImpO;intcount=sdi.getCountBySql(sql);out.print(count);return;}elseif(,rspxxH.equals(type)){if(!nn.cquals(pagc)){Stringsql=Mselectsp・spid,sp.spm,sp・xsl,sp.spjg,sp.spxx,sp」xid,mjb・mjhym,sp.sptp,sp.mjid from(selecttt・*froni(selectt.*,rownumasrsfrom(select*fromspb)twhererownum<=n+page+H*4)ttwherett.rs>=(H+page+H-1)*4+1)spleftouterjoinmjbon(sp.mjid=mjb.mjid)n;//SpglScrviccImpssi=newSpglScrviccImpO;Listlist=ssi.getSpxxBySql(sql);〃已经获取到商品信息SystenLout.printlnC'AMMMMMMMM”);//for(inti=O;icsList=hdi.getCsList(hyglVo);if(oo.iudSql(sql,oo.pstmtType,csList)>0){returntrue;}returnfalse;}〃通过前台Vo对象得到后台需要设入数据库的参数集合publicListgetCsList(HyglVohyglVo){ListcsList=null;if(hyglVo!=null){csList=newArrayList();csList.add(MVARCHAR,"+((!H".equals(hyglVo.getYhm()))?hyglVo.getYhm():"nuH"));csList.add(,,VARCHAR,n+((!,M,.equals(hyglVo.getMm()))?hyglVo.getMm():Mnuir,));csList.add(uVARCHAR;,+((!,,,,.equals(hyglVo.getSfzhm()))?hyglVo.getSfzhm():,,nuir,));csList.add("VARCHAR,',+((!"',.cquaIs(hyglVo.gctZsxm()))?hyglVo.gctZsxm():,,nuir,));csList.add(“VARCHAR,“+(”female“.equals(hyglVo.getXb())?”女”:”男“));csList.add(,,VARCHAR,H+((!,",.equals(hyglVo.getDhhm()))?hyglVo.getDhhm():nnullH));csList.add(HVARCHAR;,4-((!Hn.equals(hyglVo.getEamil()))?hyglVo.getEamil():nnuHu));Stringdz=getDz(hyglVb.getSheng()+":"+hygrVb.getShi()+”:”+hyglVo.getXian()+":"+("".cquals(hyglVo.gctJd())?"nuir':hyglVo.gctJd()));}returncsList;}publicStringgetDz(Stringdz){//System.out.println(ndz=M+dz);if(dz!=null){String[Jstr=dz.split(":n);Stringsheng=str[O];Stringshi=str[l];Stringxian=str[2]; Stringjd=str[3J;sheng=getShengByShengld(sheng);shi=getShiByShild(shi);xian=gctXianByXianld(xian);returnsheng+"-"+shi+',-"+xian+"-',+jd;}returnnull;}publicStringgctShcngByShcngId(Stringid){if(id!=null&&(!"default'*.equals(id))){Stringsql=”selectmefromshengwheresheng_id=”+id;OperateOracleoo=newOperateOracle();ResultSetrs=oo.select(sql);try{rs.next();returnrs.getString(l);}catch(SQLExceptione){//TODOAuto-generatedcatchblockc.printStackTracc();}}returnnull;}publicStringgetShiByShiId(Stringid){if(id!=null&&(!"default".equals(id))){Stringsql="selectmefromshiwhereshi_id=n+id;OperateOracleoo=newOperateOracle();ResultSetrs=oo.select(sql);try{rs.next();returnrs.getString(l);}catch(SQLExceptione){//TODOAuto-generatedcatchblockc.printStackTracc();}}returnnull;}publicStringgctXianByXianId(Stringid){if(id!=null&&(!"default'*.equals(id))){Stringsql=”selectmefromxianwherexian_id=n+id;OperateOracleoo=newOperateOracle();RcsultSctrs=oo.sclcct(sql);try{rs.next();returnrs.getString(l);}catch(SQLExceptione){//TODOAuto-gcncratcdcatchblocke.printStackTrace();} }returnnull;}3.5、后台会员管理模块设计示台会员管理模块实现的业务是对注册用户时的用户信息进行验证。主要分为:验证用户名(查询此用户是否符合规范和此用户名是否存在),验证密码(验证密码输入是否合法),验证确认密码,验证email,和验证验证码是否正确。他的具体实现是:〃验证用户名publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{rcqiicst.sctCharactcrEncoding("ut仁8”);response.setCharacterEncoding(nutf-8");OperateOracleoo=newOperateOracle();Stringmsg="”;Stringflag二”“;Stringstr=””;Stringyhm=request.getParameter(,,yhm");//首先验证用户名是否合法,不合法直接打回response,合法再链接数据库判断if(!yhm.matches("la-zO-9_-J{6,16}°)){str="false:χ 请输入6・16位用户名(不含中文)!”;}clsc{Stringsql=Mselectcount(*)fromhybwhereyhm=H,+yhm+,MH;ResultSetrs=oo.select(sql);try{rs.next();flag=rs.getInt(l)==O?"trueH:"false";if(ntrue".equals(flag)){msg=”√ 该用户名可用";}else{msg=”χ 该用户已存在”;}str=flag+H:H+msg;}catch(Exceptione){PrintWriterout=response.getWriter();out.print(str);out.flush();out.closc();}〃验证密码publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{rcqucst.sctCharactcrEncoding(nutf-8H);Stringstr="”; Stringmm=request.getParameter(nmmn);response.setCharacterEncoding(Mutf-8n);〃首先验证密码是否合法,不合法直接打回response,合法再链接数据库判断if(!mm.matches(n[a-z0-9_-]{6,16}M)){str="false:χ 请输入6-16位密码!”;}else{str=Mtrue:√”;}PrintWriterout=response.gctWritcr();out.print(str);out.flush();out.close();}〃验证emailpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding(Mutf-8M);Stringstr=,H,;Stringemail=request.getParameter(''emailH);response.setCharacterEncoding(Mutf-8n);if(!email.matches(,,A(La-zO-9_\.-J+)@(L\da-z\.-J+)\.(La-z\.J{2,6})$H)){if(email!=”“){str=Hfalse:χ cmail格式不正确,请重新输入!”;//Systcm.out.println(str);})else{str=ntrue:√”;}PrintWriterout=response.gctWritcr();out.print(str);out.flush();out.close();〃验证验证码publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding(nutf-8M);Stringyzm=request.gctParamctcr(nyzmn);response.setCharacterEncoding(Mutf-8n);HttpSessionsession=request.getSession();Stringnr=(String)session.getAttribute(uyzmn);Stringstr=,H,;if(!nr.cquals(yzm)){session-setAttribute(Hyzm,HflaseH);str="false:χ 验证码输入错l吴!”;}else{session.setAttribute(nyzm,"true”);str=Htrue:√”;}PrintWriterout=response.getWriter(); out.print(str);out.flush();out.closc();}〃验证确认密码publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{rcqucst.sctCharactcrEncoding(nutf-8H);Stringstr=u";Stringmm=request.getParameter(nmmn);Stringqrmm=request.getParameter(MqrmmH);response.setCharacterEncoding(Mutf-8u);〃如果密码和确认密码一致,且不为空,那么打冋正确if(mm.equals(qrmm)&&!HH.equals(mm)){str="rue:√”;}elseif(H".equals(mm)&&!mm.equals(qrmm)){//如果密码为空,确认密码不等于密码,说明,没冇输入密码str=Hfalse:χ 请先输入密码!";}elseif(!M".equals(mm)&&!mm.equals(qrmm)){//如果密码不为空,确认密码和密码不想等,那么说明确认密码输入错误str=ufalse:χ 密码输入错谋,请重新输入!”;}PrintWriterout=response.gctWritcr();out.print(str);out.flush();out.close();3.6、后台商品管理模块设计商品管理模块实现的业务是得到商品详细信息数据和购物车数据。通过请求的商品id和请求类型,分别处理这两个业务。在处理商品详细信息的数据中,首先通过sql查找对应信息,然后将这些得到的数据封装到少前台贝面映射的V0然后将此V0设置到requset域中,让JSP页面在加载的时候显示这些信息。购物车的商品处理和商品详细处理一致O他的具体实现是:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{rcqucst.sctCharactcrEncoding(Mutf-8H);Stringspid=request.getParameter(Hspidn);Stringtype=request.getParameter(MtypeH);response.setCharacterEncoding(Mutf-8M);System.out.println(type);〃如果类型等于显示详细商品if(nxsxxspH.equals(type)){XsxxspVoxsxxspVo=newXsxxspVo();SpglServicelmpssi=newSpglServicelmpO;Stringsql=”selectspb.spid,spb.spm,spb.xsl,spb.spjg,spb.spxx,mjb.iTijhyiTi,spb.sptp,spb.spks,spb.kcl,nyb.rnjid,spb.splogoH+"fromspbleftouterjoinmjbonspb.mjid=mjb.mjid wherespb.spid=H+spid;xsxxspVo=ssi.getXxspVoBySql(sql);PrintWriterout=response.getWriter();//System.out.println(xsxxspVo);rcqucst.sctAttributc(HxxspV()fxsxxspVb);request.getRequestDispatcher(,7view/spgl/xsxxsp.jspH).forward(request5response);}elseif(ngwcM.equals(type)){intsi=Intege匚valueOf(request.getParameter(nsln));Stringks=request.gctParamctcr(uksn);SpglServicelmpssi=newSpglServicelmpO;Stringsql="selectspb・spm,spb・spjg,mjb.mjhym,mjb.mjidfromspbleftouterjoinmjbonspb.mjid=mjb.mjidwherespid=M+spid;GwServletlmpgsi=newGwServletlmpO;GwcVogwcVo=gsi.gctGwcVoBySql(sql);gwcVo.setSpid(Integer.valueOf(spid));gwcVo.setSl(sl);gwcVo.setKs(ks);gwcVo.setXj(gwcVo.getJg()*sl);//System.out.println(gwcVo);gsi.addGwcBySql(gwcVo);OperateOracleoo=newOperateOracle();ResultSetrs=null;SpglDaoImpsdi=newSpglDaoImpO;〃根据sql语句得到商品信息,返回SpgIPojo的一个集合,集合小存放的都是商品信息。publicListgctSpxxBySql(Stringsql){Listlist=null;〃如果sql不为空if(!UM.equals(sql)){〃查询数据库得到resultsct结果集rs=oo.sclcct(sql);〃根据resultset结果集得到spglpojo的集合list=sdi.getSpglPojiByResultSet(rs);}returnlist;}〃根据sql得到显示详细商品集合publicXsxxspVogetXxspVoBySql(Stringsql){XsxxspVoxsxxspVo=null;〃如果sql不为空if(!,,n.equals(sql)){〃查询数据库得到resultset结果集rs=oo.select(sql);xsxxspVo=sdi.getXxspByResultSet(rs);}returnxsxxspVo; }〃根据resultset结果集,得到spglpojo对象的集合。publicListgetSpglPojiByResultSet(ResultSetrs){〃如果rs不为空Listlist=null;if(rs!=null){try{list=newArrayList();SpglVospglVo=null;〃遍历结果集的内容while(rs.next()){〃创建spglVo的对彖,并且赋值,添加到list中spglVo=newSpglVo();spglVo.setSpid(rs.getInt(1));spglVo.sctSpm(rs.gctString(2));spglVo.setXsl(rs.getInt(3));spglVo.setSpjg(rs.getDouble(4));spglVo.setSpxx(rs.getString(5));spglVo.sctLxid(rs.gctInt(6));spglVo.setMjhym(rs.getString(7));spglVo.setSptp(rs.getString(8));spglVo.setMjid(rs.getInt(9));list.add(spglVo);spglVo=null;}}catch(Exceptione){e.printStackTrace();)}returnlist;}〃根据sql得到结果集中数据个数。publicintgetCountBySql(Stringsql){OperateOracleoo=newOperateOracle();ResultSetrs=null;intcount=0;if(!,,H.equals(sql)){rs=oo.sclcct(sql);if(rs!=null){try{rs.next();count=rs.getlnt(l);}catch(Exccptionc){}}}returncount;}〃根据resultset得到xaxxspVopublicXsxxspVogetXxspByResultSet(ResultSetrs){ XsxxspVoxsxxspVb=null;if(rs!=null){xsxxspVo=newXsxxspVo();try{〃遍历结果集的内容whilc(rs.ncxt()){〃创建xsxxspVo的对象,并赋值,添加到list中xsxxspVo.setSpid(rs.getInt(1));xsxxspVo.setSpm(rs.getString(2));xsxxspVo.sctXsl(rs.gctInt(3));xsxxspVo.setSpjg(rs.getDouble(4));xsxxspVo.setSpxx(rs.getString(5));xsxxspVo.setMjhym(rs.getString(6));xsxxspVo.setSptp(rs.getString(7));xsxxspVb.setSpks(getListByString(rs.getString(8)));xsxxspVo.setKcl(rs.getInt(9));xsxxspVo.setMjid(rs.getInt(10));xsxxspVo.setsplogo(rs.getString(11));xsxxspVo.setXxtp(getSptpBySpid(xsxxspVo.getSpid()));}}catch(Exceptione){e.printStackTrace();}}returnxsxxspVc);}*/〃解析指定规则的字符串的得到一个集合publicListgctListByString(Stringstr){Listlist=null;if(!H".equals(str)){StringlJtemp=str.split(H/r);list=newArrayList();〃如果按指定规则分割后有值,那么将分割的值放入集合if(temp!=null&&temp.length>0){for(inti=O;igetSptpBySpid(intspid){OpcratcOraclcoo=newOpcratcOraclc();Stringsql=''selectTPDZfromSPTPXXBwherespid="+spid;〃通过商品id得到的商品的所有图片地址 ResultSetrsl=oo.select(sql); Listlist=null;if(rsl!=null){〃如果结果集有值,那么添加的list中list=newArrayList();try{while(rsl.next()){list.add(rs1.gctString(1));}}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}returnlist;后台登陆模块实现的业务是会员的登陆和卖家的背陆,通过验证前台提交的表单是否正确来实现登陆。如果验证正确,首先建立一个和数据库对应的POJO对彖,然后将数据弃中的信息读取出来设置到POJO的对象屮,最后将此对象设置到session域中,供前台提交购物订单时回去会员信息,卖家登陆成功后也是将对象保存在session域小。他的具体实现是:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//设置通道字符格式request.setCharacterEncoding(Hutf-8n);//得到请求的用户名和密码Stringyhm=request.getParameter(MyhmM);Stringmm=request.getPararneter(unimM);System.out.println(mm);//链接数据库Jdbcjdbc=newJdbc();jdbc.connectSql(u192.168.4.128","suzhihao","niit");Stringsql=Mselectmmfromhybwhereyhm=,H+yhm+,MMResultSetrs=jdbc.selectSql(sql);if(rs!=null){rs.next();System.out.println(rs.getString(l));讦(rs.getString(1).equals(mm)){LoginDaoImpldi=newLoginDaoImpO;LoginPoJologinPojo=ldi.gctPojoByYhm(yhm);request.getRequestDispatcher(,7view/shell/shell.jspu).forward(request,response);return;}catch(Exceptione){}}request.setAttribute("msg",户名或密码错误,请重新输入!”); request.setAttribute(Hyhm,yhm);//response.sendRedirect(M/gogo/front/login.jspn);request.getRequestDispatcher(H/view/login/login.jspn).forward(request,response);}publicLoginPoJogetPojoByYhm(Stringyhm){Stringsql="selecthyid,yhm,mm,sfzhm,zsxm,xb,dhhm,email,dz,hytx,zcsj,zt,zhjefromhybwhereyhm=M+yhm;OperateOracleoo=newOperateOracle();ResultSetrs=oo.select(sql);LoginPoJologinPojo=getPojoByRs(rs);returnloginPojo;publicLoginPojogctPojoByRs(RcsultSctrs){//TODOAuto-generatedmethodstubLoginPojologinPojo=null;if(rs!=null){try{rs.ncxt();loginPojo=newLoginPoJo();loginPojo.setHyid(rs.getInt(1));loginPojo.setYhm(rs.getString(2));loginPojo.setMm(rs.getString(3));loginPojo.sctSfzhm(rs.gctString(4));loginPojo.setZsxm(rs.getString(5));loginPojo.setXb(rs.getString(6));loginPojo.setDhhm(rs.getString(7));loginPojo.setEmail(rs.getString(8));loginPojo.sctDz(rs.gctString(9));loginPojo.setHytx(rs.getString(10));loginPojo.setZcsj(rs.getDate(11));loginPojo.setZt(rs.getString(12));loginPojo.setZhje(rs.getDouble(13));}catch(SQLExccptionc){//TODOAuto-generatedcatchblocke.printStackTrace();returnloginPojo;3.8>后台购物模块设计后台购物模块实现的业务是处理付款,完成结算。首先,需要获得商品的ID。然后根据商品的ID得到商品的信息,然后通过卖家ID得到卖家信息,然后通过session域得到川户信息,得到上述3条信息之后,就可以将卖家中的这一商品的销售量加一,将川户的金额扣除商甜的价值,给卖家增加收入。他的具体实现是:publicvoiddoGct(HttpScrvlctRcqucstrequest,HttpScrvIctRcsponscresponse)throwsServletException,IOException{request.setCharacterEncoding(nutf-8H);Stringtype=request.getParameter(HtypeH);Stringyhid=request.getParameter(HyhidM);System.out.println(typc);if(ngwc".equals(type)){HttpSessionsession=request.getSession(); LoginVologinVo=(LoginVo)session.getAttribute(HloginVbn);inthyid=loginVo.getHyid();Stringsql=nselectzhjefromhybwherehyid=n+hyid;OperateOnicleoo=newOperateOracle();ResultSetrs=oo.select(sql);doubleje;try{rs.ncxt();je=rs.getDouble(l);doublezj=Double.valueOf(request.getParameter(Mzjn));je=je-zj;sql="updatehybsetzhje=(H+je+n)n;oo.iudSql(sql);LoginDaoImpldi=newLoginDaoImpO;Stringyhm=loginVo.getYhm();loginVo=ldi.getPojoByYhm(yhm);session.setAttribute(HloginVo,loginVo);PrintWritcrout=response.gctWritcr();out.print(uokM);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}elseif("zjadd'*.equals(type)){//System.out.println(uaaaaM);doublezj=Double.valucOf(rcqucst.gctParamctcr(Mzjn));doublespjg=Double.valueOf(request.getParameter(nspjgn));PrintWriterout=response.getWriter();response.setCharacterEncoding(Mutf-8n);zj=Zj+spjg;//System.out.println(zj);out.print(zj);}elseif(nzjremoveH.equals(type)){//System.out.println(Haaaan);doublezj=Double.valueOf(request.getParameter(nzjH));doublespjg=Double.valucOf(rcqucst.gctParamctcr(Hspjgn));PrintWriterout=response.getWriter();response.setCharacterEncoding(Mutf-8n);zj=zj-spjg;out.print(zj);}elseif(HspxxH.equals(type)){intspid=Integer.valueOf(request.getParameter(^spid,,));doublespjg=Double.valueOf(request.getParameter(nspjgn));intsi=Integer.valueOf(request.getParameter(,,slH));Stringsql=”selectmjid,xslfromspbwherespid=n+spid;OpcratcOraclcoo=newOpcratcOraclc();ResuItSetrs=oo.select(sql); try{rs.next();intmjid=rs.getlnt(l);intxsl=rs.gctlnt(2);doubleje=spjg;xsl=xsl+si;sql="updatespbsetxsl=(n+xsl+H)wherespid=n+spid;oo.iudSql(sql);sql="selectmjsrfromnijbwheremjid=H+mjid;rs=oo.select(sql);rs.next();je=je+rs.getlnt(l);sql=Hupdatemjbsetmjsr=(H+je+n)wheremjid=u+mjid;oo.iudSql(sql);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}clscif(ngwH.equals(type)){System.out.println(yhid);Stringsql=Mselectspid,spm,mjyhm,mjid,ksjg,si,xjfromgwebwhereyhid=n+yhid;GwServletlmpgsi=newGwServletlmpO;ListvGwcVb>list=gsi.gctListBySql(sql);request.setAttribute(Hlist,list);request.getRequestDispatcher(M/view/gw/gwc.jspn).forward(request,response);}3.9、tomcat服务器简介Tomcat服务器是一个免费的开放源代码的Web应丿IJ服务器,属于轻量级应丿IJ服务器,在中小型系统和并发访问用八不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML(标准通用标记语言下的一个应用。)页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。诀窍是,当配置正确时,Apache为HTML页面服务,rfij'Tomcat实际上运行JSP页面WServleto另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为8.0.0-RC1(alpha)ReleasedoTomcat很受广人程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善屮,任何一个感兴趣的程序员都町以更改它或在其中加入新的功能。Tomcat最初是rflSun的软件构架师詹姆斯•邓肯•戴维森开发的。后來他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目OReilly都会出一•本相关的书,并11将其封而设计成某个动物的素描,因此他希望将此项目以一•个动物的名字命名。 因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性猫科动物)。而0Reilly出版的介绍Tomcat的书籍(ISBN0-596-00318-8)[1]的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。3.10>oracle数据库简介ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是FI前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库Z一。比如SilverStream就是基于数据库的一种屮间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所冇知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使川它。Oracle数据库最新版木为OracleDatabase12coOracle数据库12c引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,女UOracleMultitenantnJ*快速整合多个数据库,而AutomaticDataOptimization和HeatMap能以更高的密度压缩数据和対数据分层。这些独一无二的技术进步再加上在可用性、安全性和人数据支持方面的主要增强,使得Oracle数据库12c成为私有云和公有云部署的理想平台。Oracle数据库的特点:1、完整的数据管理功能:1)数据的大量性、2)数据的保存的持久性、3)数据的共享性、4)数据的可靠性。2、完备关系的产品:1)信息准则…关系型DBMS的所有信息都应在逻辑上用一种方法,即表屮的值显式地表示、2)保证访问的准则、3)视图更新准则…只要形成视图的表屮的数据变化了,相应的视图屮的数据同时变化、4)数据物理性和逻辑性独立准则。3、分布式处理功能:ORACLE数据库口第5版起就提供了分布式处理能力,到第7版就冇比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms>sql*Net、SQL*CONNECT和其他非0RACLE的关系型产品构成。4、用ORACLE能轻松的实现数据仓库的操作。他的可用性强,可扩展性强,数据安全性强,稳定性强。他的数据结构是它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对彖是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构:表、视图、序列、存储过程、同义词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,川于描述怎样使用数据库的物理空间。而具屮的模式对象和关系形成了数据库的关系设计。段(Segment):是表空间中一个指定类型的逻辑存储结构,它山一个或多个范围组成,段将占用并增长存储空间。其中包括:数据段:用来存放表数据;引段:用来存放表索引;临时段:用来存放中间结果;回滚段:用于出现异常时,恢复事务。3.11>servIet运行原理servlet是在服务器上运行的小程序。这个词是在Javaapplet的环境屮创造的,Jamapplet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(CGI(CommonGatewayInterface))应川程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Javaservlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。最早支持Servlet技术的是JavaSoft的JavaWebServer0此后,一些其它的基于Java的Webserver 始支持标准的ServletAPI0Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:客户端发送请求至服务器端;、服务器将请求信息发送至Servlet>Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求、服务器将响应返I川给客户端、Servlet看起来像是通常的Java程序。Servlet导入特定的属于JavaServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运彳亍于Server中,它们并不需耍一个图形用户界血。从这个角度讲,Servlet也被称为FacelessObject。、一个servlet就是Java编程语言小的一个类,它被用來扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。加载和实例化Servleto这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的ServletoServlet生命周期:Server创建一个Servlet的实例,第一个客户端的请求到达ServerServer调用Servlet的init()方法(可配置为Server创建servlet实例时调用,在web.xml中标签下配置标签,配置的值为整型,值越小servlet的启动优先级越高),一个客户端的请求到达Server,Server创建一个请求对象,处理客户端请求,Server 创建一个响应对象,响应客户端请求,Server激活Servlet的service。方法,传递请求和响应对象作为参数,service()方法获得关于请求対象的信息,处理请求,访问-其他资源,获得需要的信息,service()方法使用响应对彖的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法。对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次(只冇一个对彖),当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。第四章成果演示1.打开主页XW0L)HSO)IAG)ViSJL牧■竟■品分矣養左中心CSSW£dbso热销中••••)”債口*抬眈5维*对金男inotHKkMAa)・"a)因GBJHBL^G[^]Mm9090/<«€•/*>»«/r«pit«r/r«ptt«r>f>•]二e]刁]♦八「鈕0购砺商减MemberHfwdl4•查看商品信息 xwaiema■■vmfq,img)・"a)■l*JMmW«rH・Ev*K4・》M”bX:•e][M.47J*,•VIttKCoeoMD*a・RDRfH—鈕诵CR6t9xttmXWd)"*V«(DAt(&)杠SIAd)«Vld)阂・9I*■.・・e[•<•u・/I*八热销中・•••恥脱彳1*參■■■手t*勇±K4fllXttiVtk休伺复占《1们¥话何邙I1S.9=梢Hoft95:HflUMJITtttt^«925MWH•兪戍了JR®W愉閉一对免劝M字<:49茎够・,H件$«;liril23(:血■华格口为九案齐品置金护<1AHfc»tWTTOttm.7.T»II3S三他申受艮Hril23T400*华格IM台水曲UH悦女初Sc»tWTWit»flTa•:125#»W.i?i4畑HH1235•添加到购物午•1•8I3:8.fizh!235他曲注册fillItRCoco昨平收■喪«A5>«頁家中心 工Ad)■5QPi♦.//1wUK«b<・V・Mr“H'Qy>*sC»«T>aWl女WSnh!2«fllhTM-141JS|u•F曲■2・_£)』・($)30»x$xh«n
当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭