Gogo购物商城-网站商城毕业论文

Gogo购物商城-网站商城毕业论文

ID:16410754

大小:2.29 MB

页数:63页

时间:2018-08-09

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

《Gogo购物商城-网站商城毕业论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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

。底部是在框架中处理后台发回的数据,动态加载商品信息。57 2014届毕业设计(论文)2.4、前台注册模块设计前台注册模块主要负责的会员注册和卖家注册。注册模块的验证是通过ajax异步通信的形式,让用户可以在服务器处理请求的同时操作页面。他的具体实现是://失去焦点的时候验证用户名functionyzYhm(obj){if(trim(obj.value)!=""){varurl="/gogo/servlet/yzyhmservlet?yhm="+$("yhm").value;varajax=newMyAjax();ajax.sendAjax(url,"get",null,clYhm);}else{$("yhms").innerHTML="*";}}//显示处理结果functioncljg(rstr,id){if(rstr){vars_id=id+"s";varflag=rstr.split(":")[0];varmsg=rstr.split(":")[1];if("true"==flag){$(s_id).style.color="#00FF00";$(id).style.borderColor="#00FF00";}else{57 2014届毕业设计(论文)$(s_id).style.color="#FF0000";$(id).style.borderColor="#FF0000";$(id).focus();$(id).select();}$(s_id).innerHTML=msg;}}。上述实现中,页面通过绑定的事件来调用javascript脚本。发送ajax请求,后台处理之后发挥rstr字符串。前台通过对rstr字符串的解析来实现具体操作。2.5、前台会员管理模块设计前台会员管理模块主要负责的是前台会员信息的查询和修改。他是通过jsp页面处理请求中的数据之后动态改变页面的相关信息。主要分为会员信息处理和卖家信息处理这两块。处理会员信息的具体实现是:<%@includefile="/view/shell/top.jsp"%>设置头像
个人信息修改个人信息57 2014届毕业设计(论文)账户余额充值注销
用户名:${loginVo.yhm}身份证号码:${loginVo.sfzhm}真实姓名:${loginVo.zsxm}性别:${loginVo.xb}电话号码:${loginVo.dhhm}账户余额:${loginVo.zhje}email:${loginVo.email}地址:${loginVo.dz}修改用户名:*设置新密码:*确认密码:57 2014届毕业设计(论文)*修改身份证号码:修改真实姓名:验证码:*${msg}实现卖家信息修改的具体实现是:卖家信息57 2014届毕业设计(论文)修改卖家信息发布商品显示所有商品注销卖家名:${mjxxVo.mjyhm}商品总数:${spzs}卖家余额:${mjxxVo.mjsr}
卖家名:店铺logo:密码:押金:
输入商品名:输入价格:输入库存量:输入款式按","号隔开:商品类型:请选择情侣服装57 2014届毕业设计(论文)情侣饰品儿童服装儿童玩具上传商品图片:上传商品详细图片:
显示处理的会员信息和卖家信息基本上相同,但是在卖家信息这一快,他比会员信息多了一项发布商品的业务。他通过表单元素提交的形式将商品的各种信息以及图片上传。后台接受到之后,保存到数据库中。效果图如下:57 2014届毕业设计(论文)2.6、前台商品管理模块设计前台商品管理模块主要负责的是前台商品信息的显示。主要包含,显示详细商品和显示分类商品。显示详细商品是通过核心模块中的商品信息拼装成url地址,发送到后台,后台对以上数据进行处理,返回应答信息,前台将得到的信息进行解析。得到显示详细商品的业务。显示分类商品是通过拼装url将类型名发送到后台,后台将所有符合条件的商品包装起来打回前台,前台处理之后,拼装成JSP的页面。他的具体实现是:店铺:${xxspVo.mjhym}${xxspVo.spm}57 2014届毕业设计(论文)${xxspVo.spid}价格:¥:${xxspVo.spjg}销售量:${xxspVo.xsl}款式:数量:   库存(${xxspVo.kcl})
商家信息
${xxspVo.mjhym}
销售量:${xxspVo.xsl}
库存量:${xxspVo.kcl}
57 2014届毕业设计(论文)${xxspVo.spxx}bbb效果图如下:57 2014届毕业设计(论文)2.7、前台登陆模块设计前台登陆模块主要负责用户的登陆和卖家的登陆。他通过ajax异步通信,将表单元素发送到后台,后台处理信息之后返回的提示信息,是放在一个特定的div中的,此div一开始是隐藏的,只有当后台发回错误信息的时候才会把错误信息msg显示出来。他的具体实现是:欢迎登陆邮箱/用户名/已验证手机密码${msg}忘记密码?|注册新账号|意见反馈

57 2014届毕业设计(论文)效果图如下:2.8、前台购物模块设计前台购物模块主要负责的是用户实现购物功能。他主要负责的是购物车,和结算这两个页面。在购物车中,当用户选中商品的同时购物车底部的总金额会发生变化。这是通过ajax异步通讯的形式来完成的。他的具体实现是:<%@includefile="/view/shell/top.jsp"%>全选商品款式价格数量小计操作57 2014届毕业设计(论文)卖家:${gwc.mjyhm}${gwc.spm}${gwc.ks}${gwc.jg}${gwc.sl}${gwc.xj} 0.00总计:¥ 
效果图如下:57 2014届毕业设计(论文)2.9、前台整合设计首先根据mvc架构,分模块处理。然后再导入公共的css,javascript和公共页面。然后根据不同的结构将前台页面各部分整合出来。同时提炼公共部分,将他写入到公共模块的CSS和javascript中。这样可以节省网站的成本,提高网站的运行速度。第三章软件设计3.1、软件总体架构设计(MVC架构)本网站是居于MVC架构来开发的。首先有一组拦截器和监听器会工作,他们负责处理前台发送的请求,过滤出垃圾信息,和恶意攻击。MVC(ModelViewController)是一种架构设计模式,该模式主要应用于图形化用户界面(GUI)应用程序。MVC由Model(模型)、View(视图)及Controller(控制器)三部分组成。MVC是一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。后台数据是保存在Oracle数据库中。本系统分为会员表,商品表,商品类型表(是商品类型种类表的二级菜单表),商品类型种类表,卖家表,购物车表,商品详细图片表,会员头像表,省表,市表,县表。3.2、后台公共模块设计后台公共模块主要负责对公共数据的提炼和封装,得到一组公共的对象,共其他模块一起使用。他包含处理密码问题的加密业务,验证码的获取和与数据库相关的操作。处理数据库的具体实现是://配置文件名称privateStringiniFileName="jdbc.properties";//连接数据库privateStringdriver="oracle.jdbc.driver.OracleDriver";privateStringurl="jdbc:oracle:thin:@localhost:1521:ORCL";privateStringuser="suzhihao";privateStringpassword="niit";//定义连接属性57 2014届毕业设计(论文)privateConnectionconnect=null;//与连接有关三个通道privateStatementstmt=null;privatePreparedStatementpstmt=null;privateCallableStatementcstmt=null;publicstaticfinalStringstmtType="stmt";publicstaticfinalStringpstmtType="pstmt";publicstaticfinalStringcstmtType="cstmt";//定义参数类型的静态常量值publicstaticfinalStringvarCharType="VARCHAR";publicstaticfinalStringintType="INTEGER";publicstaticfinalStringdoubleType="DOUBLE";publicstaticfinalStringdateType="DATE";publicstaticfinalStringtimeType="TIMESTAMP";//定义全局的结果集privateResultSetrs=null;//在构造方法中对属性进行初始化赋值操作publicOperateOracle(){//初始化连接initConnect();}//数据池建立连接privatevoidinitConnectFormDataSource(){try{InitialContextcontext=newInitialContext();DataSourcesource=(DataSource)context.lookup("java:comp/env/jdbc/oracleds");this.connect=source.getConnection();//设置手动提交事务this.connect.setAutoCommit(false);this.stmt=this.connect.createStatement();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(NamingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}57 2014届毕业设计(论文)}//建立连接privatevoidinitConnect(){try{Class.forName(driver);this.connect=DriverManager.getConnection(url,user,password);//设置手动提交事务this.connect.setAutoCommit(false);this.stmt=connect.createStatement();}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}//需要调用者控制事务的两个方法//提交方法privatevoidcommit(){try{this.connect.commit();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}//回滚事务privatevoidrollBack(){try{this.connect.rollback();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}//返回查询出来的结果集的第一行一列的字符串publicStringgetRsFirstRowFirstColumn(Stringsql){Stringstr="";rs=select(sql);try{if(rs.next()){str=rs.getString(1);}57 2014届毕业设计(论文)}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnstr;}//返回预编译通道查询出来的结果集的第一行一列的字符串publicStringgetRsFirstRowFirstColumn(Stringsql,Stringtype,ListcsList){Stringstr="";rs=select(sql,type,csList);try{if(rs.next()){str=rs.getString(1);}}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.getColumnTypeName(i);//需要判断一个进度intscale=rsmd.getScale(i);list.add(getResultSetValue(rs,i,type,scale));}}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnlist;}//返回通过预编译通道得到结果集第一行的集合57 2014届毕业设计(论文)publicListgetRsFirstRow(Stringsql,Stringtype,ListcsList){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="selectcount(*)from("+sql+")tmpsql";rs=select(psql);try{if(rs.next()){number=rs.getInt(1);}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnnumber;}//返回预编译通道查询的sql对应的rs结果集的条数publicintgetRsRowCount(Stringsql,Stringtype,ListcsList){intnumber=0;Stringpsql="selectcount(*)from("+sql+")tmpsql";rs=select(psql,type,csList);try{if(rs.next()){number=rs.getInt(1);57 2014届毕业设计(论文)}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnnumber;}//定义一组与操作有关的方法//使用普通通道执行的selectpublicResultSetselect(Stringsql){ResultSetprs=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.prepareStatement(sql);//验证传入的参数和sql中的参数个数一致//将参数设置进当前的预编译通道setPrepareStatement(pstmt,csList);prs=pstmt.executeQuery();}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}returnprs;57 2014届毕业设计(论文)}获取验证码的具体实现是:publicclassYzmextendsHttpServlet{privateintwidth=100;privateintheight=32;privatefinalStringSZ="0123456789";privatefinalStringZM="ABCDEFGHIJKLMOPQRSTUVWXYZ";privatefinalStringHZ="u6211u4F60u4ED6u7231u4E0Au5BF9u65B9u79BBu5F00u5BB6u4F53u80B2u76D8u53E3u770Bu5417";owsIOExceptionifanerroroccurredpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//在内存中构建的一副图片BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//仅仅产生了一个内存空间//在上述空间中画图//得到画笔Graphicsgraphics=image.getGraphics();//开始画//画一个边框drawBk(graphics);drawBj(graphics);drawSjx(graphics);Stringlx="sz";Stringnr=getRandomNr(lx);HttpSessionsession=request.getSession();session.setAttribute("yzm",nr);//将生成的验证码图片保存在服务器端Cookiecookie=newCookie("JSESSIONID",session.getId());cookie.setMaxAge(60*60);//此处的时间一定和服务端session的有效时间配合使用cookie.setPath(request.getContextPath());response.addCookie(cookie);drawNr(graphics,nr,lx);response.setHeader("Cache-Control","no-cache");response.setHeader("Expires","0");response.setHeader("Pragma","no-cache");response.setContentType("image/jpeg");ServletOutputStreamsos=response.getOutputStream();ImageIO.write(image,"jpeg",sos);sos.flush();sos.close();57 2014届毕业设计(论文)}//画随机线privatevoiddrawSjx(Graphicsgraphics){Randomrandom=newRandom();for(inti=0;i<5;i++){graphics.setColor(getRandomColor(130,160));intx1=1+random.nextInt(width-2);inty1=1+random.nextInt(height-2);intx2=1+random.nextInt(width-2);inty2=1+random.nextInt(height-2);graphics.drawLine(x1,y1,x2,y2);}}//画内容到图形中privatevoiddrawNr(Graphicsgraphics,Stringnr,Stringlx){if(nr!=null&&nr.length()>0){intbj=6;if("zm".equals(lx)||"sz".equals(lx)){graphics.setFont(newFont("宋体",Font.BOLD,30));}else{graphics.setFont(newFont("宋体",Font.PLAIN,26));bj=1;}//graphics.drawString(内容,x轴坐标,y轴坐标(原点在图片下部));for(inti=0;i255){min=0;}if(max<0||max>255){max=255;}Randomrandom=newRandom();intr=min+random.nextInt(max-min);intg=min+random.nextInt(max-min);intb=min+random.nextInt(max-min);returnnewColor(r,g,b);}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}}密码加密的具体业务是://产生md5字符串方法publicstaticStringgetMd5(Stringstr){Stringrstr=str;try{MessageDigestmessageDigest=MessageDigest.getInstance("md5");BASE64Encoderencoder=newBASE64Encoder();rstr=encoder.encode(messageDigest.digest(str.getBytes()));}catch(NoSuchAlgorithmExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();57 2014届毕业设计(论文)}returnrstr;}publicstaticTconvertFirstResultSetToBean(ResultSetrs,Classclazz){Tt=null;try{if(rs!=null){//说明结果集有内容String[]columns=null;//获取所有查询出来的结果集得字段名称ResultSetMetaDatarsmd=rs.getMetaData();//得到结果集列数intcolumnCount=rsmd.getColumnCount();columns=newString[columnCount];//输出此结果集的所有列名for(inti=1;i<=columnCount;i++){columns[i-1]=rsmd.getColumnName(i).toLowerCase();}if(rs.next()){t=(T)clazz.newInstance();//初始化bean对象if(columns!=null&&columns.length>0){for(Stringzdmc: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));}}}}}}}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnt;57 2014届毕业设计(论文)}publicstaticListconvertResultSetToList(ResultSetrs,Classclazz){Listlist=null;try{if(rs!=null){//说明结果集有内容String[]columns=null;//获取所有查询出来的结果集得字段名称ResultSetMetaDatarsmd=rs.getMetaData();//得到结果集列数intcolumnCount=rsmd.getColumnCount();columns=newString[columnCount];//输出此结果集的所有列名for(inti=1;i<=columnCount;i++){columns[i-1]=rsmd.getColumnName(i).toLowerCase();}list=newArrayList();while(rs.next()){Tt=(T)clazz.newInstance();//初始化bean对象if(columns!=null&&columns.length>0){for(Stringzdmc: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-generatedcatchblocke.printStackTrace();}returnlist;57 2014届毕业设计(论文)}//将value转换成java能认识的数据类型publicstaticObjectconvertPropertyType(Stringvalue,ClasspropertyType)throwsParseException{Objecto=value;if(propertyType==int.class){o=Integer.valueOf(value);}elseif(propertyType==double.class){o=Double.valueOf(value);}elseif(propertyType==Date.class){o=newSimpleDateFormat("yyyy-MM-dd").parse(value);}elseif(propertyType==Timestamp.class){o=newTimestamp(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss").parse(value).getTime());}elseif(propertyType==BigDecimal.class){o=newBigDecimal(value);}returno;}3.3、后台核心管理模块设计后台核心管理模块主要负责的是得到所有的商品信息,并将此信息封装到与前台界面映射的VO对象中,然后将这些对象放在一个集合里面,最后通过Gjson,将对象转换成json格式返回到前台界面。其中,商品信息是做过分页处理的,每次只得到一小部分商品信息。他的具体实现是:publicclassShellServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringtype=request.getParameter("type");Stringpage=request.getParameter("page");response.setCharacterEncoding("utf-8");PrintWriterout=response.getWriter();if("spzs".equals(type)){Stringsql="selectcount(*)fromspb";SpglDaoImpsdi=newSpglDaoImp();intcount=sdi.getCountBySql(sql);out.print(count);return;}elseif("spxx".equals(type)){57 2014届毕业设计(论文)if(!"".equals(page)){Stringsql="selectsp.spid,sp.spm,sp.xsl,sp.spjg,sp.spxx,sp.lxid,mjb.mjhym,sp.sptp,sp.mjidfrom(selecttt.*from(selectt.*,rownumasrsfrom(select*fromspb)twhererownum<="+page+"*4)ttwherett.rs>=("+page+"-1)*4+1)spleftouterjoinmjbon(sp.mjid=mjb.mjid)";SpglServiceImpssi=newSpglServiceImp();Listlist=ssi.getSpxxBySql(sql);//已经获取到商品信息//System.out.println("^^^^^^^^^^^^^^^^^");//for(inti=0;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("VARCHAR,"+((!"".equals(hyglVo.getYhm()))?hyglVo.getYhm():"null"));csList.add("VARCHAR,"+((!"".equals(hyglVo.getMm()))?hyglVo.getMm():"null"));csList.add("VARCHAR,"+((!"".equals(hyglVo.getSfzhm()))?hyglVo.getSfzhm():"null"));csList.add("VARCHAR,"+((!"".equals(hyglVo.getZsxm()))?hyglVo.getZsxm():"null"));csList.add("VARCHAR,"+("female".equals(hyglVo.getXb())?"女":"男"));csList.add("VARCHAR,"+((!"".equals(hyglVo.getDhhm()))?hyglVo.getDhhm():"null"));csList.add("VARCHAR,"+((!"".equals(hyglVo.getEamil()))?hyglVo.getEamil():"null"));Stringdz=getDz(hyglVo.getSheng()+":"+hyglVo.getShi()+":"+hyglVo.getXian()+":"+("".equals(hyglVo.getJd())?"null":hyglVo.getJd()));}returncsList;}publicStringgetDz(Stringdz){//System.out.println("dz="+dz);if(dz!=null){57 2014届毕业设计(论文)String[]str=dz.split(":");Stringsheng=str[0];Stringshi=str[1];Stringxian=str[2];Stringjd=str[3];sheng=getShengByShengId(sheng);shi=getShiByShiId(shi);xian=getXianByXianId(xian);returnsheng+"-"+shi+"-"+xian+"-"+jd;}returnnull;}publicStringgetShengByShengId(Stringid){if(id!=null&&(!"default".equals(id))){Stringsql="selectmcfromshengwheresheng_id="+id;OperateOracleoo=newOperateOracle();ResultSetrs=oo.select(sql);try{rs.next();returnrs.getString(1);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}returnnull;}publicStringgetShiByShiId(Stringid){if(id!=null&&(!"default".equals(id))){Stringsql="selectmcfromshiwhereshi_id="+id;OperateOracleoo=newOperateOracle();ResultSetrs=oo.select(sql);try{rs.next();returnrs.getString(1);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}returnnull;}publicStringgetXianByXianId(Stringid){if(id!=null&&(!"default".equals(id))){57 2014届毕业设计(论文)Stringsql="selectmcfromxianwherexian_id="+id;OperateOracleoo=newOperateOracle();ResultSetrs=oo.select(sql);try{rs.next();returnrs.getString(1);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}returnnull;}3.5、后台会员管理模块设计后台会员管理模块实现的业务是对注册用户时的用户信息进行验证。主要分为:验证用户名(查询此用户是否符合规范和此用户名是否存在),验证密码(验证密码输入是否合法),验证确认密码,验证email,和验证验证码是否正确。他的具体实现是://验证用户名publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");OperateOracleoo=newOperateOracle();Stringmsg="";Stringflag="";Stringstr="";Stringyhm=request.getParameter("yhm");//首先验证用户名是否合法,不合法直接打回response,合法再链接数据库判断if(!yhm.matches("[a-z0-9_-]{6,16}")){str="false:χ 请输入6-16位用户名(不含中文)!";}else{Stringsql="selectcount(*)fromhybwhereyhm='"+yhm+"'";ResultSetrs=oo.select(sql);try{rs.next();flag=rs.getInt(1)==0?"true":"false";if("true".equals(flag)){msg="√ 该用户名可用";}else{msg="χ 该用户已存在";}57 2014届毕业设计(论文)str=flag+":"+msg;}catch(Exceptione){}}PrintWriterout=response.getWriter();out.print(str);out.flush();out.close();}//验证密码publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("utf-8");Stringstr="";Stringmm=request.getParameter("mm");response.setCharacterEncoding("utf-8");//首先验证密码是否合法,不合法直接打回response,合法再链接数据库判断if(!mm.matches("[a-z0-9_-]{6,16}")){str="false:χ 请输入6-16位密码!";}else{str="true:√";}PrintWriterout=response.getWriter();out.print(str);out.flush();out.close();}//验证emailpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("utf-8");Stringstr="";Stringemail=request.getParameter("email");response.setCharacterEncoding("utf-8");if(!email.matches("^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$")){if(email!=""){str="false:χ email格式不正确,请重新输入!";//System.out.println(str);}}else{str="true:√";}PrintWriterout=response.getWriter();out.print(str);57 2014届毕业设计(论文)out.flush();out.close();}//验证验证码publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("utf-8");Stringyzm=request.getParameter("yzm");response.setCharacterEncoding("utf-8");HttpSessionsession=request.getSession();Stringnr=(String)session.getAttribute("yzm");Stringstr="";if(!nr.equals(yzm)){session.setAttribute("yzm","flase");str="false:χ 验证码输入错误!";}else{session.setAttribute("yzm","true");str="true:√";}PrintWriterout=response.getWriter();out.print(str);out.flush();out.close();}//验证确认密码publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("utf-8");Stringstr="";Stringmm=request.getParameter("mm");Stringqrmm=request.getParameter("qrmm");response.setCharacterEncoding("utf-8");//如果密码和确认密码一致,且不为空,那么打回正确if(mm.equals(qrmm)&&!"".equals(mm)){str="true:√";}elseif("".equals(mm)&&!mm.equals(qrmm)){//如果密码为空,确认密码不等于密码,说明,没有输入密码str="false:χ 请先输入密码!";}elseif(!"".equals(mm)&&!mm.equals(qrmm)){//如果密码不为空,确认密码和密码不想等,那么说明确认密码输入错误str="false:χ 密码输入错误,请重新输入!";}PrintWriterout=response.getWriter();out.print(str);57 2014届毕业设计(论文)out.flush();out.close();}3.6、后台商品管理模块设计商品管理模块实现的业务是得到商品详细信息数据和购物车数据。通过请求的商品id和请求类型,分别处理这两个业务。在处理商品详细信息的数据中,首先通过sql查找对应信息,然后将这些得到的数据封装到与前台页面映射的VO中,然后将此VO设置到requset域中,让JSP页面在加载的时候显示这些信息。购物车的商品处理和商品详细处理一致。他的具体实现是:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("utf-8");Stringspid=request.getParameter("spid");Stringtype=request.getParameter("type");response.setCharacterEncoding("utf-8");System.out.println(type);//如果类型等于显示详细商品if("xsxxsp".equals(type)){XsxxspVoxsxxspVo=newXsxxspVo();SpglServiceImpssi=newSpglServiceImp();Stringsql="selectspb.spid,spb.spm,spb.xsl,spb.spjg,spb.spxx,mjb.mjhym,spb.sptp,spb.spks,spb.kcl,mjb.mjid,spb.splogo"+"fromspbleftouterjoinmjbonspb.mjid=mjb.mjidwherespb.spid="+spid;xsxxspVo=ssi.getXxspVoBySql(sql);PrintWriterout=response.getWriter();//System.out.println(xsxxspVo);request.setAttribute("xxspVo",xsxxspVo);request.getRequestDispatcher("/view/spgl/xsxxsp.jsp").forward(request,response);}elseif("gwc".equals(type)){intsl=Integer.valueOf(request.getParameter("sl"));Stringks=request.getParameter("ks");SpglServiceImpssi=newSpglServiceImp();Stringsql="selectspb.spm,spb.spjg,mjb.mjhym,mjb.mjidfromspbleftouterjoinmjbonspb.mjid=mjb.mjidwherespid="+spid;GwServletImpgsi=newGwServletImp();GwcVogwcVo=gsi.getGwcVoBySql(sql);gwcVo.setSpid(Integer.valueOf(spid));gwcVo.setSl(sl);gwcVo.setKs(ks);gwcVo.setXj(gwcVo.getJg()*sl);//System.out.println(gwcVo);57 2014届毕业设计(论文)gsi.addGwcBySql(gwcVo);}}OperateOracleoo=newOperateOracle();ResultSetrs=null;SpglDaoImpsdi=newSpglDaoImp();//根据sql语句得到商品信息,返回SpglPojo的一个集合,集合中存放的都是商品信息。publicListgetSpxxBySql(Stringsql){Listlist=null;//如果sql不为空if(!"".equals(sql)){//查询数据库得到resultset结果集rs=oo.select(sql);//根据resultset结果集得到spglpojo的集合list=sdi.getSpglPojiByResultSet(rs);}returnlist;}//根据sql得到显示详细商品集合publicXsxxspVogetXxspVoBySql(Stringsql){XsxxspVoxsxxspVo=null;//如果sql不为空if(!"".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.setSpm(rs.getString(2));spglVo.setXsl(rs.getInt(3));57 2014届毕业设计(论文)spglVo.setSpjg(rs.getDouble(4));spglVo.setSpxx(rs.getString(5));spglVo.setLxid(rs.getInt(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(!"".equals(sql)){rs=oo.select(sql);if(rs!=null){try{rs.next();count=rs.getInt(1);}catch(Exceptione){}}}returncount;}//根据resultset得到xaxxspVopublicXsxxspVogetXxspByResultSet(ResultSetrs){XsxxspVoxsxxspVo=null;if(rs!=null){xsxxspVo=newXsxxspVo();try{//遍历结果集的内容while(rs.next()){//创建xsxxspVo的对象,并且赋值,添加到list中57 2014届毕业设计(论文)xsxxspVo.setSpid(rs.getInt(1));xsxxspVo.setSpm(rs.getString(2));xsxxspVo.setXsl(rs.getInt(3));xsxxspVo.setSpjg(rs.getDouble(4));xsxxspVo.setSpxx(rs.getString(5));xsxxspVo.setMjhym(rs.getString(6));xsxxspVo.setSptp(rs.getString(7));xsxxspVo.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();}}returnxsxxspVo;}*///解析指定规则的字符串的得到一个集合publicListgetListByString(Stringstr){Listlist=null;if(!"".equals(str)){String[]temp=str.split(",");list=newArrayList();//如果按指定规则分割后有值,那么将分割的值放入集合if(temp!=null&&temp.length>0){for(inti=0;igetSptpBySpid(intspid){OperateOracleoo=newOperateOracle();Stringsql="selectTPDZfromSPTPXXBwherespid="+spid;57 2014届毕业设计(论文)//通过商品id得到的商品的所有图片地址ResultSetrs1=oo.select(sql);Listlist=null;if(rs1!=null){//如果结果集有值,那么添加的list中list=newArrayList();try{while(rs1.next()){list.add(rs1.getString(1));}}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}returnlist;}3.7、后台登陆模块设计后台登陆模块实现的业务是会员的登陆和卖家的登陆,通过验证前台提交的表单是否正确来实现登陆。如果验证正确,首先建立一个和数据库对应的POJO对象,然后将数据库中的信息读取出来设置到POJO的对象中,最后将此对象设置到session域中,供前台提交购物订单时回去会员信息,卖家登陆成功后也是将对象保存在session域中。他的具体实现是:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//设置通道字符格式request.setCharacterEncoding("utf-8");//得到请求的用户名和密码Stringyhm=request.getParameter("yhm");Stringmm=request.getParameter("mm");System.out.println(mm);//链接数据库Jdbcjdbc=newJdbc();jdbc.connectSql("192.168.4.128","suzhihao","niit");Stringsql="selectmmfromhybwhereyhm='"+yhm+"'";ResultSetrs=jdbc.selectSql(sql);if(rs!=null){try{rs.next();System.out.println(rs.getString(1));if(rs.getString(1).equals(mm)){LoginDaoImpldi=newLoginDaoImp();LoginPoJologinPojo=ldi.getPojoByYhm(yhm);57 2014届毕业设计(论文)request.getRequestDispatcher("/view/shell/shell.jsp").forward(request,response);return;}}catch(Exceptione){}}request.setAttribute("msg","用户名或密码错误,请重新输入!");request.setAttribute("yhm",yhm);//response.sendRedirect("/gogo/front/login.jsp");request.getRequestDispatcher("/view/login/login.jsp").forward(request,response);}publicLoginPoJogetPojoByYhm(Stringyhm){Stringsql="selecthyid,yhm,mm,sfzhm,zsxm,xb,dhhm,email,dz,hytx,zcsj,zt,zhjefromhybwhereyhm="+yhm;OperateOracleoo=newOperateOracle();ResultSetrs=oo.select(sql);LoginPoJologinPojo=getPojoByRs(rs);returnloginPojo;}publicLoginPoJogetPojoByRs(ResultSetrs){//TODOAuto-generatedmethodstubLoginPoJologinPojo=null;if(rs!=null){try{rs.next();loginPojo=newLoginPoJo();loginPojo.setHyid(rs.getInt(1));loginPojo.setYhm(rs.getString(2));loginPojo.setMm(rs.getString(3));loginPojo.setSfzhm(rs.getString(4));loginPojo.setZsxm(rs.getString(5));loginPojo.setXb(rs.getString(6));loginPojo.setDhhm(rs.getString(7));loginPojo.setEmail(rs.getString(8));loginPojo.setDz(rs.getString(9));loginPojo.setHytx(rs.getString(10));loginPojo.setZcsj(rs.getDate(11));loginPojo.setZt(rs.getString(12));loginPojo.setZhje(rs.getDouble(13));}catch(SQLExceptione){//TODOAuto-generatedcatchblock57 2014届毕业设计(论文)e.printStackTrace();}}returnloginPojo;}3.8、后台购物模块设计后台购物模块实现的业务是处理付款,完成结算。首先,需要获得商品的ID。然后根据商品的ID得到商品的信息,然后通过卖家ID得到卖家信息,然后通过session域得到用户信息,得到上述3条信息之后,就可以将卖家中的这一商品的销售量加一,将用户的金额扣除商品的价值,给卖家增加收入。他的具体实现是:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("utf-8");Stringtype=request.getParameter("type");Stringyhid=request.getParameter("yhid");System.out.println(type);if("gwc".equals(type)){HttpSessionsession=request.getSession();LoginVologinVo=(LoginVo)session.getAttribute("loginVo");inthyid=loginVo.getHyid();Stringsql="selectzhjefromhybwherehyid="+hyid;OperateOracleoo=newOperateOracle();ResultSetrs=oo.select(sql);doubleje;try{rs.next();je=rs.getDouble(1);doublezj=Double.valueOf(request.getParameter("zj"));je=je-zj;sql="updatehybsetzhje=("+je+")";oo.iudSql(sql);LoginDaoImpldi=newLoginDaoImp();Stringyhm=loginVo.getYhm();loginVo=ldi.getPojoByYhm(yhm);session.setAttribute("loginVo",loginVo);PrintWriterout=response.getWriter();out.print("ok");}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}57 2014届毕业设计(论文)}elseif("zjadd".equals(type)){//System.out.println("aaaa");doublezj=Double.valueOf(request.getParameter("zj"));doublespjg=Double.valueOf(request.getParameter("spjg"));PrintWriterout=response.getWriter();response.setCharacterEncoding("utf-8");zj=zj+spjg;//System.out.println(zj);out.print(zj);}elseif("zjremove".equals(type)){//System.out.println("aaaa");doublezj=Double.valueOf(request.getParameter("zj"));doublespjg=Double.valueOf(request.getParameter("spjg"));PrintWriterout=response.getWriter();response.setCharacterEncoding("utf-8");zj=zj-spjg;out.print(zj);}elseif("spxx".equals(type)){intspid=Integer.valueOf(request.getParameter("spid"));doublespjg=Double.valueOf(request.getParameter("spjg"));intsl=Integer.valueOf(request.getParameter("sl"));Stringsql="selectmjid,xslfromspbwherespid="+spid;OperateOracleoo=newOperateOracle();ResultSetrs=oo.select(sql);try{rs.next();intmjid=rs.getInt(1);intxsl=rs.getInt(2);doubleje=spjg;xsl=xsl+sl;sql="updatespbsetxsl=("+xsl+")wherespid="+spid;oo.iudSql(sql);sql="selectmjsrfrommjbwheremjid="+mjid;rs=oo.select(sql);rs.next();je=je+rs.getInt(1);sql="updatemjbsetmjsr=("+je+")wheremjid="+mjid;oo.iudSql(sql);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}elseif("gw".equals(type)){System.out.println(yhid);57 2014届毕业设计(论文)Stringsql="selectspid,spm,mjyhm,mjid,ks,jg,sl,xjfromgwcbwhereyhid="+yhid;GwServletImpgsi=newGwServletImp();Listlist=gsi.getListBySql(sql);request.setAttribute("list",list);request.getRequestDispatcher("/view/gw/gwc.jsp").forward(request,response);}}3.9、tomcat服务器简介Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML(标准通用标记语言下的一个应用。)页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为8.0.0-RC1(alpha)Released。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O'Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性猫科动物)。而O'Reilly出版的介绍Tomcat的书籍(ISBN0-596-00318-8)[1]的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。3.10、oracle数据库简介ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。Oracle数据库最新版本为OracleDatabase12c。Oracle数据库12c引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如OracleMultitenant可快速整合多个数据库,而AutomaticData57 2014届毕业设计(论文)Optimization和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和其他非ORACLE的关系型产品构成。4、用ORACLE能轻松的实现数据仓库的操作。他的可用性强,可扩展性强,数据安全性强,稳定性强。他的数据结构是它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对象是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构:表、视图、序列、存储过程、同义词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,用于描述怎样使用数据库的物理空间。而其中的模式对象和关系形成了数据库的关系设计。段(Segment):是表空间中一个指定类型的逻辑存储结构,它由一个或多个范围组成,段将占用并增长存储空间。其中包括:数据段:用来存放表数据;引段:用来存放表索引;临时段:用来存放中间结果;回滚段:用于出现异常时,恢复事务。3.11、servlet运行原理servlet是在服务器上运行的小程序。这个词是在Javaapplet的环境中创造的,Javaapplet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(CGI(CommonGatewayInterface))应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Javaservlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。最早支持Servlet技术的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:客户端发送请求至服务器端;、服务器将请求信息发送至Servlet、Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求、服务器将响应返回给客户端、Servlet看起来像是通常的Java程序。Servlet导入特定的属于JavaServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。、一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。加载和实例化Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。Servlet生命周期:Server创建一个Servlet的实例,第一个客户端的请求到达Server57 2014届毕业设计(论文)Server调用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.打开主页2.登录57 2014届毕业设计(论文)3.注册4.查看商品信息57 2014届毕业设计(论文)5.添加到购物车57 2014届毕业设计(论文)57 2014届毕业设计(论文)6.修改个人信息57 2014届毕业设计(论文)7.修改卖家信息8.发布商品57 2014届毕业设计(论文)结论本设计以servlet和jsp为核心技术,搭配css样式和javascript脚本设计了一套基本完整的购物系统,经过实验论证该系统购物上拥有一定的可行性。但是想把该套系统正式运用到实际还有很多功能需要完善。前台页面不够美观,不够人性化,商城功能比较单一。全部页面时采用jsp页面编写而成。然而jsp页面需要发送请求,完成一次后台交互才能出现页面,所以用jsp页面写成的网站,耗时大,耗流量多,网站规模一大,就会出现响应速度慢,网页打不开等一系列状况。针对于本设计的实验情况,可以考虑对本系统进行以下的测试和完善:1、将所有的动态页面改成html格式的页面,当需要与后台交互的时候,通过Ajax异步通讯,获得回台数据,显示出来。这样,可以大大减少服务器的压力。2、留言管理系统的完善。实现买家,卖家和网站3方的通讯,让网站可交流能力提升,这样会让用户觉得不是一个人单调的买东西付款,而是与卖家交谈,实现真正的购物体验。3、MVC架构的优化。所有的前台页面时在view层,所有的请求发往control层,所有的业务发往model层。在model层中,service负责处理业务,dao层负责处理数据。本设计论文涉及软件、java语言、计算机等方面知识,由于以前没有学过关于本网站构建的所有内容,故对有关知识的认识难免存在不足之处,恳请老师多多指正!57 2014届毕业设计(论文)参考文献[1]解正瑞,中国电子商务发展概况,合肥联合大学计算机系。[2]李代平,软件工程设计案例教程,清华大学出版社。[3]孙卫琴,精通hibernate:java对象持久化技术详解,电子工业出版社[4]孙卫琴,精通struts.基于MVC的.java.Web设计与开发,电子工业出版社。[5]深入JAVAServlet网络编程,清华大学出版社。[6]耿祥义,张跃平.《JSP实用教程》.清华大学出版社。[7]郑阿奇.《javaEE实用教程》.电子工业出版社。[8]陈争航.《Mysql5应用开发宝典》.电子工业出版社。致谢57 2014届毕业设计(论文)57

当前文档最多预览五页,下载文档查看全文

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

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