1、 学号341124 郑州成功财经学院毕业论文(设计)基于JAVA网上商城设计与实现系 部 名 称:信息工程系专 业 名 称:计算机科学与技术学 生 姓 名:陈峰指 导 教 师:李晓东 讲师 二一七年四月摘要随着互联网技术发展,全世界几乎所有行业都在互联网影响下得到了好变化,互联网技术逐渐成熟和发展,使生产力得到了巨大发展,可以说互联网是第四次工业革命也毫不为过。互联网发展催生了电子商务,电子商务到来预示着网络营销潮流到来。公司与客户之间营销关系也正在逐渐由实体店面销售转变为网络电子商务营销,越来越多公司开设自己网上购物平台来吸引更多互联网客户,同步也大大减少了实体地点面营销成本,在保证质量前提
2、下,增长了公司收益。本课题就是在这种环境下应运而生,课题重要是运用SSM技术实现网上购物商城前台与后台系统。采用分布式与集群相配合模式来开发和布置该系统,采用这种办法开发商城系统不但开发速度快,开发效率高,开发层次明确并且还能可以承载大数据量访问,并且这套系统对当下想要进军商城网站商家来说具备非常重要参照价值。核心词:购物商城;SSM技术;设计与实现AbstractWith the development of Internet technology,almost all industries all over the world in the Internet has been a good
3、 change,Internet technology is gradually mature and development,so that productivity has got enormous development,can be said that the Internet is the fourth industrial revolution is also not too much. The development of the Internet gave birth to e-commerce. The arrival of e-commerce indicates the
4、arrival of network marketing. Between the enterprise and the customer relationship marketing is also gradually by the entity store sales into e-commerce network marketing,more and more enterprises set up their own online shopping platform to attract more customers to the Internet,but also greatly re
5、duces the cost of marketing entity location,under the premise of guaranteeing quality,increase the income of the enterprise.This topic is in this environment came into being,the main task is to use SSM technology to achieve online shopping mall front and back office system. Using distributed and clu
6、ster matching model to develop and deploy the system,using this method not only the development of shopping mall development speed,high development efficiency,but also a clear development level capable of carrying a large amount of data access,and this system has very important reference value for t
7、he current Army wanted to enter the mall site businesses.Key word:Shopping mall;SSM technology;Design and Implementation目录1. 绪论11.1. 研究背景和意义11.1.1. 研究背景11.1.2. 研究意义11.2. 研究内容11.3. 论文组织构造22. 商城系统开发技术及工具简介32.1. 商城开发核心技术32.1.1. Jsonp简介32.1.2. HttpClient简介42.1.3. Cookie简介52.1.4. Session简介62.1.5. Solr简介7
8、2.2. SSM框架技术82.2.1. 框架技术概述82.2.2. SpringMVC框架92.2.3. Mybatis框架102.2.4. Spring框架112.3. 商城开发工具112.3.1. Ecplipse及其插件112.3.2. Tomcat服务器122.3.3. MySQL数据库122.3.4. Redis数据库123. 商城系统项目需求分析143.1. 目的143.2. 商城业务流程图143.2.1. 商城后台业务流程图143.2.2. 商城前台务流程图154. 商城系统设计及实现174.1. 商城总体开发架构174.2. 商城框架实现184.2.1. Spring整合Spr
9、ingMVC184.2.2. Spring整合Mybatis194.2.3. Spring整合Jedis204.3. 商城重要功能模块实现214.3.1. 商城后台商品管理实现214.3.2. 商城后台内容管理实现244.3.3. 商城前台单点登录实现264.3.4. 商城前台solr全文搜索实现295. 商城系统运营成果325.1. 商城后台运营成果325.1.1. 商城前台新增产品325.1.2. 商城前台商品内容管理335.2. 商城前台运营成果345.2.1. 商城前台顾客搜索345.2.2. 商城前台顾客注册355.2.3. 商城顾客购物车366. 总结以及展望38参照文献39道谢4
10、01. 绪论1.1. 研究背景和意义1.1.1. 研究背景 在衣食等购买方面,老式方式是咱们需要耗费时间到固定地方挑选,假设购买东西多还需要额外耗费去运送。但是随着中华人民共和国经济迅速发展,人们对物质生活规定提高,工作时间不充分,购买量偏大这些问题往往会使咱们感到厌烦。如何改进人们购物体验,如何使商家与顾客实现共赢,人们始终在尝试各种办法解决这个问题。随着互联网技术发展,网络与人们寻常生活也产生了千丝万缕关系。信息技术也变化了人们思维方式,当前越来越多人通过互联网来完毕自己想做事情。随着数据库,计算机硬件,存储技术发展,信息技术已经覆盖到寻常生活各个方面,当前人们已经离不开互联网了。网上购物
11、商城就是在这种大趋势推动下产生。1.1.2. 研究意义在衣食等方面网上购物商城充当着一种重要角色,在以往咱们需要耗费时间去挑选去到固定地方去买。而当前咱们只需要动动咱们手指诸多东西就可以送货上门。可以证明商城很火爆一种列子是天猫双十一。可以说是开辟了网上购物一种春天,成交量超过千亿,可以阐明当前互联网购物商城方面一种发展趋势。1.2. 研究内容本系统采用SSM搭建分布式项目,使用Maven管理Jar使用Git作为版本管理工具,由此将项目分为如下几种模块:1)后台管理:涉及管理员对商品增删改查,对商品规格参数增删改查。2)主页展示:类似京东主页面,让商品分类目展示。3)顾客注册:顾客登录成功之后
12、才干让商品添加到购物车,顾客才干购买商品。4)顾客登录:登录使用Redis-Session技术实现单点登录,即在一种项目登录后其她项目无需登录。5)Solr全文搜索引擎:用基于Lucene开发Solr作为搜索引擎。6)购物车:基于Cookie-Jsession模仿Cookie-Redis进行顾客购物信息操作。1.3. 论文组织构造第一章 :阐述了商城项目研究背景与意义以及论文组织构造第二章 :简介了在商城项目中用到JavaWEB技术以及开发工具以及Eclipse中比较好插件用法。第三章 :简介了该系统基本功能需求以及业务流程第四章 :实现对ssm框架整合。对商城重要功能模块时间第五章 :对网上
13、商城前台后台进行某些数据测试保证其健壮性,稳定性。第六章 :总结商城开发过程中用到问题,分析优势与局限性,明确下一步工作内容。2. 商城系统开发技术及工具简介2.1. 商城开发核心技术2.1.1. Jsonp简介跨域基本概念:不同服务器或者同一种服务器不同端标语她们之间进行通信这就叫做跨域在商城项目中单点登录要实当前一种地方登录其她地方不用再重新登录,在这个地方需要用到跨域,在JSP页面使用跨域要用到Jsonp。Jsonp:Jsonp就是JSON特殊使用法.由于Ajax无法接受到跨域Json类型数据,Jsonp让跨域时返回是一种脚本文献.脚本文献中包括了,回调函数及JSON数据.JSONP使用
14、环节:客户端需要重点设立如下三个属性:1)dataType:jsonp ,响应成果类型2)jsonp:callback:,祈求时传递回调办法名参数名3)jsonpCallback:abc,传递过去回调办法名代码示例如下:$.ajax(url:http:/localhost:8081/demo,dataType:jsonp,jsonp:callback,jsonpCallback:abc,type:POST,success:function(data)alert(data.a+ +匿名方式+ data.b););服务器端使用是由Spring封装MappingJacksonValue它返回json
15、p需要数据格式。她要注意是几种属性produces:string,设立响应头中Content-Type,响应内容类型.代码示例如下:RequestMapping(value=demo,produces=MediaType.APPLICATIO N_JSON_UTF8_VALUE)ResponseBodypublic MappingJacksonValue show(String callback)Map map = new HashMap();map.put(a,a1);map.put(b,b1);MappingJacksonValue mjv = new MappingJacksonValu
16、e(map);mjv.setJsonpFunction(callback);return mjv;2.1.2. HttpClient简介分布式项目中不同子项目之间进行信息传播需要跨域,而HttpClient是用Java代码方式进行跨域信息交流,下面简介一下HttpClient。 HTTP合同应当是互联网中最重要合同。持续增长WEB服务、互联网家用电器等都在继承并拓展着 Http 合同,向着浏览器之外方向发展。虽然 JDK中 J 包中提供了某些基本办法,通过 Http 合同来访问网络资源,但是大多数场景下,它都不够灵活和强大。HttpCilent致力于弥补这个空白,它可以提供有效、最新、功能丰富
17、包来实现 Http客户端。为了拓展,Httpclient 即支持基本 Http合同,还支持 Http-aware 客户端程序,如 WEB浏览器,WebServer 客户端,以及运用 OR拓展 Http合同分布式系统。1)HttpClient范畴/ 特性是一种基于 Httpcore客户端 Http传播类库基于老式(阻塞)IO内容无关2) HttpClient 不能做事情HttpClient 不是浏览器,它是一种客户端 HTTP 合同传播类库。HttpClient被用来发送和接受HTTP 消息。HttpClient 不会解决 HTTP 消息内容,不会进行 JavaScript 解析,不会关怀con
18、tent type,如果没有明确设立,HttpClient T 也不会对祈求进行格式化、重定向 URL,或者其她任何和 Http 消息传播有关功能。代码示例如下:POST祈求CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost post = new HttpPost(http:/localhost:8081/demo1);List params = new ArrayList();params.add(new BasicNameValuePair(name,李四);params.add(new BasicNa
19、meValuePair(age,15);post.setEntity(new UrlEncodedFormEntity(params,utf-8);CloseableHttpResponse response = httpClient.execute(post);String result = EntityUtils.toString(response.getEntity();response.close();httpClient.close();GET祈求: public void doGetWithParam() throws Exception CloseableHttpClient h
20、ttpClient = HttpClients.createDefault();URIBuilder uriBuilder = new URIBuilder();uriBuilder.addParameter(query,花千骨);HttpGet get = new HttpGet(uriBuilder.build();CloseableHttpResponse response = httpClient.execute(get);int statusCode = response.getStatusLine().getStatusCode();HttpEntity entity = resp
21、onse.getEntity();String string = EntityUtils.toString(entity,utf-8);response.close();httpClient.close();2.1.3. Cookie简介Cookie概念:由服务器端产生,存储于客户端浏览器文本文献。Cookie原理:1) 在服务器端实例化Cookie对象,里面只能存储字符串内容(Cookie尽量不要存储中文)。2) 设立Cookie有效时间和作用域和有效途径。3 )随着重定向,随着响应对象响应给客户端浏览器。4 )浏览器接受到Cookie内容进行I/O操作,把Cookie存储与本地某个Cook
22、ie特定文献夹中。5 )当顾客在次发送祈求时,只要能获取到某个或某些Cookie,会由浏览器协助自动携带Cookie发送给服务端。服务器端示例代码如下:Cookie c = new Cookie(test,123);c.setMaxAge(10);c.setDomain();c.setPath(/cookie/page);res.addCookie(c);res.sendRedirect(page/index.jsp);客户端代码示例如下:%Cookie cs= request.getCookies();if(cs!=null)for(Cookie c :cs)out.println(c.ge
23、tName()+ +c.getValue()+);%2.1.4. Session简介Session是什么?由服务器端产生,存储于客户端浏览器文本文献。Session原理:1) 在服务器端实例化Cookie对象,里面只能存储字符串内容(Cookie尽量不要存储中文)。2) 设立Cookie有效时间和作用域和有效途径。3) 随着重定向,随着响应对象响应给客户端浏览器。4) 浏览器接受到Cookie内容进行I/O操作,把Cookie存储与本地某个Cookie特定文献夹中。5) 当顾客在次发送祈求时,只要能获取到某个或某些Cookie,会由浏览器协助自动携带Cookie发送给服务端。2.1.5. So
24、lr简介Solr简介1)作用:一种搜索引擎。2) SOLR实际是一种WEB项目。3) 长处:搜索内容高亮。对搜索核心字突出显示。搜索引擎方案:当前在国内但愿实现全文搜索惯用解决方案。1)使用百度,Google 提供API2)使用基于 Apache 提供Lucene 搜索引擎实现。Solr 运营原理:Solr事实上是基于lucceen开发,需要通过Solr对外提供接口,访 问Solr项目.Solr接受祈求,交由SolrRequestHandler,解决祈求.拆分祈求内容 为n各种词条(一句话拆提成多段).依照词条内容,索引整个Solr中内容,最后相应给顾客一种XML格式成果,也可以是备用成果。索
25、引简介:1)查询时,从头查询到成果一行一行查询过程叫做顺序查询。2)索引:建立内容和索引内容之间关系,通过找到索引内容迅速定位到详细内容过程就是索引查询(新华字典目录.) 。3)solr基于反向索引进行查询.建立索引和内容之间关系,通过索引查找内容过程称为反向索引。2.2. SSM框架技术2.2.1. 框架技术概述框架是一种通用半成品软件,SSM用了MVC设计模式可以使程序易维护扩展,使程序员之间分工比较明确,使业务逻辑与视图进行分离,简化了程序员开发提高了工作效率,如图2-1就是框架技术在MVC三层模型所代表角色。Servlet(C)顾客JSP(V)Service(业务逻辑解决)DAODat
26、aBase从上到下:传递是参数封装对象Mybatis从下到上:从数据库中取出成果封装对象SpringMVCSpring图2-1框架在MVC中角色2.2.2. SpringMVC框架Springmvc运营流程图如图2-2 图2-2SpringMVC执行时序图Springmvc运营原理:在编程中都是以spring-webmvc.jar形式存在.SpringMVC是基于front设计模式研发出来必要有入口地址,地址是DispatcherServlet。DispatcherServlet也是一种Servlet,在SpringMVC 中ServletAPI被完整支持.由于是一种MVC框架,因此核心是控制
27、器.大某些执行流程都是在控制器先后完毕。详细执行流程为:当顾客发送祈求后被DispatcherSevlet进行分发,然后转交给HandlerMapping进行验证格式与否合法,如果不合法报异常,如果合法向下传递交给HandlerAdapter准备调用某个Controller,Controller在进入之前普通都需要执行HandlerInterceptor拦截器preHandle()办法,判断与否可以调用Controller.如果可以调用才干进入Controller,当Controller执行完毕后再次进入拦截postHandle验证传递内容与否合法,如果合法交给ViewResovler视图解析
28、器调用品体View视图资源.调用成功后再次进入拦截器afterCompletion做最后验证,如果一切对的,响应给客户端.到此,SpirngMVC执行结束.2.2.3. Mybatis框架Mybatis运营流程图如图2-3图2-3MYBATIS执行流程图2-3Mybatis执行流程Mybatis是持久层框架,内部封装JDBC,不依赖于SERVLET容器在测试阶段使用比较以便。它运营原理如下:运营原理就是程序执行过程,平时编写代码时只需要把配备文献转换为流后给交SqlSessionFactoryBuilder就会产生SqlSessionFactory,但事实上底层是这样实现.事实上把配备文献流交
29、由XMLConfigBuilder进行解析,解析后把所有配备信息封装到Configuration中,再把Configuration传递给DefaultSqlSession-Factory,并实例化这个类在源码可以看出DefaultSqlSessionFactory是SqlSessionFactory实现类,因此这个时候就产生了SqlSessionFactory接口实例.需要openSession,产生SqlSession示例,依照SqlSession实例执行事务。最后要提交事务和关闭SqlSession普通都不关闭SqlSessionFactory,在大点项目中,都需要用到二级缓存,因此不关闭
30、.2.2.4. Spring框架Spring在实际项目是以ApplicationContext.xml配备文献文献形式存在.当加载ApplicationContext.xml后会产生ApplicationContext容器,在该容器中放置所有管理对象.这些对象默认都是单例.通过Scope属性可以设立对象与否单例.对象中如果尚有对象就继续进行依赖注入.其实Spring重要核心涉及:IoC和AOP。IOC,叫做控制反转,所有对象实例化过程转交给Spring IoC组件,不用程序员手动new对象.当前主流编程语言都是面向对象语言,经常解决对象和对象之间关系.引入Spring IoC(咱们也可以叫DI
31、)可以把咱们关注点从对象之间关系释放出来,咱们只关注业务逻辑.IoC实际就解析XML或注解后通过反射机制加载相应类,然后进行实例化或注入里面惯用设计模式包括:单例,工厂等。AOP是面向切面编程.把老式程序执行过程当作纵向执行过程,每个办法当作一种点.基于这些点可以进行增强解决。形成了横向切面,包括了原有办法和增强办法.不变化原有代码构造,添加额外功能.惯用AOP功能有事务管理,权限解决,日记打印等。其实SpringAOP就是对代理设计模式一种实现。2.3. 商城开发工具2.3.1. Ecplipse及其插件 Ecplipse简介:Ecplipse是知名跨平台自由集成开发环境(IDE)。它自身是
32、一种框架平台,支持众多功能,有很强灵活性。许多软件开发商以Ecplipse开发自己IDE如MyEcplipse。Eclipse最早由IBM公司开发,贡献给开源社区,当前它由非赚钱软体供应商联盟Eclipse基金会(Eclipse Foundation)管理。Eclipse惯用插件简介:Simple Properties editor一种简朴实用文本编辑器插件,可以直接将ANSII中文或者咱们比较熟悉语种。如在eclipse里面咱们普通会实用properties属性文献,但是如果咱们写是中文它会转化成ANsII编码格式,使用此插件可以直接将里面编码转换成咱们想要中文。Eclipse Class
33、Decompiler整合了当前最佳2个反编译工具Jad和JD-Core,并且和Eclipse Class Viewer无缝集成,可以以便使用插件查看类库源码,以及采用本插件进行Debug调试Eclipse Tomcat Plugin当咱们在进行各种web项目开发或者进行学习时候,jar包是一种麻烦事情,咱们需要频繁去复制粘贴jar,这不但挥霍了大量时间,并且也占用了较大存储空间,而tomcat自定义类加载器就会起到很大作用,这是tomcat一种扩展点,并且tomcat plugin也使用这个扩展点自定义了一种loder咱们后来就只需要导jar就行了不需要额外再复制粘贴jar。2.3.2. To
34、mcat服务器 Tomcat服务器是一种免费开放源代码WEB应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)Jakarta项目中核心项目,由Apache,Sun和其她某些公司及个人共同开发而成。由于Tomcat技术先进,性能稳定,并且免费,因而深受Java兴趣者爱慕并得到了诸多软件开发商承认,是当前比较流行WEB应用服务器。2.3.3. MySQL数据库MySQL是一种小型关系型数据库管理系统,开发者为瑞典MysqlLab公司,在被Sun收购。MySQL被广泛地应用在Internet上中小型网站。由于体积小,速度快,总体拥有成本低,特别是
35、开放源代码这一特点,许多小型公司为了减低成本而选取MySQL作为网站数据库。但是日后她又被Oracl收购,它后来发展或者收费与否还要看Oracl公司如何决断了。2.3.4. Redis数据库Redis是一种开源,先进key-value存储,并用于构建高性能,可扩展WEB应用程序完美解决方案。Redis从它许多竞争者中脱颖而出重要有如下三个重要特点1)数据库完全在内存中,使用磁盘仅用于持久性。2)有丰富数据类型。3)使用简朴以便解决速度快。3. 商城系统项目需求分析3.1. 目的基于JavaEE平台网上商城是依托于当前主流SSM框架搭建而成。重要涉及两个方面:一是后台管理,为管理员提供某些增删改
36、权限,变化手工记账效率慢,成本高现状;而前台方面,给顾客看重要涉及顾客登陆,购物车实现等,减少顾客外出购买商品所需时间。商城需要实现详细目的涉及:1)购物商城台中实现管理员对商品增长,上架,下架图片插入,对商品内容管理涉及对商品类目增长,对商品规格参数修改增长,对大广告位插入,对首页惯用图片插入。2)购物商城中前台某些涉及实现对商品整个目录构造展示,顾客单点登录,商品展示,商品详情以及规格参数展示,商品购买,购物车中商品增长删除修改。3.2. 商城业务流程图3.2.1. 商城后台业务流程图网站后台系统是商城一种核心,通过后台系统管理员可以对仓库商品进行上架,下架,新增操作,此前这些都是人工操坐
37、,人工记录,当前则改为由数据库进行一种记录大大提高了安全性,提高了工作效率,减少了运作成本。如图3-1是商城后台业务流程图。图3-1商城前台流程图概况3.2.2. 商城前台务流程图商城前台是为客户准备页面,涉及会员管理,商品购买,购物车,商品结算。当前使用这个购买平台可以留住购买者,运用会员级别制度激发顾客购买力,使用数据库来保存顾客购买记录,由此来分析顾客喜欢那些商品,那些商品高买比较少。可以最为业务分析根据,单点登录(登录一次其她地方就不用再登录)由此改进顾客体验。商城前台流程图如图3-2图3-2商城后台流程图概4. 商城系统详细设计及实现4.1. 商城总体开发架构本商城采用Ecplips
38、e搭建商城项目,EasyUI搭建后台框架,Git作为版本管理,使用Maven搭建分布式项目并管理架包,使用Linux布置项目。使用Mysql作为持久化存储介质,使用Reidis作为缓存数据库提高查询速度,使用Solr作为全文搜索引擎。商城总体开发构造图如图4-1:图4-1商城项目架构图4.2. 商城框架实现4.2.1. Spring整合SpringMVCSPRINGMVC作为视图层一种框架与SPRING配合使用重要有如下环节 1)配备包扫描器使SPRING可以自动扫描类,不用写额外代码进行辨认2)驱动注解,给springmvc提供了数据绑定功能3)视图解析器,在控制器解决结束并返回模型和视图名
39、之后,Spring 会依次调用 Spring 容器中所注册视图解析器,来查找符合条件视图。4)springmvc自动加载静态资源,这样做好处是,不必每次祈求时候都需要来加载,并且在某种状况下,这个静态资源不合用这个会出错。4.2.2. Spring整合MybatisMybatis作为持久层与SPRING整合重要有如下环节1)扫描类可以使注解正常使用 2)创立数据源,连接数据库 3)创立SqlSessionFactory实例,使咱们可以正常使用这个实例对数据库进行操作4)配备事务管理器。 5)配备声明式事物,以那些办法会被拦截 6)配备aop切面,使声明式事物开始生效。 7)配备mapper扫描器,这样就可以只需要写接口不用写实现类使dao层简化,提高开发效率。b