基于java的网上商城设计与实现毕业论文设计.docx
《基于java的网上商城设计与实现毕业论文设计.docx》由会员分享,可在线阅读,更多相关《基于java的网上商城设计与实现毕业论文设计.docx(45页珍藏版)》请在冰豆网上搜索。
![基于java的网上商城设计与实现毕业论文设计.docx](https://file1.bdocx.com/fileroot1/2023-6/5/548c8911-c4b1-43eb-b89f-946843a4bd1e/548c8911-c4b1-43eb-b89f-946843a4bd1e1.gif)
基于java的网上商城设计与实现毕业论文设计
郑州财经学院毕业论文(设计)
基于JAVA的网上商城设计与实现
系部名称:
信息工程系
专业名称:
计算机科学与技术
学生姓名:
指导教师:
讲师
摘要
随着互联网技术的发展,全世界几乎所有的行业都在互联网的影响下得到了好的变化,互联网技术的逐渐成熟和发展,使生产力得到了巨大发展,可以说互联网是第四次工业革命也毫不为过。
互联网发展催生了电子商务,电子商务的到来预示着网络营销潮流的到来。
企业与客户之间的营销关系也正在逐渐由实体店面销售转变为网络电子商务营销,越来越多的企业开设自己的网上购物平台来吸引更多互联网客户,同时也大大降低了实体地点面营销的成本,在保证质量的前提下,增加了企业的收益。
本课题就是在这种环境下应运而生的,课题主要是利用SSM技术实现网上购物商城的前台与后台系统。
采用分布式与集群相配合的模式来开发和部署该系统,采用这种方法开发的商城系统不仅开发速度快,开发效率高,开发层次明确而且还能能够承载大数据量的访问,而且这套系统对当下想要进军商城网站的商家来说具有非常重要的参考价值。
关键词:
购物商城;SSM技术;设计与实现
Abstract
WiththedevelopmentofInternettechnology,almostallindustriesallovertheworldintheInternethasbeenagoodchange,Internettechnologyisgraduallymatureanddevelopment,sothatproductivityhasgotenormousdevelopment,canbesaidthattheInternetisthefourthindustrialrevolutionisalsonottoomuch.ThedevelopmentoftheInternetgavebirthtoe-commerce.Thearrivalofe-commerceindicatesthearrivalofnetworkmarketing.Betweentheenterpriseandthecustomerrelationshipmarketingisalsograduallybytheentitystoresalesintoe-commercenetworkmarketing,moreandmoreenterprisessetuptheirownonlineshoppingplatformtoattractmorecustomerstotheInternet,butalsogreatlyreducesthecostofmarketingentitylocation,underthepremiseofguaranteeingquality,increasetheincomeoftheenterprise.
Thistopicisinthisenvironmentcameintobeing,themaintaskistouseSSMtechnologytoachieveonlineshoppingmallfrontandbackofficesystem.Usingdistributedandclustermatchingmodeltodevelopanddeploythesystem,usingthismethodnotonlythedevelopmentofshoppingmalldevelopmentspeed,highdevelopmentefficiency,butalsoacleardevelopmentlevelcapableofcarryingalargeamountofdataaccess,andthissystemhasveryimportantreferencevalueforthecurrentArmywantedtoenterthemallsitebusinesses.
Keyword:
Shoppingmall;SSMtechnology;DesignandImplementation
1.绪论
1.1.研究的背景和意义
1.1.1.研究的背景
在衣食等购买方面,传统的方式是我们需要花费时间到固定的地方挑选,假设购买的东西多还需要额外的花费去运输。
但是随着中国经济的快速发展,人们对物质生活要求的提升,工作时间的不充足,购买量偏大这些问题往往会使我们感到厌烦。
如何改善人们的购物体验,如何使商家与顾客实现共赢,人们一直在尝试各种办法解决这个问题。
随着互联网技术的发展,网络与人们的日常生活也产生了千丝万缕的关系。
信息技术也改变了人们的思维方式,现在越来越多的人通过互联网来完成自己想做的事情。
随着数据库,计算机硬件,存储技术的发展,信息技术已经覆盖到日常生活的各个方面,现在人们已经离不开互联网了。
网上购物商城就是在这种大趋势的推动下产生的。
1.1.2.研究的意义
在衣食等方面网上购物商城充当着一个重要的角色,在以往我们需要花费时间去挑选去到固定的地方去买。
而现在我们只需要动动我们的手指很多东西就可以送货上门。
可以证明商城很火爆的一个列子是天猫双十一。
可以说是开辟了网上购物的一个春天,成交量超过千亿,可以说明现在互联网购物商城方面的一个发展趋势。
1.2.研究内容
本系统采用SSM搭建的分布式项目,使用Maven管理Jar使用Git作为版本的管理工具,由此将项目分为如下几个模块:
1)后台管理:
包括管理员对商品的增删改查,对商品规格参数的增删改查。
2)主页展示:
类似京东的主页面,让商品分类目展示。
3)用户注册:
用户登录成功之后才能让商品添加到购物车,用户才能购买商品。
4)用户登录:
登录使用的Redis-Session技术实现的单点登录,即在一个项目登录后其他项目无需登录。
5)Solr全文搜索引擎:
用基于Lucene开发的Solr作为搜索引擎。
6)购物车:
基于Cookie-Jsession模拟的Cookie-Redis进行用户购物信息的操作。
1.3.论文组织结构
第一章:
阐述了商城项目研究的背景与意义以及论文的组织结构
第二章:
介绍了在商城项目中用到的JavaWEB技术以及开发工具以及Eclipse中比较好的插件的用法。
第三章:
介绍了该系统的基本功能需求以及业务流程
第四章:
实现对ssm框架的整合。
对商城主要功能模块的时间
第五章:
对网上商城的前台后台进行一些数据测试保证其健壮性,稳定性。
第六章:
总结商城开发过程中用到的问题,分析优势与不足,明确下一步的工作内容。
2.商城系统开发技术及工具介绍
2.1.商城开发的核心技术
2.1.1.Jsonp简介
跨域的基本概念:
不同服务器或者同一个服务器不同的端口号他们之间进行通信这就叫做跨域
在商城项目中单点登录要实现在一个地方登录其他地方不用再重新登录,在这个地方需要用到跨域,在JSP页面使用跨域要用到Jsonp。
Jsonp:
Jsonp就是JSON的特殊使用法.因为Ajax无法接收到跨域的Json类型数据,Jsonp让跨域时返回的是一个脚本文件.脚本文件中包含了,回调函数及JSON数据.
JSONP的使用步骤:
客户端需要重点设置以下三个属性:
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它返回jsonp需要的数据格式。
他要注意的是几个属性produces:
string[],设置响应头中Content-Type,响应内容类型.代码示例如下:
@RequestMapping(value="demo",produces={MediaType.APPLICATION_JSON_UTF8_VALUE})
@ResponseBody
publicMappingJacksonValueshow(Stringcallback){
Mapmap=newHashMap<>();
map.put("a","a1");
map.put("b","b1");
MappingJacksonValuemjv=newMappingJacksonValue(map);
mjv.setJsonpFunction(callback);
returnmjv;
2.1.2.HttpClient简介
分布式项目中不同子项目之间进行信息传输需要跨域,而HttpClient是用Java代码的方式进行的跨域信息交流,下面介绍一下HttpClient。
HTTP协议应该是互联网中最重要的协议。
持续增长的WEB服务、互联网的家用电器等都在继承并拓展着Http协议,向着浏览器之外的方向发展。
虽然JDK中的J包中提供了一些基本的方法,通过Http协议来访问网络资源,但是大多数场景下,它都不够灵活和强大。
HttpCilent致力于填补这个空白,它可以提供有效的、最新的、功能丰富的包来实现Http客户端。
为了拓展,Httpclient即支持基本的Http协议,还支持Http-aware客户端程序,如WEB浏览器,WebServer客户端,以及利用OR拓展Http协议的分布式系统。
1)HttpClient的范围/特性
是一个基于Httpcore的客户端Http传输类库基于传统的(阻塞)IO内容无关
2)HttpClient不能做的事情
HttpClient不是浏览器,它是一个客户端HTTP协议传输类库。
HttpClient被用来发送和接受HTTP消息。
HttpClient不会处理HTTP消息的内容,不会进行JavaScript解析,不会关心contenttype,如果没有明确设置,HttpClientT也不会对请求进行格式化、重定向URL,或者其他任何和Http消息传输相关的功能。
代码示例如下:
POST请求
CloseableHttpClienthttpClient=HttpClients.createDefault();
HttpPostpost=newHttpPost("http:
//localhost:
8081/demo1");
Listparams=newArrayList();
params.add(newBasicNameValuePair("name","李四"));
params.add(newBasicNameValuePair("age","15"));
post.setEntity(newUrlEncodedFormEntity(params,"utf-8"));
CloseableHttpResponseresponse=httpClient.execute(post);
Stringresult=EntityUtils.toString(response.getEntity());
response.close();
httpClient.close();
GET请求:
publicvoiddoGetWithParam()throwsException{
CloseableHttpClienthttpClient=HttpClients.createDefault();
URIBuilderuriBuilder=new
URIBuilder("
uriBuilder.addParameter("query","花千骨");
HttpGetget=newHttpGet(uriBuilder.build());
CloseableHttpResponseresponse=httpClient.execute(get);
intstatusCode=response.getStatusLine().getStatusCode();
HttpEntityentity=response.getEntity();
Stringstring=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存放与本地某个Cookie特定文件夹中。
5)当用户在次发送请求时,只要能获取到某个或某些Cookie,会由浏览器帮助自动携带Cookie发送给服务端。
服务器端示例代码如下:
Cookiec=newCookie("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(Cookiec:
cs){
out.println(c.getName()+""+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.Solr简介
Solr介绍
1)作用:
一个搜索引擎。
2)SOLR实际是一个WEB项目。
3)优点:
搜索内容高亮。
对搜索关键字的突出显示。
搜索引擎方案:
目前在国内希望实现全文搜索常用解决方案。
1)使用Baidu,Google提供的API
2)使用基于Apache提供的Lucene搜索引擎实现。
Solr运行原理:
Solr实际上是基于lucceen开发的,需要通过Solr对外提供的接口,访问Solr项目.Solr接收请求,交由SolrRequestHandler,处理请求.拆分请求内容为n多个词条(一句话拆分成多段).根据词条内容,索引整个Solr中内容,最终相应给用户一个XML格式的结果,也可以是备用结果。
索引介绍:
1)查询时,从头查询到结果一行一行的查询过程叫做顺序查询。
2)索引:
建立内容和索引内容之间关系,通过找到索引内容快速定位到具体内容的过程就是索引查询(新华字典目录.)。
3)solr基于反向索引进行查询的.建立索引和内容之间关系,通过索引查找内容的过程称为反向索引。
2.2.SSM框架技术
2.2.1.框架技术概述
框架是一种通用的半成品的软件,SSM用了MVC的设计模式可以使程序易维护扩展,使程序员之间的分工比较明确,使业务逻辑与视图进行分离,简化了程序员的开发提高了工作效率,如图2-1就是框架技术在MVC三层模型所代表的角色。
图2-1框架在MVC中的角色
2.2.2.SpringMVC框架
Springmvc运行流程图如图2-2
图2-2SpringMVC执行时序图
Springmvc运行原理:
在编程中都是以spring-webmvc.jar形式存在.SpringMVC是基于front设计模式研发出来的必须有入口地址,地址是DispatcherServlet。
DispatcherServlet也是一个Servlet,在SpringMVC中ServletAPI被完整的支持.由于是一个MVC框架,所以核心是控制器.大部分执行流程都是在控制器前后完成的。
具体执行流程为:
当用户发送请求后被DispatcherSevlet进行分发,然后转交给HandlerMapping进行验证格式是否合法,如果不合法报异常,如果合法向下传递交给HandlerAdapter准备调用某个Controller,Controller在进入之前一般都需要执行HandlerInterceptor拦截器的preHandle()方法,判断是否可以调用Controller.如果可以调用才能进入Controller,当Controller执行完成后再次进入拦截的postHandle验证传递内容是否合法,如果合法交给ViewResovler视图解析器调用具体的View视图资源.调用成功后再次进入拦截器的afterCompletion做最后验证,如果一切正确,响应给客户端.
到此,SpirngMVC执行结束.
2.2.3.Mybatis框架
Mybatis运行流程图如图2-3
图2-3MYBATIS的执行流程
图2-3Mybatis的执行流程
Mybatis是持久层框架,内部封装的JDBC,不依赖于SERVLET容器在测试阶段使用比较方便。
它的运行原理如下:
运行原理就是程序执行过程,平时编写代码时只需要把配置文件转换为流后给交SqlSessionFactoryBuilder就会产生SqlSessionFactory,但实际上底层是这样实现的.实际上把配置文件流交由XMLConfigBuilder进行解析,解析后把所有配置信息封装到Configuration中,再把Configuration传递给DefaultSqlSession
-Factory,并实例化这个类在源码可以看出DefaultSqlSessionFactory是SqlSessionFactory的实现类,所以这个时候就产生了SqlSessionFactory接口的实例..需要openSession,产生SqlSession示例,根据SqlSession实例执行事务。
最后要提交事务和关闭SqlSession通常都不关闭SqlSessionFactory,在大点的项目中,都需要用到二级缓存,所以不关闭.
2.2.4.Spring框架
Spring在实际项目是以ApplicationContext.xml配置文件文件形式存在.当加载ApplicationContext.xml后会产生ApplicationContext容器,在该容器中放置所有管理的对象.这些对象默认都是单例的.通过Scope属性可以设置对象是否单例.对象中如果还有对象就继续进行依赖注入.其实Spring主要核心包括:
IoC和AOP。
IOC,叫做控制反转,所有对象实例化的过程转交给SpringIoC组件,不用程序员手动new对象.目前主流编程语言都是面向对象语言,经常处理对象和对象之间的关系.引入SpringIoC(我们也可以叫DI)可以把我们的关注点从对象之间关系释放出来,我们只关注业务逻辑.IoC实际就解析XML或注解后通过反射机制加载对应的类,然后进行实例化或注入里面常用的设计模式包含:
单例,工厂等。
AOP是面向切面编程.把传统程序执行过程看成纵向执行过程,每个方法当作一个点.基于这些点可以进行增强处理。
形成了横向的切面,包含了原有方法和增强方法.不改变原有代码结构,添加额外功能.常用AOP功能有事务管理,权限处理,日志打印等。
其实Spring的AOP就是对代理设计模式的一个实现。
2.3.商城开发工具
2.3.1.Ecplipse及其插件
Ecplipse介绍:
Ecplipse是著名的跨平台自由集成开发环境(IDE)。
它本身是一个框架平台,支持众多功能,有很强的灵活性。
许多软件开发商以Ecplipse开发自己的IDE如MyEcplipse。
Eclipse最早由IBM公司开发,2011年贡献给开源社区,现在它由非盈利软体供应商联盟Eclipse基金会(EclipseFoundation)管理。
Eclipse常用插件介绍:
SimplePropertieseditor
一个简单实用的文本编辑器插件,可以直接将ANSII汉字或者我们比较熟悉的语种。
如在eclipse里面我们通常会实用properties属性文件,但是如果我们写的是汉字它会转化成ANsII编码的格式,使用此插件可以直接将里面的编码转换成我们想要的汉字。
EclipseClassDecompiler
整合了目前最好的2个反编译工具Jad和JD-Core,并且和EclipseClassViewer无缝集成,能够方便的使用插件查看类库源码,以及采用本插件进行Debug调试
EclipseTomcatPlugin
当我们在进行多个web项目开发或者进行学习的时候,jar包是一个麻烦的事情,我们需要频繁的去复制粘贴jar,这不仅浪费了大量的时间,而且也占用了较大的存储空间,而tomcat自定义类加载器就会起到很大的作用,这是tomcat的一个扩展点,而且tomcatplugin也使用这个扩展点自定义了一个loder我们以后就只需要导jar就行了不需要额外的再复制粘贴jar。
2.3.2.Tomcat服务器
Tomcat服务器是一个免费的开放源代码的WEB应用服务器。
Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的核心项目,由Apache,Sun和其他一些公司及个人共同开发而成