首先,回顾并复习一下项目的分层结构。 一共分为四个层次,分别是domain层,mapper层,service层,以及controller层。
domain层是实体层,存放项目需要实体类型,主要用于对数据进行封装。
mapper层是数据库层,主要存放实体类相应的数据库操作接口,包含了对数据库操作的映射,applicationContext.xml中配置了sqlSession工厂类,以及mybatis的映射扫描,可以把mapper中的接口实现和sql语句映射文件进行绑定,从而实现mapper中接口的方法。
service层是业务层,会引用数据库mapper的一个或多个方法,并对数据库操作的返回值进行业务逻辑的处理。
controller层是控制层,负责请求转发,接收页面的请求,进行处理,将数据交给service层。
项目的开发目录如下图所示,其中controller层主要有两个实现,一个是对登录功能的实现(LoginController.java),第二个是对注册功能的实现(ReaderController.java);domian层包含了各个数据实体,由于登录者可能是管理员和普通用户,因此用Admin存储管理员的登录信息,普通用户的实体类稍稍复杂一些,用ReaderInfo保存用户的基本个人信息,用ReaderCard保存用户的登录信息。
mapper映射层操作也是对应上面三个实体类创建的。
service业务层也对应了三个实体,这里将service用接口和实现进行区分,便于后续的功能扩展。
接下来解释一下具体的登录功能的具体实现步骤。
1.前端页面通过表单获取数据,用户名和密码,附加实现数据的非空判断
2.前端校验通过后,通过POST请求将数据提交给后台
3.得到前端页面的请求数据后,转到controller层代码 (@RequestMapping+@ResponseBody实现后台跳转以及数据返回前端)
4.controller通过调用service层代码进行业务查询
5.service层调用mapper层的数据sql语句映射
6.拿到数据后,controller进行逻辑判断,将验证结果返回给前端
7.前端进行判断是否登录成功
整体的流程如下图所示: