【JavaEE】电商秒杀项目·第3章·用户模块开发

前言

不要忘记我这次重看视频的初衷可是要整一个Android借助本地MySQL进行登录注册的功能
第3章·用户模块开发的基本流程:
整体架构分层—>用户信息分层处理 —> 封装返回信息 —> otp手机验证码开发 —> 前端页面开发—>登录注册功能开发

上一章,我们学会了:

  1. 构建Maven项目
  2. 引入SpringBoot
  3. 引入Mybatis
  4. 简单使用SpringMVC

接下来就要详细的学习使用SpringMVC了,具体知识点有:

  1. MVC分层架构

  2. 通用返回类型

  3. otp验证码生成

  4. 登录、注册功能

  5. 项目中的校验逻辑

正文

一、整体架构分层

上一章的最后我们在App.java中简单的使用了具有RESTful风格的SpringMVC,但总不能所有逻辑都写到App.java中吧,因此,急需做的事情就是先分层。
新建两个包,一个controller,一个service

在controller里新建一个UserController,service里新建一个接口UserService以及对应实现类UserServiceImpl

而Service层是要将用户模型即用户信息返回给Controller层,需要访问数据库。

这样就有需要一个DAO层,这一层Mybatis已经帮我们实现好了。

它们的关系是:

URL请求发送到Controller层,

Controller层调用Service层,

Service层调用DAO层,

DAO层通过Mybatis的mapping映射进行数据库的CURD操作(CURD就是增删改查的意思)。

对整体架构分层总结:

Controller层需要在类级别加上@Controller(…)、@RequestMapping(…)、@CrossOrigin(…)

Service层只需要在类级别加上@Service

对于Controller,注解加载子类上,BaseController不需要

对于Service,注解加载实现类上,UserService接口不需要

这些层是前辈们多少年的工业经验,作为后辈应以谦卑的心态虚心学习,理解其中的思想,诸如解耦,可扩展性,易维护性,单一职责原则(SRP)等等。

二、用户模型在三层不同的处理方式

上面的流程是从View层到Model层,下面再来理解一下从Model层到View层的流程。

  1. DAO层:最底层的就是DAO从数据库一一映射过来的dataobject,DAO层需要做的就是用户信息的CURD工作。

  2. Service层:在设计数据库的时候我们因为业务需求,把用户信息和密码进行了分表设计,这样就会导致出现UserDO和UserPasswordDO两个dataobject。Service层需要做的工作就是将这两个DO整合到一起并封装为model

  3. Controller层:从Service层获取到model,但具体方法需要具体使用。比如Controller层的getUser方法,前端发送localhost:8090/user/get请求,请求用户信息。前端没必要知道用户的密码,登录方式等敏感信息。因此就需要一个viewobject层,用来在返回给前端时屏蔽掉敏感信息。

    疑问model整合dataobject而来,现在又要进行屏蔽,图个啥?

    回答:Controller层的具体方法具体使用,getUser方法是用来返回给前端的,用不到model中的一些信息,因此使用viewobject屏蔽用户密码等敏感信息,但是Controller层不是仅仅getUser这一个功能,比如还有登录验证login等功能,这时候就需要model更多的信息来进行比较了。

对用户信息分三层的总结:

1. DAO层 --- dataobject,与数据库一一映射
2. Service层 --- model,整合因业务需求而分离的dataobject
3. Controller层 --- viewobject,屏蔽如密码等敏感信息返回给前端

如果能够理解这三层的具体作用,对整个项目的理解会有很大的帮助。

三、Controller中方法的返回值与类型

我们知道,Controller层返回值是返回给前端页面的。

然而Controller中的方法返回值类型会出现不同,比如返回viewobject,返回null,返回异常Exception信息等等。如果每个方法都有独自的返回值类型的话,那样的设计不太好,也不容易以统一的形式(比如统一的JSON格式)呈现给前端。好的解决方法就是独立出一层:response,创建一种通用的返回值类型CommonReturnType,它有两个属性status和data。

status:success表示成功,fail表示失败;

data:会根据具体业务的不同返回正确信息viewobject或异常信息(异常信息包含errorCode和errorMsg)或空。

CommonReturnType构造对象的代码如下,正如三少老师所讲,二重奏方法:

public static CommonReturnType create(Object result){
   
    return CommonReturnType.create(result,"success")
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
淘淘商城是一个综合性的B2C平台,类似与京东、天猫商城,其打造的是商业模式为“社区+电子商务”, 用户不只是在社区中有自己的圈子,还可以将电商加入到社区中,整个电商网站实现的功能非常之多,采用分布式的系统架构设计,包括后台管理、前台系统、购物车系统、订单系统、单点登录系统、搜索系统、会员系统等。 1、 该项目采用了分布式系统的架构,目前,在大型网站中使用非常广泛。 2、 各个系统之间采用接口调用的方式进行交互,即:面向服务的开发,每个团队、系统,分工明确,各司其职。 3、 后台系统使用了目前主流的框架技术,Spring、SpringMVCMybatis实现,开发更有效率,网站性能更高。 4、 后台系统中的前端UI采用了Jquery EasyUI完成,界面更加的美观。 5、 系统后台使用多级菜单布局,并使用KindEditor框架作为富文本编辑器。 6、 前台系统中采用CSS+DIV技术开发界面,使用Jquery完成和动态效果和后台服务的数据交互。 7、 项目引入了内容关系系统的概念,实现了对网站大部分内容的管理维护,使开发更加的高效。 8、 使用单点登录系统(SSO)来实现集群状态下的用户数据的维护。 9、 使用高性能的KV数据库Redis完成数据的存储以及缓存,提高数网站整体的性能。 10、 使用企业级开源系统Solr完成商品以及订单数据的搜索。 11、 在数据库存储方面使用MySQL的主从复制架构,使用Spring的AOP实现数据的读写分离,以保证在“读多写少”的场景下的高性能。 12、 使用高性能的企业级消息系统RabbitMQ,完了系统间的通信,使得系统间的耦合度大大降低。 13、 部署方面使用LVS + keepalived + Nginx实现了双机主备、双主热备,实现了一个高可用的系统架构。 14、 项目开发采用团队式的开发,统一使用Maven私服构建项目,使用统一的SVN服务进行代码的管理。 【课程内容】 项目功能实现分析 RESTful Web Service、SVN 项目讲解、环境搭建 后台系统功能实现 前台系统搭建、实现、内容管理系统实现 Redis入门 单点登录系统 订单系统、Quartz入门 Solr入门以及搜索系统实现 MQ学习、改造搜索、商品详情缓存逻辑 实现购物车、读写分离 dubbo入门、优化单点登录系统 分布式部署架构讲解以及实施 分组实战 + 项目总结以及就业指导 拔高--Redis集群、Tomcat优化、MySQL优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值