基于Spring Boot的前后端分离的电子商务网站的设计与实现.docx
《基于Spring Boot的前后端分离的电子商务网站的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Spring Boot的前后端分离的电子商务网站的设计与实现.docx(30页珍藏版)》请在冰豆网上搜索。
![基于Spring Boot的前后端分离的电子商务网站的设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-4/17/f3a96c9c-8c38-4606-a2b8-69b2a18fa785/f3a96c9c-8c38-4606-a2b8-69b2a18fa7851.gif)
基于SpringBoot的前后端分离的电子商务网站的设计与实现
基于SpringBoot的前后端分离的电子商务网站的设计与实现
DesignoftheFrontendandBackendSeparationE-commerceWebsiteBasedonSpringBoot
院(系)
计算机学院
专业
软件工程
班级
软件工程12班
学号
16210121205
学生姓名
林灿健
指导教师
林瑾
提交日期
2020年3月11日
毕业设计(论文)原创性声明
本人郑重声明:
所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行的设计(研究)工作及取得的成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人已经发表或撰写的作品及成果。
对本文的研究作出贡献的个人和集体,均已在论文中作了明确的说明。
本人完全意识到本声明的法律结果由本人承担。
毕业论文作者(签字):
签字日期:
年月日
成绩评定
成绩项
论文成绩(百分制)
折合比例
实得成绩(折合分)
指导教师成绩
30%
评阅教师成绩
20%
答辩成绩
50%
总评成绩
注:
毕业设计(论文)成绩按百分制评定。
答辩成绩不及格的(评分低于60分的),则该毕业设计(论文)总评成绩为答辩成绩
内容摘要
随着信息技术的飞快发展,各个产业中无不渗透着信息化革命,人们的生活习惯也因互联网的迅猛发展受到了改变,正如网上购物,网购的盛行使许多人对搭建电子商务平台趋之若鹜,因此,一个能快速上线且功能完备的产品便将拔得头筹抢占先机。
本课题目的是为了实现一个易维护、易开发、简洁易用、用户体验良好的在线电子商务网站。
提供了注册登录、商品搜索浏览购买以及后台管理等功能、是基于SpringBoot框架所开发的一个前后端分离的系统。
论文分析了电子商务网站的背景以及如今的在市场上的可行性及价值星,同时在技术上分析了前后端分离架构对于电子商务网站的必要性及优势,并且基于现实意义对网站进行了系统的需求分析,最终确定了该网站的功能性需求及非功能性需求,紧接着便是系统的整体架构设计以及数据库的设计,最终展示了主要模块的详细实现过程以及相关测试工作,并分析了完成该系统的时的收获以及完成后的不足之处。
关键词:
前后端分离电子商务SpringBoot
Abstract
Withtherapiddevelopmentofinformationtechnology,allindustriesarepermeatedwiththeinformationrevolution,andpeople'slivinghabitsarealsochangedbytherapiddevelopmentoftheInternet.Justlikeonlineshopping,thepopularityofonlineshoppingmakesmanypeoplerushtobuilde-commerceplatform.Therefore,aproductthatcanquicklygoonlineandhascompletefunctionswilltakethelead.
Thispaperanalyzesthenecessityandadvantagesoffront-endandback-endseparationarchitecturefore-commercewebsite,aimingtodesignane-commercewebsitewithhighmaintainability,gooduserexperience,convenientoperationandhighdevelopmentefficiency.Thenitanalyzesanddesignstherequirementsofe-commercewebsite,andfinallydesignsafullyfunctionale-commercewebsitedevelopedbyspringboot,adevelopmentframeworkbasedonJavaEE.
Keywords:
SeparationoffrontendandBackendE-CommerceSpringBoot
第一章绪论
1.1项目的开发背景
电子商务的横空出世改变了我们一贯的商务模式,电子商务模式具有着传统商务模式难以企及的优势。
随着互联网的高速发展,电子商务也日新月盛,人们在网上购买商品已经是非常平常的事情,电商网站正是其中的核心[1]。
首先,消费者通过网上购物,挣脱了多重外在因素例如时间、空间等束缚[2]。
同时对比起传统商务模式,电子商务模式突破了地域的限制,从面向某个小地区发展到通过互联网面向世界各地。
最后,电子商务模式更是节省了大量的人力资源,企业的管理成本更是能进一步的优化。
B2C(Bussiness-to-Customer,企业到用户),作为电子商务的经典模式,广泛运用在电子商务的各个层面[3]。
它类似于点对点模式,销售商可直接服务于消费者,去除了许多冗余环节。
B2C不仅大大提升了消费者的体验,同时提供了对服务方的便利。
据估计到2020年,全球的网络购物成交额或将超过4万亿美元[4]。
而2019年时双十一活动的火爆程度令人咂舌,短短几十秒的时间交易额已经突破了10亿,紧接着不到两分钟又突破了100亿的成交额,直到当天0点之前,总体成交额已经到达了2684亿元,这个数据甚至已经超过了全球几十个国家全年的GDP总值。
从这个数据也可以看出,如今的交易模式已经随着互联网而发生了巨大的改变,也意味着电商大势的到来。
1.2项目的开发目的
电商网站作为电子商务模式的核心。
如何高效、快速地开发网站,成为企业的制胜关键[5]。
以往的开发方式,如jsp+servlet等开发技术,前后端代码的耦合度过高,前端和后端的分工并不明确,这意味着往往前后端的工作是杂糅进行的,这也使得代码的可读性较差,同时也带来了开发效率低下等问题,针对以上痛点,前后端分离的架构应运而生。
前后端分离是一种架构设计而非一种具体的技术,这种架构的出现,不仅使得前后端工作解耦,同时也使得代码逻辑不再混乱更加清晰即提高了代码可读性。
而当今电子商务的快速迭代也使得其业务需求变化不断地改变,而前后端分离的架构能更好地适应不断变化的需求,具有更加良好的扩展性和适应性,同时SpringBoot这种开发框架更是完美契合了该架构,结合双方的优势便可针对到电子商务企业的关键点,高效、快速地开发一个完备的电子商务网站。
1.3项目的开发意义
电子商务如今在全球范围内的火爆程度肉眼可见,国内的的巨头有如淘宝、京东、拼多多等,而国外则有亚马逊之类的平台,可以说电子商务蕴藏着巨大的宝藏但是在市场上的竞争也是相当激烈的,而国内许多商家也开始选择从线下模式转为线上模式运营,因此也可以看出电子商务这块蛋糕虽然庞大但是想要分一块蛋糕的人也很多。
而在国内而言,想要加入电商这一行分得一杯羹,无非有这几种选择,一种是寄托于大型的流量平台如淘宝、京东、拼多多这些平台。
这种方式好处显而易见,第三方平台的平台稳定,流量也巨大,同时有这些知名企业背书,可以说是一种有安全保障也具有发展潜力的一种方式,但是如今较大型的电商平台竞争激烈,同时其成本如各种费用也逐渐提高,同时由于入驻商家较多,产品在平台的搜索权重也需要花很大心思去提高。
第二种则是寄托于社交平台如XX贴吧、微博、QQ或者微信朋友圈等渠道进行宣传销售,通过社交打广告的方式进行宣传,这种方式好处也明显,首先是无需为平台缴纳多于费用,只需要做好宣传即可。
也即是所谓的微商,但是随着法律的完善,如今这种方式逐渐被限制,同时因为这种微商模式销售的产品质量参差不齐,也使得许多路人对这些微商有一种莫名的抵触感,所以微商被限制封号也是经常发生的事
另外一种方式则是选择自建平台,将主力业务放到自己的电子商务网站来进行销售,这种方式虽然需要一定的开发和维护的成本,但是好处却也显而易见,首先是无第三方介入,主动权掌握在自己手上,用户与商家点对点进行交易,其次便是可以根据销售情况和用户的反馈及时调整平台以及业务。
而用户是具有用户黏度的,所以及时上线一个符合市场需求的稳定的并能根据市场需求不断进行快速的迭代更新的电子商务网站优势巨大。
因此,一个功能完备,可扩展性强,开发效率高且开发成本低廉的电商网站对于企业抢占市场先机,增强用户粘性的重要性无须赘述。
1.4项目的设计思路
本系统根据电子商务网站的特点,结合中小型企业的业务特点,设计了该系统的主要架构。
首先,由于如今电子商务的竞争较大,因此该系统的开发成本需要做到开发周期短,开发成本低廉。
只有如此才能抢占市场取得先机,因此在整体架构上,采用了前后端分离+RESTful的架构设计,这是一种极其适合团队开发的架构设计,可使得团队开发速度大大提升。
同时为了避免踩坑,前端技术栈选择了业内热门的Vue框架进行开发。
后端则是以Java语言进行编码,并基于现下流行的SpringBoot+Springdatajpa两大javaEE开发框架开发而成,并且选择了开源且免费的Tomcat作为服务器。
这两种框架是极为出名的轻量级开发框架,能完美契合快速开发、开发成本低廉这一需求。
最后,根据电子商务网站并发量高的特点,又选用了开源且免费的mysql作为项目数据库,并且结合redis这种优秀的nosql数据库作为缓存。
最后根据电子商务网站产品的特点,结合了ElasticSearch作为搜索服务器。
第二章相关技术分析
本章节重点介绍了开发一个电子商务网站所使用到的设计模式及相关技术。
主要介绍和分析了Spring家族的几大框架:
Spring框架、SpringBoot框架、Spirngdatajpa框架、SpringMVC框架。
同时介绍了MySQL数据库,最后介绍了一些强大的中间件Redis、ElasticSearch。
2.1MVC设计模式介绍
MVC是一种常用且使用的设计模式,M是model的缩写,表示模型层,V则是view的缩写,表示为展示或者视图层,c则是control的缩写,代表着控制层。
图2.1MVC模式图
模型代表着数据,视图代表网页,控制器则是负责将不同的数据呈现在不同的视图上。
MVC设计模式主要是为了解耦以及提高代码的复用性,将业务逻辑区分开,主要作用:
(1)控制器Controller:
控制器即是控制请求的处理逻辑,对请求进行处理,负责请求转发和重定向;
(2)视图View:
视图即是用户看到并与之交互的界面,比如HTML(静态资源),JSP(动态资源)等等。
(3)模型Model:
模型代表着一种企业规范,就是业务流程/状态的处理以及业务规则的规定。
业务流程的处理过程对其他层来说是不透明的,模型接受的请求,并返回最终的处理结果。
业务模型的设计可以说是MVC的核心。
MVC模式具有着许多方面的优势,如:
耦合性低、重用性高、生命周期成本低、部署快、可维护性高、有利于软件工程化管理等等优势。
是现下较为流行的一种设计模式。
2.2Spring框架介绍
Spring是一款基于IOC(InversionOfControl,控制翻转)和DI(DependencyInject,依赖注入)的javaEE轻量级的开发框架,旨在提高开发人员的开发效率以及系统的可维护性。
一般来说,我们常说的Spring是指SpringFramework,这是一个多模块的集合,有如下几个重要模块:
(1)SpringCore:
基础模块,Spring的其他功能都需要依赖于该库
(2)SpringAspects:
提供了与Aspects集成支持
(3)SpirngJDBC:
java的数据库连接
(4)SpringJMS:
消息服务
(5)SpringORM:
支持如Mybatis,Hibernate等ORM工具
(6)SpringWEB:
提供了Web应用程序的支持
(7)SpringAOP:
提供了面向切面编程功能
(8)Springtest:
提供了诸如JUnit等测试的支持
Spring为开发Java应用程序提供了全面的基础架构支持,可以让开发者专注于应用程序的开发。
在Spring家族中,就有着基于MVC思想设计而成的SpringMVC和SpringWebFluxWeb框架。
简而言之,Spring框架是当今开发javaEE应用级程序最大的流行框架,其具有的特性提高了开发者的开发效率,开发者只需专注于业务逻辑而无需去烦恼底层的设计。
2.3SpringMVC介绍
SpringMVC是一款使用了Java语言,基于MVC设计模式所开发而成的轻量级的用于Web开发的框架,是Spring家族中的一大成员。
同类框架还有诸如Struts,Struts2,SpringWebFlux等框架。
由于其本身便是Spring框架的一部分,这使得其配置与搭建极其便捷,SpringMVC是现下最为流行的一款Web框架。
以下是SpringMVC的主要组件:
(1)DispatcherServlet:
前端控制器,该组件负责接收及分发请求。
前端控制器将请求进行分工,并且分发给其他部件。
(2)HandlerMapping:
处理器映射器,可根据前端控制器转发而来的请求来找找Handel(处理器)。
(3)HandelAdapter:
处理器适配器,负责执行处理器并返回结果给前端控制器。
(4)Handler:
控制器,该组件负责处理用户的请求。
(5)ViewResolver:
视图解析器,可解析从处理器处理后的请求,一般处理器解析后的请求返回结果会是一个逻辑视图,视图解析器便解析该逻辑视图并且生成具体的视图对象。
(6)View:
视图,由前端人员实现,该页面对用户显示。
2.4SpringBoot介绍
在使用Spring等框架时,往往需要进行大量的配置工作,这些配置工作极其繁琐,稍有不慎全盘皆崩,但是这些配置行为并非是目的而只是手段,那么如何简化或省略这些步骤,使得开发者只需要关注业务功能呢?
SpringBoot便是解决这些问题的这样一个框架。
SpringBoot框架基本上是Spring框架的扩展,它简略或省略掉了Spring应用程序所需要的配置,能更快更高效地开发应用程序。
其有以下一些特点:
(1)内嵌了Tomcat,JettyUndertow,无需自行部署
(2)提供了pom简化Maven的配置
(3)尽可能地自动配置Spring应用
SpringBoot秉承着开箱即用的原则,集成了大量常用的第三方库,配置极少,使得开发者能够专注于业务逻辑,使用SpringBoot项目引导页面可以在极短时间内便构建一个项目,同时支持常用的IDE如:
IntellijIdea、NetBeans、Eclipse。
SpringBoot的这些特点非常契合电商网站如今追求的快速开发。
2.5Springdatajpa介绍
Springdatajpa是spring提供的一套简化JPA开发的ORM(ObjectRelationalMapping,对象关系映射)框架,按照约定的方法命名规则编写DAO层接口,就可以在不实现接口的情况下实现对数据库的访问和操作,同时也支持分页、排序、复杂查询等等功能,其底层由Hibernate实现。
2.6MySQL数据库介绍
MySQL是一款开源的关系型数据库管理系统,SQL查询语言被它所支持,也就保证了数据的多种多样的查询方式[4]。
MySQL中的My并非中文释义“我的”,而是指其创始人MichaelWidenius的女儿MyWidenius。
MySQL体积小,速度较快,支持大型的数据库,可处理千万级别的数据量,对于许多中小型企业来说是首选的数据库管理系统。
2.7Redis介绍
随着访问量的激增,传统的关系型数据库已经不足以应对大量的请求与访问,当访问量超过一定阈值时,会给数据库带来极大的压力,使得网站的相应能力大幅下降,严重时更可能造成严重宕机带来极大的损失,因此便需要借助缓存技术来进行优化。
缓存是指将数据存储与内存之中,并进行相关的备份,系统读取缓存的速度远大于读取磁盘的速度,因此选择一些不发生变化或变动性少且读取较多的数据存于内存之中,每当需要读取时不走数据库而是直接走缓存,这样一来即可提高系统的响应速度和运行速度,又减少了对主数据库的读取操作,减少了数据库的压力。
下面介绍的Redis便是这样一种数据库。
Redis是一款开源的,由ANSIC语言所编写的nosql(notonlysql,非关系型数据库)、支持网络、可基于内存亦可持久化的日志形、Key-Value的数据库,提供了多种编程语言的API。
其运行速度快,与传统数据库不同,Redis的数据是存储在内存中的,而内容存取速度快的特点也使得Redis被广泛应用在了互联网项目当中,Redis的存取速度极快,据官方介绍,其读取速度可达到30万此每秒。
但由于其持久化支持较一般等缘故,不作为数据的主数据库存储,一般配合如MySQL等传统关系型数据库使用。
Redis具有以下特性:
(1)持久化机制:
Redis使用缓存把数据存储在内存中,并不代表其数据便无法持久化,相反,Redis提供了RDB和AOF等方式支持持久化,可将缓存中的数据存储在磁盘之内,Redis也可重新读取数据。
(2)丰富的数据类型:
Redis有许多数据结构,如String、Hash、List、SortedSort、HyperLoglog、Geo、Pub/sub等数据结构,可应对大部分的业务场景。
(3)原子性:
Redis的所有操作都是原子性的。
总而言之,Redis具有许多优势,可满足大部分的开发需求,并对系统性能的提升有着重要的作用。
2.8ElasticSearch介绍
一般情况下,SQL查询语句是足以应对大部分的搜索需求的,但是当系统逐渐庞大后,如果每次搜索都从数据库进行搜索的话效率则极低,即使使用缓存进行搜索也存在着一个问题,那就是搜索的准确度已经无法跟上业务需求了,比如大多数情况下在数据库进行模糊查询时,必须匹配到整个字符串才会显示出结果,这并不符合用户的需求。
对此,搜索引擎技术孕育而生,如今业界已有多款产品,ElasticSearch便是其中的佼佼者
ElasticSearch是一款基于Lucene开发的分布式全文检索和分析服务器,由Java语言开发而成,是一款流行的企业级搜索引擎,安装使用方便。
ElasticSearcch可在极短的时间内对大量的数据进行存储以及搜索,并且可对搜索内容进行分析,最后显示出搜索结果,是一款强大的搜索引擎,可满足许多复杂业务场景。
2.9本章小结
本章主要介绍了电子商务网站会用到的技术及中间件。
首先介绍了最基本的思想MVC设计模式,接着分别介绍了基于该模式所选择的框架极其核心眼里,同时分析了这些框架的优点。
其次又介绍了所选用的MySQL数据库的特点,随后根据如今电子商务网站的性能需求,又引入了Redis这款优秀高速的nosql数据库。
最后根据电子商务网站较为复杂的业务需求,介绍了ElasticSearch这款强大的分布式搜索引擎。
第三章系统需求分析
本章节针对四个方面进行分析,分别通过可行性、用户角色、功能需求、非功能需求这四个方面进行全面地分析,同时将分析出的功能需求系统整体架构分为两部分辅以示例图呈现。
3.1可行性分析
从市场上,由于互联网的普及以及电子商务火爆的市场现状,业内已经有着不少优秀的同款产品如天猫、京东、拼多多等产品可作为借鉴。
同时由于经济的不断发展以及现实因素,越来越多人选择从实体转为线上,这也证明了其市场并未饱和这一事实。
因此针对于中小企业快速地打造一款低成本且功能完备的电子商务网站,并在快速上线后进行个性化开发具有相当大的可行性。
从架构上,使用MVC的设计模式,并且结合前后端分离的架构设计,是经过多方验证具有可行性的,是一种足以应付绝大多数业务场景的架构。
从技术上,使用Java语言作为后端,Java的生态极其庞大,结合该语言生态中许多优秀的开源框架如Spring大家族进行开发不仅能满足系统所需吞吐量以及各种业务场景,更是简单易用,便于开发。
不仅如此,SpringBoot+Springdatajpa这两大框架的特点更是符合了快速开发的特点。
而MySQL数据库是开源免费的,并且该数据也足以支撑中小型企业的业务需求,随后所使用的各种中间件,如Redis、ElasticSearch、nginx等也都是开源免费的,这些优势不仅使得系统的开发成本低廉,开发效率高,更是使得该系统具有强大的性能、完备的功能以及优秀的用户体验。
3.2系统用户分析
该系统是一款电子商务网站,依照现实逻辑,该系统应具有以下用户角色:
游客、注册用户、普通管理员以及权限管理员。
管理员可细分为:
用户管理员、商品管理员、订单管理员、系统管理员。
(1)游客:
游客指未进行注册,信息未成功同步到数据库的用户,游客可以浏览网站首页以及商品详情,可使用前台的搜索功能。
但是游客无法使用购买、添加购物车等功能。
(2)注册用户:
注册用户指信息已同步到数据库的用户,具有游客的功能如:
浏览网站信息、查看商品详情、使用搜索功能。
同时也可以进行登录操作,以及购买、添加购物车等功能。
(3)权限管理员:
权限管理员可以为每个管理员分配相关权限,每个管理员不应该负责全部的模块,应该垂直切分使得每一个管理员可以分别管理不同的功能,而为每一个管理员分配对应的权限便是该权限管理员的职责,不同的管理员只具备单一的权限使得系统安全性有所保障。
(4)用户管理员:
用户管理员负责注册用户的管理,可对用户进行操作管理。
用户管理员可对用户进行权限管理,如停用或者禁用用户,同时可增加用户及编辑用户,并且可对用户进行软删除或者还原。
用户管理员还具有根据用户资料进行用户定位,搜索特定群体用户查看特定用户评论,并为用户发送私信等功能。
(5)分类管理员:
商品管理员负责商品分类的管理,可对商品分类,如新增或删除分类,并且具有更为细化的权限,如修改分类属性,查看该分类销量以及评论优劣度等等。
(6)产品管理员:
产品管理员负责产品的管理,可对产品进行细化操作,如新增或下架产品,查看产品信息,并可设置产品的优先级等等功能。
(7)订单管理员:
订单管理员负责订单的管理,可对订单进行操作,如查看订单,确认发货等功能。
同时可为每个订单填充相应的信息及备注,如快递相关信息:
快递单号,运费额,快递公司名称。
(8)系统管理员:
系统管理员负责整个系统的管理,具有添加删除快递种类的功能,同时可查看删除系统的日志以及负责权限管理员的调度。
3.3功能需求分析
该系统是一个电子商务网站,通过对该系统进行分析,可分为两大服务模块:
前台服务、后台管理两大模块,这两大模块涵盖整个电子商务系统,并通过这两大模块对该系统进行管理。
前台服务模块主要包括:
(1)首页展示:
展示首页,首页包含分类展示、分类对应热销商品展示,热销商品使用轮播图展示商品缩略图。
同时首页上方有展示用户昵称以及显示登陆状态。
(2)用户模块:
可以进行注册成为注册用户并进行登录退出等操作,可查看用户注册时所填写资料,需展示头像、昵称、密码、收