《基于Spring Boot的前后端分离的电子商务网站的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于Spring Boot的前后端分离的电子商务网站的设计与实现.doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要随着信息技术的飞快发展,各个产业中无不渗透着信息化革命,人们的生活习惯也因互联网的迅猛发展受到了改变,正如网上购物,网购的盛行使许多人对搭建电子商务平台趋之若鹜,因此,一个能快速上线且功能完备的产品便将拔得头筹抢占先机。本课题目的是为了实现一个易维护、易开发、简洁易用、用户体验良好的在线电子商务网站。提供了注册登录、商品搜索浏览购买以及后台管理等功能、是基于Spring Boot框架所开发的一个前后端分离的系统。论文分析了电子商务网站的背景以及如今的在市场上的可行性及价值星,同时在技术上分析了前后端分离架构对于电子商务网站的必要性及优势,并且基于现实意义对网站进行了系统的需求分析,最终确定
2、了该网站的功能性需求及非功能性需求,紧接着便是系统的整体架构设计以及数据库的设计,最终展示了主要模块的详细实现过程以及相关测试工作,并分析了完成该系统的时的收获以及完成后的不足之处。关键词:前后端分离 电子商务 Spring BootAbstractWith the rapid development of information technology, all industries are permeated with the information revolution, and peoples living habits are also changed by the rapid dev
3、elopment of the Internet. Just like online shopping, the popularity of online shopping makes many people rush to build e-commerce platform. Therefore, a product that can quickly go online and has complete functions will take the lead.This paper analyzes the necessity and advantages of front-end and
4、back-end separation architecture for e-commerce website, aiming to design an e-commerce website with high maintainability, good user experience, convenient operation and high development efficiency. Then it analyzes and designs the requirements of e-commerce website, and finally designs a fully func
5、tional e-commerce website developed by spring boot, a development framework based on Java EE.Keywords: Separation of frontend and Backend E-Commerce Spring Boot目录第一章 绪论11.1 项目的开发背景11.2 项目的开发目的11.3 项目的开发意义21.4 项目的设计思路2第二章 相关技术分析42.1 MVC设计模式介绍42.2 Spring框架介绍52.3 SpringMVC介绍52.4 Spring Boot介绍62.5 Sprin
6、g data jpa介绍62.6 MySQL数据库介绍62.7 Redis介绍72.8 ElasticSearch介绍72.9 本章小结8第三章 系统需求分析93.1 可行性分析93.2 系统用户分析93.3 功能需求分析103.3.1 功能需求的系统结构图123.4 非功能需求分析12第四章 系统的总体设计与实现144.1 系统的层次结构设计144.2 部分子系统功能模块的设计与实现154.2.1 后台系统功能模块的设计与实现154.2.2 后台系统功能模块的设计与实现164.3 本章小结19第五章 系统的数据库的设计205.1 系统的数据库设计205.1.1 表与表的ER图设计205.1.
7、2 数据库表的设计205.2 本章小结22第六章 系统测试236.1 系统测试的意义与目的236.2 系统测试的方法236.3 系统部分子功能模块的测试246.4 本章小结24结论25参考文献26致谢27广东东软学院本科毕业设计(论文)第一章 绪论1.1 项目的开发背景电子商务的横空出世改变了我们一贯的商务模式,电子商务模式具有着传统商务模式难以企及的优势。随着互联网的高速发展,电子商务也日新月盛,人们在网上购买商品已经是非常平常的事情,电商网站正是其中的核心1。首先,消费者通过网上购物,挣脱了多重外在因素例如时间、空间等束缚2。同时对比起传统商务模式,电子商务模式突破了地域的限制,从面向某个
8、小地区发展到通过互联网面向世界各地。最后,电子商务模式更是节省了大量的人力资源,企业的管理成本更是能进一步的优化。B2C(Bussiness-to-Customer,企业到用户),作为电子商务的经典模式,广泛运用在电子商务的各个层面3。它类似于点对点模式,销售商可直接服务于消费者,去除了许多冗余环节。B2C不仅大大提升了消费者的体验,同时提供了对服务方的便利。据估计到2020年,全球的网络购物成交额或将超过4万亿美元4。而2019年时双十一活动的火爆程度令人咂舌,短短几十秒的时间交易额已经突破了10亿,紧接着不到两分钟又突破了100亿的成交额,直到当天0点之前,总体成交额已经到达了2684亿元
9、,这个数据甚至已经超过了全球几十个国家全年的GDP总值。从这个数据也可以看出,如今的交易模式已经随着互联网而发生了巨大的改变,也意味着电商大势的到来。1.2 项目的开发目的电商网站作为电子商务模式的核心。如何高效、快速地开发网站,成为企业的制胜关键5。以往的开发方式,如jsp + servlet等开发技术,前后端代码的耦合度过高,前端和后端的分工并不明确,这意味着往往前后端的工作是杂糅进行的,这也使得代码的可读性较差,同时也带来了开发效率低下等问题,针对以上痛点,前后端分离的架构应运而生。前后端分离是一种架构设计而非一种具体的技术,这种架构的出现,不仅使得前后端工作解耦,同时也使得代码逻辑不再
10、混乱更加清晰即提高了代码可读性。而当今电子商务的快速迭代也使得其业务需求变化不断地改变,而前后端分离的架构能更好地适应不断变化的需求,具有更加良好的扩展性和适应性,同时Spring Boot这种开发框架更是完美契合了该架构,结合双方的优势便可针对到电子商务企业的关键点,高效、快速地开发一个完备的电子商务网站。1.3 项目的开发意义电子商务如今在全球范围内的火爆程度肉眼可见,国内的的巨头有如淘宝、京东、拼多多等,而国外则有亚马逊之类的平台,可以说电子商务蕴藏着巨大的宝藏但是在市场上的竞争也是相当激烈的,而国内许多商家也开始选择从线下模式转为线上模式运营,因此也可以看出电子商务这块蛋糕虽然庞大但是
11、想要分一块蛋糕的人也很多。而在国内而言,想要加入电商这一行分得一杯羹,无非有这几种选择,一种是寄托于大型的流量平台如淘宝、京东、拼多多这些平台。这种方式好处显而易见,第三方平台的平台稳定,流量也巨大,同时有这些知名企业背书,可以说是一种有安全保障也具有发展潜力的一种方式,但是如今较大型的电商平台竞争激烈,同时其成本如各种费用也逐渐提高,同时由于入驻商家较多,产品在平台的搜索权重也需要花很大心思去提高。第二种则是寄托于社交平台如百度贴吧、微博、QQ或者微信朋友圈等渠道进行宣传销售,通过社交打广告的方式进行宣传,这种方式好处也明显,首先是无需为平台缴纳多于费用,只需要做好宣传即可。也即是所谓的微商
12、,但是随着法律的完善,如今这种方式逐渐被限制,同时因为这种微商模式销售的产品质量参差不齐,也使得许多路人对这些微商有一种莫名的抵触感,所以微商被限制封号也是经常发生的事另外一种方式则是选择自建平台,将主力业务放到自己的电子商务网站来进行销售,这种方式虽然需要一定的开发和维护的成本,但是好处却也显而易见,首先是无第三方介入,主动权掌握在自己手上,用户与商家点对点进行交易,其次便是可以根据销售情况和用户的反馈及时调整平台以及业务。而用户是具有用户黏度的,所以及时上线一个符合市场需求的稳定的并能根据市场需求不断进行快速的迭代更新的电子商务网站优势巨大。因此,一个功能完备,可扩展性强,开发效率高且开发
13、成本低廉的电商网站对于企业抢占市场先机,增强用户粘性的重要性无须赘述。1.4 项目的设计思路本系统根据电子商务网站的特点,结合中小型企业的业务特点,设计了该系统的主要架构。首先,由于如今电子商务的竞争较大,因此该系统的开发成本需要做到开发周期短,开发成本低廉。只有如此才能抢占市场取得先机,因此在整体架构上,采用了前后端分离+RESTful的架构设计,这是一种极其适合团队开发的架构设计,可使得团队开发速度大大提升。同时为了避免踩坑,前端技术栈选择了业内热门的Vue框架进行开发。后端则是以Java语言进行编码,并基于现下流行的Spring Boot + Spring data jpa两大javaE
14、E开发框架开发而成,并且选择了开源且免费的Tomcat作为服务器。这两种框架是极为出名的轻量级开发框架,能完美契合快速开发、开发成本低廉这一需求。最后,根据电子商务网站并发量高的特点,又选用了开源且免费的mysql作为项目数据库,并且结合redis这种优秀的nosql数据库作为缓存。最后根据电子商务网站产品的特点,结合了ElasticSearch作为搜索服务器。第二章 相关技术分析本章节重点介绍了开发一个电子商务网站所使用到的设计模式及相关技术。主要介绍和分析了Spring家族的几大框架:Spring框架、Spring Boot框架、Spirng data jpa框架、SpringMVC框架。
15、同时介绍了MySQL数据库,最后介绍了一些强大的中间件Redis、ElasticSearch。2.1 MVC设计模式介绍MVC是一种常用且使用的设计模式,M是model的缩写,表示模型层,V则是view的缩写,表示为展示或者视图层,c则是control的缩写,代表着控制层。图2.1 MVC模式图模型代表着数据,视图代表网页,控制器则是负责将不同的数据呈现在不同的视图上。MVC设计模式主要是为了解耦以及提高代码的复用性,将业务逻辑区分开,主要作用:(1) 控制器Controller:控制器即是控制请求的处理逻辑,对请求进行处理,负责请 求转发和重定向;(2) 视图View:视图即是用户看到并与之
16、交互的界面,比如HTML(静态资源),JSP(动态资源)等等。(3) 模型Model:模型代表着一种企业规范,就是业务流程/状态的处理以及业务规则的规定。业务流程的处理过程对其他层来说是不透明的,模型接受的请求,并返回最终的处理结果。业务模型的设计可以说是MVC的核心。MVC模式具有着许多方面的优势,如:耦合性低、重用性高、生命周期成本低、部署快、可维护性高、有利于软件工程化管理等等优势。是现下较为流行的一种设计模式。2.2 Spring框架介绍Spring是一款基于IOC(Inversion Of Control,控制翻转)和DI(Dependency Inject,依赖注入)的javaEE
17、轻量级的开发框架,旨在提高开发人员的开发效率以及系统的可维护性。一般来说,我们常说的Spring是指Spring Framework,这是一个多模块的集合,有如下几个重要模块:(1) Spring Core:基础模块,Spring的其他功能都需要依赖于该库(2) Spring Aspects:提供了与Aspects集成支持(3) Spirng JDBC:java的数据库连接(4) Spring JMS:消息服务(5) Spring ORM:支持如Mybatis,Hibernate等ORM工具(6) Spring WEB:提供了Web应用程序的支持(7) Spring AOP:提供了面向切面编程
18、功能(8) Spring test:提供了诸如JUnit等测试的支持Spring为开发Java应用程序提供了全面的基础架构支持,可以让开发者专注于应用程序的开发。在Spring家族中,就有着基于MVC思想设计而成的Spring MVC和Spring WebFlux Web框架。简而言之,Spring框架是当今开发javaEE应用级程序最大的流行框架,其具有的特性提高了开发者的开发效率,开发者只需专注于业务逻辑而无需去烦恼底层的设计。 2.3 SpringMVC介绍SpringMVC是一款使用了Java语言,基于MVC设计模式所开发而成的轻量级的用于Web开发的框架,是Spring家族中的一大成
19、员。同类框架还有诸如Struts,Struts2,Spring WebFlux等框架。由于其本身便是Spring框架的一部分,这使得其配置与搭建极其便捷,SpringMVC是现下最为流行的一款Web框架。以下是SpringMVC的主要组件:(1) DispatcherServlet:前端控制器,该组件负责接收及分发请求。前端控制器将请求进行分工,并且分发给其他部件。(2) HandlerMapping:处理器映射器,可根据前端控制器转发而来的请求来找找Handel(处理器)。(3) HandelAdapter:处理器适配器,负责执行处理器并返回结果给前端控制器。(4) Handler:控制器,
20、该组件负责处理用户的请求。(5) ViewResolver:视图解析器,可解析从处理器处理后的请求,一般处理器解析后的请求返回结果会是一个逻辑视图,视图解析器便解析该逻辑视图并且生成具体的视图对象。(6) View:视图,由前端人员实现,该页面对用户显示。2.4 Spring Boot介绍在使用Spring等框架时,往往需要进行大量的配置工作,这些配置工作极其繁琐,稍有不慎全盘皆崩,但是这些配置行为并非是目的而只是手段,那么如何简化或省略这些步骤,使得开发者只需要关注业务功能呢?Spring Boot便是解决这些问题的这样一个框架。Spring Boot框架基本上是Spring框架的扩展,它简
21、略或省略掉了Spring应用程序所需要的配置,能更快更高效地开发应用程序。其有以下一些特点:(1) 内嵌了Tomcat,Jetty Undertow,无需自行部署(2) 提供了pom简化Maven的配置(3) 尽可能地自动配置Spring应用Spring Boot秉承着开箱即用的原则,集成了大量常用的第三方库,配置极少,使得开发者能够专注于业务逻辑,使用Spring Boot项目引导页面可以在极短时间内便构建一个项目,同时支持常用的IDE如:Intellij Idea、NetBeans、Eclipse。Spring Boot的这些特点非常契合电商网站如今追求的快速开发。2.5 Spring d
22、ata jpa介绍Spring data jpa是spring提供的一套简化JPA开发的ORM(Object Relational Mapping,对象关系映射)框架,按照约定的方法命名规则编写DAO层接口,就可以在不实现接口的情况下实现对数据库的访问和操作,同时也支持分页、排序、复杂查询等等功能,其底层由Hibernate实现。2.6 MySQL数据库介绍MySQL是一款开源的关系型数据库管理系统,SQL查询语言被它所支持,也就保证了数据的多种多样的查询方式4。MySQL中的My并非中文释义“我的”,而是指其创始人Michael Widenius的女儿My Widenius。MySQL体积小
23、,速度较快,支持大型的数据库,可处理千万级别的数据量,对于许多中小型企业来说是首选的数据库管理系统。2.7 Redis介绍随着访问量的激增,传统的关系型数据库已经不足以应对大量的请求与访问,当访问量超过一定阈值时,会给数据库带来极大的压力,使得网站的相应能力大幅下降,严重时更可能造成严重宕机带来极大的损失,因此便需要借助缓存技术来进行优化。缓存是指将数据存储与内存之中,并进行相关的备份,系统读取缓存的速度远大于读取磁盘的速度,因此选择一些不发生变化或变动性少且读取较多的数据存于内存之中,每当需要读取时不走数据库而是直接走缓存,这样一来即可提高系统的响应速度和运行速度,又减少了对主数据库的读取操
24、作,减少了数据库的压力。下面介绍的Redis便是这样一种数据库。Redis是一款开源的,由ANSI C语言所编写的nosql(not only sql,非关系型数据库)、支持网络、可基于内存亦可持久化的日志形、Key-Value的数据库,提供了多种编程语言的API。其运行速度快,与传统数据库不同,Redis的数据是存储在内存中的,而内容存取速度快的特点也使得Redis被广泛应用在了互联网项目当中,Redis的存取速度极快,据官方介绍,其读取速度可达到30万此每秒。但由于其持久化支持较一般等缘故,不作为数据的主数据库存储,一般配合如MySQL等传统关系型数据库使用。Redis具有以下特性:(1)
25、 持久化机制:Redis使用缓存把数据存储在内存中,并不代表其数据便无法持久化,相反,Redis提供了RDB和AOF等方式支持持久化,可将缓存中的数据存储在磁盘之内,Redis也可重新读取数据。(2) 丰富的数据类型:Redis有许多数据结构,如String、Hash、List、SortedSort、HyperLoglog、Geo、Pub/sub等数据结构,可应对大部分的业务场景。(3) 原子性:Redis的所有操作都是原子性的。总而言之,Redis具有许多优势,可满足大部分的开发需求,并对系统性能的提升有着重要的作用。2.8 ElasticSearch介绍一般情况下,SQL查询语句是足以应对
26、大部分的搜索需求的,但是当系统逐渐庞大后,如果每次搜索都从数据库进行搜索的话效率则极低,即使使用缓存进行搜索也存在着一个问题,那就是搜索的准确度已经无法跟上业务需求了,比如大多数情况下在数据库进行模糊查询时,必须匹配到整个字符串才会显示出结果,这并不符合用户的需求。对此,搜索引擎技术孕育而生,如今业界已有多款产品,ElasticSearch便是其中的佼佼者ElasticSearch是一款基于Lucene开发的分布式全文检索和分析服务器,由Java语言开发而成,是一款流行的企业级搜索引擎,安装使用方便。ElasticSearcch可在极短的时间内对大量的数据进行存储以及搜索,并且可对搜索内容进行
27、分析,最后显示出搜索结果,是一款强大的搜索引擎,可满足许多复杂业务场景。2.9 本章小结本章主要介绍了电子商务网站会用到的技术及中间件。首先介绍了最基本的思想MVC设计模式,接着分别介绍了基于该模式所选择的框架极其核心眼里,同时分析了这些框架的优点。其次又介绍了所选用的MySQL数据库的特点,随后根据如今电子商务网站的性能需求,又引入了Redis这款优秀高速的nosql数据库。最后根据电子商务网站较为复杂的业务需求,介绍了ElasticSearch这款强大的分布式搜索引擎。第三章 系统需求分析本章节针对四个方面进行分析,分别通过可行性、用户角色、功能需求、非功能需求这四个方面进行全面地分析,同
28、时将分析出的功能需求系统整体架构分为两部分辅以示例图呈现。3.1 可行性分析从市场上,由于互联网的普及以及电子商务火爆的市场现状,业内已经有着不少优秀的同款产品如天猫、京东、拼多多等产品可作为借鉴。同时由于经济的不断发展以及现实因素,越来越多人选择从实体转为线上,这也证明了其市场并未饱和这一事实。因此针对于中小企业快速地打造一款低成本且功能完备的电子商务网站,并在快速上线后进行个性化开发具有相当大的可行性。从架构上,使用MVC的设计模式,并且结合前后端分离的架构设计,是经过多方验证具有可行性的,是一种足以应付绝大多数业务场景的架构。从技术上,使用Java语言作为后端,Java的生态极其庞大,结
29、合该语言生态中许多优秀的开源框架如Spring大家族进行开发不仅能满足系统所需吞吐量以及各种业务场景,更是简单易用,便于开发。不仅如此,Spring Boot + Spring data jpa这两大框架的特点更是符合了快速开发的特点。而MySQL数据库是开源免费的,并且该数据也足以支撑中小型企业的业务需求,随后所使用的各种中间件,如Redis、ElasticSearch、nginx等也都是开源免费的,这些优势不仅使得系统的开发成本低廉,开发效率高,更是使得该系统具有强大的性能、完备的功能以及优秀的用户体验。3.2 系统用户分析该系统是一款电子商务网站,依照现实逻辑,该系统应具有以下用户角色:
30、游客、注册用户、普通管理员以及权限管理员。管理员可细分为:用户管理员、商品管理员、订单管理员、系统管理员。(1) 游客:游客指未进行注册,信息未成功同步到数据库的用户,游客可以浏览网站首页以及商品详情,可使用前台的搜索功能。但是游客无法使用购买、添加购物车等功能。(2) 注册用户:注册用户指信息已同步到数据库的用户,具有游客的功能如:浏览网站信息、查看商品详情、使用搜索功能。同时也可以进行登录操作,以及购买、添加购物车等功能。(3) 权限管理员:权限管理员可以为每个管理员分配相关权限,每个管理员不应该负责全部的模块,应该垂直切分使得每一个管理员可以分别管理不同的功能,而为每一个管理员分配对应的
31、权限便是该权限管理员的职责,不同的管理员只具备单一的权限使得系统安全性有所保障。(4) 用户管理员:用户管理员负责注册用户的管理,可对用户进行操作管理。用户管理员可对用户进行权限管理,如 停用或者禁用用户,同时可增加用户及编辑用户,并且可对用户进行软删除或者还原。用户管理员还具有根据用户资料进行用户定位,搜索特定群体用户查看特定用户评论,并为用户发送私信等功能。(5) 分类管理员:商品管理员负责商品分类的管理,可对商品分类,如新增或删除分类,并且具有更为细化的权限,如修改分类属性,查看该分类销量以及评论优劣度等等。(6) 产品管理员:产品管理员负责产品的管理,可对产品进行细化操作,如新增或下架
32、产品,查看产品信息,并可设置产品的优先级等等功能。(7) 订单管理员:订单管理员负责订单的管理,可对订单进行操作,如查看订单,确认发货等功能。同时可为每个订单填充相应的信息及备注,如快递相关信息:快递单号,运费额,快递公司名称。(8) 系统管理员:系统管理员负责整个系统的管理,具有添加删除快递种类的功能,同时可查看删除系统的日志以及负责权限管理员的调度。3.3 功能需求分析该系统是一个电子商务网站,通过对该系统进行分析,可分为两大服务模块:前台服务、后台管理两大模块,这两大模块涵盖整个电子商务系统,并通过这两大模块对该系统进行管理。前台服务模块主要包括:(1) 首页展示:展示首页,首页包含分类
33、展示、分类对应热销商品展示,热销商品使用轮播图展示商品缩略图。同时首页上方有展示用户昵称以及显示登陆状态。(2) 用户模块:可以进行注册成为注册用户并进行登录退出等操作,可查看用户注册时所填写资料,需展示头像、昵称、密码、收获地址,并且根据需求编辑资料,如修改昵称,修改密码,编辑收获地址。(3) 购物车表:可查看该用户的购物车列表,同时可对购物车进行详细操作,对购物车商品进行结算,新增产品数量,删除购物车商品。(4) 订单列表:可以查看订单的详情如:订单号,订单信息,订单状态(是否发货),并且可对已完成订单进行隐藏删除操作。(5) 评论列表:可对已购产品进行评论或查看历史评价,评论时显示的用户
34、名应做保密处理。(6) 商品详情:可查看每个产品的商品详情页,包括价格、信息、促销价格、产品参数、评论(7) 付款功能:对心仪产品选择对应数量,填写相关订单信息,并提交订单进行购买。(8) 搜索功能:可在页面搜索栏进行关键词搜索,查找所需商品,关键词搜索应对每个关键字进行拆分,达到智能搜索的目的。后台管理模块包括:(1) 分类管理:管理商品分类,具体可为增加,删除,编辑等功能,可决定分类的优先级以及根据评论决定是否展示该分类等功能,并且分类管理还可为分类设置具体的分类属性,并为分类属性设置默认参数功能。(2) 产品管理:管理具体产品,可具体为上架、下架、编辑产品等,可为产品设置名称、价格、描述
35、、库存量等等功能,同时还可以设定产品的创建日期,更新日期或者商品的下架日期以及商品的状态。(3) 用户管理:管理注册用户,用户管理员并无删除用户的功能,只具备新增用户,查看用户以及编辑用户资料等功能,为了防止数据丢失并不提供删除功能,删除用户应由前台管理。同时用户管理员还可以停用用户。(4) 订单管理:管理订单,仅支持编辑订单以及提供订单额外信息设置功能,订单编辑功能如:确认发货,订单取消等功能,同时订单取消后管理员可软删除。额外信息如:快递种类,快递单号,运费等。(5) 权限管理:可为每个管理员分配对应权限,并根据情况暂停或为该管理员新增权限,每个权限管理员仅可操作其他除系统管理员之外的权限
36、,无法删除或新增管理员。(6) 系统管理:管理整个系统,如查看系统操作日志,添加编辑或删除快递相关信息,并可新增和设置对应的权限管理员。3.3.1 功能需求的系统结构图通过对功能需求的分析,可分为前台服务以及后台管理两大模块系统结构图图3.1系统结构功能图3.4 非功能需求分析本小节将分别从可维护性、可扩展性、系统并发性、系统安全性、用户体验性五大非功能性需求进行分析:(1) 系统的可维护性:该系统需严格秉承着MVC设计模式以及前后分离的架构进行设计,前后端分离使得前端与后端的分工明确,前后端的代码耦合度低,后端无需返回页面只需返回相关数据交于前端用于展示,而前端则调用后端相关的接口获取数据,
37、未获取数据时也可Mock数据进行开发。而MVC设计模式则使得后端开发层次分明,业务代码与逻辑代码分隔开,降低各个服务模块的耦合度。同时需编写好详细的相关文档,规范代码风格,对代码进行规范化注释。(2) 系统的可扩展性:系统应随时可扩展功能,采用MVC设计模式以及前后端分离架构的系统可随时进行业务扩展。(3) 系统的并发性:电子商务网站需要具备一定的性能,性能是提高用户体验极其重要的一点,响应时间的快慢与用户的体验成正相关,因此该系统应该采用前后端分离的方式,前端异步发送请求获取数据,减少请求响应时间,同时后端也只需传输JSON数据返回给前端即可,并且引入Redis作为缓存来减少数据库的压力,并
38、提高部分场景的响应速度,同时使用nginx作为负载均衡以及动静分离。(4) 系统的安全性:用户注册登录时,请求参数应加密处理,同时落库到数据库的密码数据不应该明文保存,应保存经过加密后的数据防止被拖库后信息泄露。同时设置salt作为加密参数,防止被暴力破解。在后台管理模块中,每个模块的管理员都只拥有对应的权限,保障系统安全。(5) 用户的体验性:系统的首页应简洁明了,操作流程应简单并辅有提示性语句,同时功能需完备,具有正常的网购功能,系统若响应较慢或出错时也应有对应提示页面,并且能为用户选择性推送首页产品。第四章 系统的总体设计与实现本章节系统地介绍了本论文课题中电子商务网站的整体设计。将会从
39、系统的软件层面、架构设计、数据库设计、功能模块设计以及UI设计介绍。4.1 系统的层次结构设计图4.1系统软件层次架构图该系统使用了分层的思想,垂直分离为多个层次,减少了模块之间的耦合度,从前后端角度来看,前端只需关注前端UI以及展示层的渲染,而后端则只需要关注业务层和数据层即可,这便是前后端分离的思想,前端通过ajax异步请求后端返回json数据来进行渲染,这样前后端的便可并行开发,对比传统的如jsp等技术,不仅使得前后端分工明确,更是大大加快了开发效率以及减少了模块的耦合,前后端开发人员也可以专注于自己的领域,对于团队开发好处不言而喻。 本电商网站是基于Spring Boot框架的单体架构
40、,前后端通过json数据进行交互,并经过nginx进行负载均衡与动静分离。后端分为数据层与业务层,数据层与mysql数据库进行交互,同时还使用了redis来缓存热点数据,加快系统的响应速度,在高并发的情况下,redis基于内存的优点可提供极快响应速度,这极大地减少了数据库的压力,增强了系统的可用性。而对于搜索等功能而言,ElaticSearch提供了强大的搜索引擎,可根据关键字进行智能识别。业务层接受数据层返回的数据后,根据业务需求进行过滤处理将数据处理为前端所需要的数据,并进行返回,最后前端获取数据后进行渲染,同时,nginx会进行动静分离与负载均衡,以上便是整个系统的层次。该系统前端的展示
41、层与后端的业务层、数据层便是MVC三层架构的体现。4.2 部分子系统功能模块的设计与实现4.2.1 后台系统功能模块设计与实现(1)在后台管理模块中,界面较为简洁,主要以易交互、易操作等原则为主而设计,该后台管理有分类管理、用户管理、订单管理等功能、去除冗余的信息,只留下必要的内容,方便管理员进行操作。图4.2后台管理页面(2)分类管理对商品的分类进行增删改查等操作、同时也确保只有经过权限认证后的分类管理员才可以进行分类操作,分类与产品为一对多的关系,可在分类管理中进入到产品管理阶段,这是考虑到数据库中分类与产品是有外键关联的,若是单独删除某分类肯会造成脏数据,因此将分类与产品归为父子级联管理
42、。图4.3分类管理页面(3)用户管理则是对用户进行一系列的权限认证等操作,需要注意的是这里涉及为不可删除用户,这样可防止数据丢失等问题,删除用户应该是用户行为,这种操作应该由用户自己来完成,后台仅对用户做管理以及权限等处理。图4.4 用户管理页面(4)订单管理则是对订单的发货收货等进行操作,这里的数据删除也是作软删除处理,数据库中会为订单设置一个id_delete字段,表示该订单是否被删除,因为订单这种重要的数据并不建议进行真正的删除,当业务上需要对订单进行删除操作时,将is_delete字段改为Y即可。图4.5 订单管理页面4.2.2 前台系统功能模块设计与实现(1)注册的页面设计也是以简洁
43、为主,使用了最常见的注册页面,同时前端会对参数进行校验,防止恶意输入数据,在传输过程中也会进行数据加密等操作,防止明文传输。后端接受到注册信息后,会将数据存入到数据库中,同时将生产的用户id存到redis中,作登录校验中,后端存入时会对密码使用salt进行MD5混淆加密,防止被彩虹表破解或者拖库造成的数据泄露等重大安全事故。图4.6 用户注册页面(2) 登录页也以传统的登录页面对齐,同时页面中也可以做注册等重定向,由于http协议为无状态协议,因此登录后后端会在session中存入登录信息做会话记录,具体项目中可能会考虑改进使用JWT做跨域身份验证,这样可减轻session部署的负担以及增加系
44、统的安全性,防止cookie欺骗等安全问题图4.7 用户登录页面(3) 系统首页头部与脚部均为可复用模板,头部有登录注册、返回首页、搜索、我的购物车与订单等链接跳转,底部为某些必要的信息,两大前端模块横穿整个前端页面,而首页也会展示出热门分类与商品轮播图,以及热门商品,在后端中这些数据存储于redis中,由于这些数据均为热点数据,同时更新少浏览多,因此放在redis中不走数据库不仅使得整个系统的响应速度倍增,也使得系统更为健壮。图4.8 系统首页页面图(4) 商详页展示商品的详情以及评论,同时搜索功能在前端中嵌入到了复用模板中,每个页面都会嵌入该搜索的模板使得每个页面都可复用到搜索功能,搜索功
45、能走的是ElasticSearch中间件,这是一款强大的搜索引擎,对比起传统的数据库模糊查询,查找将会更精确以及更为迅速。图4.9 商品首页页面4.3 本章小结本章讲解了系统的层次架构及设计,同时也包含了各大主要子功能模块的设计思路与实现方式并且给出初步的实现效果图。第五章 系统的数据库的设计本章讲解了数据库的设计思路与实现,主要包含有E-R图以及数据表设计两大部分。5.1 系统的数据库设计5.1.1 表与表的ER图设计图5.1 E-R图5.1.2 数据库表的设计电子商务网站的功能繁多,交互也繁杂,因此数据表也会比较多,需要严格地按照数据库表设计规范进行设计,以下着重讲述几张重要的表以及其字段
46、的名称、数据类型、以及是否为主键、外键以及是否允许为空值表5.1用户表列名数据类型主键外键允许空idInt(11)是否nameVarchar(255)否passwordVarchar(255)否saltVarchar(255)否表5.2分类表列名数据类型主键外键允许空idInt(11)是否nameVarchar(255)否表5.3属性表列名数据类型主键外键允许空idInt(11)是否cidInt(11)是否nameVarchar(255)否表5.4产品表列名数据类型主键外键允许空idInt(11)是否nameVarchar(255)否subTitleVarchar(255)否originalPricefloat否promotePricefloat否stockInt(11)否cidInt(11)是否createDatedatetime否表5.5属性值表列名数据类型主键外键允许空idInt(11)是否pidInt(11)是否ptidInt(11)