《基于java的网上商城设计与实现(共56页).doc》由会员分享,可在线阅读,更多相关《基于java的网上商城设计与实现(共56页).doc(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 学号2013341124 郑州成功财经学院毕业论文(设计)基于JAVA的网上商城设计与实现系 部 名 称:信息工程系专 业 名 称:计算机科学与技术学 生 姓 名:陈峰指 导 教 师:李晓东 讲师 二一七年四月专心-专注-专业摘要随着互联网技术的发展,全世界几乎所有的行业都在互联网的影响下得到了好的变化,互联网技术的逐渐成熟和发展,使生产力得到了巨大的发展,可以说互联网是第四次工业革命也毫不为过。互联网的发展催生了电子商务,电子商务的到来预示着网络营销潮流的到来。企业与客户之间的营销关系也正在逐渐由实体店面销售转变为网络电子商务营销,越来越多的企业开设自己的网上购物
2、平台来吸引更多互联网客户,同时也大大降低了实体地点面营销的成本,在保证质量的前提下,增加了企业的收益。本课题就是在这种环境下应运而生的,课题主要是利用SSM技术实现网上购物商城的前台与后台系统。采用分布式与集群相配合的模式来开发和部署该系统,采用这种方法开发的商城系统不仅开发速度快,开发效率高,开发层次明确而且还能能够承载大数据量的访问,而且这套系统对当下想要进军商城网站的商家来说具有非常重要的参考价值。关键词:购物商城;SSM技术;设计与实现AbstractWith the development of Internet technology, almost all industries a
3、ll over the world in the Internet has been a good 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
4、e-commerce. The arrival of e-commerce indicates the 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 attra
5、ct more customers to the Internet, but also greatly reduces 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 mal
6、l front and back office system. Using distributed and cluster 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 acc
7、ess, and this system has very important reference value for the current Army wanted to enter the mall site businesses.Key word: Shopping mall; SSM technology; Design and Implementation目录1. 绪论1.1. 研究的背景和意义1.1.1. 研究的背景 在衣食等购买方面,传统的方式是我们需要花费时间到固定的地方挑选,假设购买的东西多还需要额外的花费去运输。但是随着中国经济的快速发展,人们对物质生活要求的提升,工作时间
8、的不充足,购买量偏大这些问题往往会使我们感到厌烦。如何改善人们的购物体验,如何使商家与顾客实现共赢,人们一直在尝试各种办法解决这个问题。随着互联网技术的发展,网络与人们的日常生活也产生了千丝万缕的关系。信息技术也改变了人们的思维方式,现在越来越多的人通过互联网来完成自己想做的事情。随着数据库,计算机硬件,存储技术的发展,信息技术已经覆盖到日常生活的各个方面,现在人们已经离不开互联网了。网上购物商城就是在这种大趋势的推动下产生的。1.1.2. 研究的意义在衣食等方面网上购物商城充当着一个重要的角色,在以往我们需要花费时间去挑选去到固定的地方去买。而现在我们只需要动动我们的手指很多东西就可以送货上
9、门。可以证明商城很火爆的一个列子是天猫双十一。可以说是开辟了网上购物的一个春天,成交量超过千亿,可以说明现在互联网购物商城方面的一个发展趋势。1.2. 研究内容本系统采用SSM搭建的分布式项目,使用Maven管理Jar使用Git作为版本的管理工具,由此将项目分为如下几个模块:1)后台管理:包括管理员对商品的增删改查,对商品规格参数的增删改查。2)主页展示:类似京东的主页面,让商品分类目展示。3)用户注册:用户登录成功之后才能让商品添加到购物车,用户才能购买商品。4)用户登录:登录使用的Redis-Session技术实现的单点登录,即在一个项目登录后其他项目无需登录。5)Solr全文搜索引擎:用
10、基于Lucene开发的Solr作为搜索引擎。6)购物车:基于Cookie-Jsession模拟的Cookie-Redis进行用户购物信息的操作。1.3. 论文组织结构第一章 :阐述了商城项目研究的背景与意义以及论文的组织结构第二章 :介绍了在商城项目中用到的JavaWEB技术以及开发工具以及Eclipse中比较好的插件的用法。第三章 :介绍了该系统的基本功能需求以及业务流程第四章 :实现对ssm框架的整合。对商城主要功能模块的时间第五章 :对网上商城的前台后台进行一些数据测试保证其健壮性,稳定性。第六章 :总结商城开发过程中用到的问题,分析优势与不足,明确下一步的工作内容。2. 商城系统开发技
11、术及工具介绍2.1. 商城开发的核心技术2.1.1. Jsonp简介跨域的基本概念:不同服务器或者同一个服务器不同的端口号他们之间进行通信这就叫做跨域在商城项目中单点登录要实现在一个地方登录其他地方不用再重新登录,在这个地方需要用到跨域,在JSP页面使用跨域要用到Jsonp。Jsonp:Jsonp就是JSON的特殊使用法.因为Ajax无法接收到跨域的Json类型数据,Jsonp让跨域时返回的是一个脚本文件.脚本文件中包含了,回调函数及JSON数据.JSONP的使用步骤:客户端需要重点设置以下三个属性:1)dataType:jsonp ,响应结果类型2)jsonp:callback:,请求时传递
12、回调方法名的参数名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它返回jsonp需要的数据格式。他要注意的是几个属性produces:string,设置响应头中Content-Type,响应内容类型.代
13、码示例如下: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 MappingJacksonValue(map);mjv.setJsonpFunction(callback);return mjv;2.1.2. Http
14、Client简介分布式项目中不同子项目之间进行信息传输需要跨域,而HttpClient是用Java代码的方式进行的跨域信息交流,下面介绍一下HttpClient。 HTTP协议应该是互联网中最重要的协议。持续增长的WEB服务、互联网的家用电器等都在继承并拓展着 Http 协议,向着浏览器之外的方向发展。虽然 JDK中的 J 包中提供了一些基本的方法,通过 Http 协议来访问网络资源,但是大多数场景下,它都不够灵活和强大。HttpCilent致力于填补这个空白,它可以提供有效的、最新的、功能丰富的包来实现 Http客户端。为了拓展,Httpclient 即支持基本的 Http协议,还支持 Ht
15、tp-aware 客户端程序,如 WEB浏览器,WebServer 客户端,以及利用 OR拓展 Http协议的分布式系统。1)HttpClient的范围/ 特性是一个基于 Httpcore的客户端 Http传输类库基于传统的(阻塞)IO内容无关2) HttpClient 不能做的事情HttpClient 不是浏览器,它是一个客户端 HTTP 协议传输类库。HttpClient被用来发送和接受HTTP 消息。HttpClient 不会处理 HTTP 消息的内容,不会进行 JavaScript 解析,不会关心content type,如果没有明确设置,HttpClient T 也不会对请求进行格式
16、化、重定向 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 BasicNameValuePair(age, 15);post.setEntity(new U
17、rlEncodedFormEntity(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 httpClient = HttpClients.createDefault();
18、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 = response.getEntity();String string = EntityUt
19、ils.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存放与本地某个Cookie特定文件夹中。5 )当用户在次发送请求时,只要能获取到某个或某些Cook
20、ie,会由浏览器帮助自动携带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.getName()+ +c.getValue()+);%2.1.4. Sess
21、ion简介Session是什么?由服务器端产生,存放于客户端浏览器的文本文件。Session原理:1) 在服务器端实例化Cookie对象,里面只能存放字符串内容(Cookie尽量不要存放中文)。2) 设置Cookie的有效时间和作用域和有效路径。3) 伴随重定向,随着响应对象响应给客户端浏览器。4) 浏览器接收到Cookie内容进行I/O操作,把Cookie存放与本地某个Cookie特定文件夹中。5) 当用户在次发送请求时,只要能获取到某个或某些Cookie,会由浏览器帮助自动携带Cookie发送给服务端。2.1.5. Solr简介Solr介绍1)作用:一个搜索引擎。2) SOLR实际是一个W
22、EB项目。3) 优点: 搜索内容高亮。对搜索关键字的突出显示。搜索引擎方案:目前在国内希望实现全文搜索常用解决方案。1)使用Baidu, Google 提供的API2)使用基于 Apache 提供的Lucene 搜索引擎实现。Solr 运行原理:Solr实际上是基于lucceen开发的,需要通过Solr对外提供的接口,访 问Solr项目.Solr接收请求,交由SolrRequestHandler,处理请求.拆分请求内容 为n多个词条(一句话拆分成多段).根据词条内容,索引整个Solr中内容,最终相应给用户一个XML格式的结果,也可以是备用结果。索引介绍:1)查询时,从头查询到结果一行一行的查询
23、过程叫做顺序查询。2)索引:建立内容和索引内容之间关系,通过找到索引内容快速定位到具体内容的过程就是索引查询(新华字典目录.) 。3)solr基于反向索引进行查询的.建立索引和内容之间关系,通过索引查找内容的过程称为反向索引。2.2. SSM框架技术2.2.1. 框架技术概述框架是一种通用的半成品的软件,SSM用了MVC的设计模式可以使程序易维护扩展,使程序员之间的分工比较明确,使业务逻辑与视图进行分离,简化了程序员的开发提高了工作效率,如图2-1就是框架技术在MVC三层模型所代表的角色。Servlet(C)用户JSP(V)Service(业务逻辑处理)DAODataBase从上到下:传递的是
24、参数封装的对象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框架,所以核心是控制器.大部分执行
25、流程都是在控制器前后完成的。具体执行流程为:当用户发送请求后被DispatcherSevlet进行分发,然后转交给HandlerMapping进行验证格式是否合法,如果不合法报异常,如果合法向下传递交给HandlerAdapter准备调用某个Controller,Controller在进入之前一般都需要执行HandlerInterceptor拦截器的preHandle()方法,判断是否可以调用Controller.如果可以调用才能进入Controller,当Controller执行完成后再次进入拦截的postHandle验证传递内容是否合法,如果合法交给ViewResovler视图解析器调用具
26、体的View视图资源.调用成功后再次进入拦截器的afterCompletion做最后验证,如果一切正确,响应给客户端.到此,SpirngMVC执行结束.2.2.3. Mybatis框架Mybatis运行流程图如图2-3图2-3MYBATIS的执行流程图2-3Mybatis的执行流程Mybatis是持久层框架,内部封装的JDBC,不依赖于SERVLET容器在测试阶段使用比较方便。它的运行原理如下:运行原理就是程序执行过程,平时编写代码时只需要把配置文件转换为流后给交SqlSessionFactoryBuilder就会产生SqlSessionFactory,但实际上底层是这样实现的.实际上把配置文
27、件流交由XMLConfigBuilder进行解析,解析后把所有配置信息封装到Configuration中,再把Configuration传递给DefaultSqlSession-Factory,并实例化这个类在源码可以看出DefaultSqlSessionFactory是SqlSessionFactory的实现类,所以这个时候就产生了SqlSessionFactory接口的实例.需要openSession,产生SqlSession示例,根据SqlSession实例执行事务。最后要提交事务和关闭SqlSession通常都不关闭SqlSessionFactory,在大点的项目中,都需要用到二级缓存
28、,所以不关闭.2.2.4. Spring框架Spring在实际项目是以ApplicationContext.xml配置文件文件形式存在.当加载ApplicationContext.xml后会产生ApplicationContext容器,在该容器中放置所有管理的对象.这些对象默认都是单例的.通过Scope属性可以设置对象是否单例.对象中如果还有对象就继续进行依赖注入.其实Spring主要核心包括:IoC和AOP。IOC,叫做控制反转,所有对象实例化的过程转交给Spring IoC组件,不用程序员手动new对象.目前主流编程语言都是面向对象语言,经常处理对象和对象之间的关系.引入Spring Io
29、C(我们也可以叫DI)可以把我们的关注点从对象之间关系释放出来,我们只关注业务逻辑.IoC实际就解析XML或注解后通过反射机制加载对应的类,然后进行实例化或注入里面常用的设计模式包含:单例,工厂等。AOP是面向切面编程.把传统程序执行过程看成纵向执行过程,每个方法当作一个点.基于这些点可以进行增强处理。形成了横向的切面,包含了原有方法和增强方法.不改变原有代码结构,添加额外功能.常用AOP功能有事务管理,权限处理,日志打印等。其实Spring的AOP就是对代理设计模式的一个实现。2.3. 商城开发工具2.3.1. Ecplipse及其插件 Ecplipse介绍:Ecplipse是著名的跨平台自
30、由集成开发环境(IDE)。它本身是一个框架平台,支持众多功能,有很强的灵活性。许多软件开发商以Ecplipse开发自己的IDE如MyEcplipse。Eclipse最早由IBM公司开发,2011年贡献给开源社区,现在它由非盈利软体供应商联盟Eclipse基金会(Eclipse Foundation)管理。Eclipse常用插件介绍:Simple Properties editor一个简单实用的文本编辑器插件,可以直接将ANSII汉字或者我们比较熟悉的语种。如在eclipse里面我们通常会实用properties属性文件,但是如果我们写的是汉字它会转化成ANsII编码的格式,使用此插件可以直接将
31、里面的编码转换成我们想要的汉字。Eclipse Class Decompiler整合了目前最好的2个反编译工具Jad和JD-Core,并且和Eclipse Class Viewer无缝集成,能够方便的使用插件查看类库源码,以及采用本插件进行Debug调试Eclipse Tomcat Plugin当我们在进行多个web项目开发或者进行学习的时候,jar包是一个麻烦的事情,我们需要频繁的去复制粘贴jar,这不仅浪费了大量的时间,而且也占用了较大的存储空间,而tomcat自定义类加载器就会起到很大的作用,这是tomcat的一个扩展点,而且tomcat plugin也使用这个扩展点自定义了一个lode
32、r我们以后就只需要导jar就行了不需要额外的再复制粘贴jar。2.3.2. Tomcat服务器 Tomcat服务器是一个免费的开放源代码的WEB应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的核心项目,由Apache,Sun和其他一些公司及个人共同开发而成。因为Tomcat技术先进,性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了很多软件开发商的认可,是目前比较流行的WEB应用服务器。2.3.3. MySQL数据库MySQL是一个小型关系型数据库管理系统,开发者为瑞典的MysqlLab公司,在2008年被S
33、un收购。MySQL被广泛地应用在Internet上的中小型网站。由于体积小,速度快,总体拥有成本低,尤其是开放源代码这一特点,许多小型公司为了减低成本而选择MySQL作为网站数据库。但是后来他又被Oracl收购,它以后的发展或者收费与否还要看Oracl公司如何决断了。2.3.4. Redis数据库Redis是一个开源的,先进的key-value存储,并用于构建高性能,可扩展的WEB应用程序的完美解决方案。Redis从它的许多竞争者中脱颖而出主要有以下三个主要特点1)数据库完全在内存中,使用磁盘仅用于持久性。2)有丰富的数据类型。3)使用简单方便处理速度快。3. 商城系统项目需求分析3.1.
34、目标基于JavaEE平台的网上商城是依托于目前主流的SSM框架搭建而成。主要包括两个方面:一是后台管理,为管理员提供一些增删改的权限,改变手工记账效率慢,成本高的现状;而前台方面,给用户看的主要包括用户的登陆,购物车的实现等,减少用户外出购买商品所需时间。商城需要实现的具体目标包括:1)购物商城台中实现管理员对商品的增加,上架,下架图片的插入,对商品内容的管理包括对商品类目的增加,对商品规格参数的修改增加,对大广告位的插入,对首页常用图片的插入。2)购物商城中前台部分包括实现对商品整个目录结构的展示,用户单点登录,商品展示,商品详情以及规格参数的展示,商品购买,购物车中商品的增加删除修改。3.
35、2. 商城业务流程图3.2.1. 商城后台业务流程图网站后台系统是商城的一个核心,通过后台系统管理员可以对仓库的商品进行上架,下架,新增的操作,以前这些都是人工操坐,人工记录,现在则改为由数据库进行一个记录大大提高了安全性,提高了工作效率,降低了运作成本。如图3-1是商城的后台业务流程图。图3-1商城前台流程图概况3.2.2. 商城前台务流程图商城前台是为客户准备的页面,包括会员管理,商品购买,购物车,商品结算。现在使用这个购买平台可以留住购买者,利用会员等级制度激发用户的购买力,使用数据库来保存用户的购买记录,由此来分析用户喜欢那些商品,那些商品高买的比较少。可以最为业务分析的依据,单点登录
36、(登录一次其他地方就不用再登录)由此改善用户体验。商城前台流程图如图3-2图3-2商城后台流程图概4. 商城系统详细设计及实现4.1. 商城总体开发架构本商城采用Ecplipse搭建商城项目,EasyUI搭建后台框架,Git作为版本管理,使用Maven搭建分布式项目并管理架包,使用Linux部署项目。使用Mysql作为持久化存储介质,使用Reidis作为缓存数据库提高查询速度,使用Solr作为全文搜索引擎。商城总体开发结构图如图4-1:图4-1商城项目架构图4.2. 商城框架实现4.2.1. Spring整合SpringMVCSPRINGMVC作为视图层的一个框架与SPRING配合使用主要有以
37、下步骤 1)配置包扫描器使SPRING可以自动扫描类,不用写额外的代码进行识别2)驱动注解,给springmvc提供了数据绑定的功能3)视图解析器,在控制器处理结束并返回模型和视图名之后,Spring 会依次调用 Spring 容器中所注册的视图解析器,来查找符合条件的视图。4)springmvc自动加载静态资源,这样做的好处是,不必每次请求的时候都需要来加载,而且在某种情况下,这个静态资源不适用这个会出错。4.2.2. Spring整合MybatisMybatis作为持久层与SPRING整合主要有以下步骤1)扫描类可以使注解正常使用 2)创建数据源,连接数据库 3)创建SqlSessionFactory实例,使我们可以正常使用这个实例对数据库进行操作4)配置事务管理器。 5)配置声明式事物,以那些方法会被拦截 6)配置aop切面,使声明式事物开始生效。 7)配置mapper扫描器,这样就可以只需要写接口不用写实现类使dao层简化,提高开发效率。 4.2.3. Spring整合JedisSpring与jedis结合使用主要有两方面的配置1)连接池的配置property nam
限制150内