1. 用户登录功能简介

用户输入用户名和密码,提交给后台数据库查询,如果存在对应的用户名和密码,则登录成功,跳转到系统的主页,即index.html页面;前端使用Jquery实现。

2. 用户登录-持久层

用户登录时,需要进行用户名密码的验证,因此需要按username查找用户,可以复用注册功能时编写的sql语句和对应接口。

3. 用户登录-业务层

1. 异常规划

登录时可能出现的异常有:用户不存在、密码错误,因此需要定义两个异常类:UserNotFoundException、PasswordErrorException,这两个异常类继承ServiceException类。

2. 业务层接口和抽象方法
  1. 在IUserService接口中编写抽象方法
public interface IUserService {/*用户注册方法,返回用户的数据对象*/void register(User user);/*用户登录,将当前登录成功的用户数据以用户对象的形式返回。状态管理:可以将数据保存在cookie或者session中,可以避免频繁操作数据进行获取(用户名、用户id存放在session中,用户头像存放在cookie中)*/User login(String username, String password);
}
  1. 在UserServiceImpl实现类中重写方法

注意点:

  • 判断用户是否存在时,还需要判断用户是否被删除,即isDelete是否等于1
  • 验证密码时需要将获得的密码进行MD5加密后再比较
  • return User对象,辅助其他页面做数据展示使用
 @Overridepublic User login(String username, String password) {User user = userMapper.findByUsername(username);//判断用户是否存在if(user == null) {throw new UserNotFoundException("用户不存在");}//判断用户是否被删除if(user.getIsDelete() == 1) {throw new UserNotFoundException("用户不存在");}//检测用户密码是否正确//1.获取盐值并将前端密码进行MD5加密String salt = user.getSalt();String checkedPwd = getMD5Password(password, salt);//2.从数据库获取该用户名对应的用户密码String truePwd = user.getPassword();//3.进行密码的比较if(!truePwd.equals(checkedPwd)) {throw new PasswordErrorException("用户密码错误,请重新输入");}//将当前用户的数据封装成一个新的数据,只保留uid,username,avatar三个属性值,提升系统性能User result = new User();result.setUsername(user.getUsername());result.setUid(user.getUid());result.setAvatar(user.getAvatar());//将当前的用户数据返回,辅助其他页面做数据展示使用return result;}

4. 单元测试

分别输入正确的用户名密码、不存在的用户名和密码、存在的用户名和错误的密码进行测试:

    @Testpublic void login() {User user = userService.login("Jerry", "222");System.out.println(user);}



springboot入门项目-用户登录1-持久层/业务层相关推荐

  1. 最简单最详细的SpringBoot入门项目——HelloWorld

    最详细的SpringBoot入门项目--HelloWorld 关于SpringBoot的介绍以及优点这里就不说了,想了解的可以直接点击这里 Spring Boot百度百科 接下来我们直奔主题,开始用S ...

  2. springboot入门项目-上传头像

    1. 持久层 1. mapper接口 //根据uid修改用户头像Integer updateAvatarByUid(Integer uid, String modifiedUser, Date mod ...

  3. 客户关系管理项目——用户登录模块设计

    一 模块需求细化 登录的用户,默认情况有三个不同角色,分别为:系统管理员,前台客服,信息管理员. 用户登录后能够根据其角色来进行相关工作,进行完工作需要能够注销. 细化需求如下: 用户登录之后按角色分 ...

  4. [golang gin框架] 29.Gin 商城项目-用户登录,注册操作

    一.用户登录,注册界面展示说明 先看登录,注册界面以及相关流程,再根据流程写代码,一般网站的登录,注册功能都会在一个页面进行操作,还有的是在几个页面进行操作,这里讲解在几个页面进行注册的操作,步骤如下 ...

  5. 表现层 业务层 持久层 web层 service层 dao层的相关概念描述

    我们的架构一般分为两种, 一种是C/S(客户端/服务器),另一种是B/S(浏览器/服务器). 在我接下来学习的SpringMVC种,几乎都是B/S架构开发的. 其标准的三层架构中,一般分为:表现层,业 ...

  6. 初来乍到,springboot入门项目

    MRD:Market Requirement Document,市场需求文档 Kick Off:kick off 源自于足球,就是开球,发球的意思.在IT项目中,表示项目启动会议 Deadline:最 ...

  7. 在线教育项目用户登录和注册

  8. CSS进阶班笔记(四),springboot入门项目实战

    2.2.字体图标的引入

  9. 一步步使用SpringBoot结合Vue实现登录和用户管理功能

    文章目录 前言 1.前后端分离简介 2.示例所用技术简介 一.环境准备 1.前端 1.1.安装Node.js 1.2.配置NPM源 1.3.安装vue-cli脚手架 1.4.VS Code 1.5.C ...

最新文章

  1. ORACLE HANDBOOK系列之十四:变化通知(Change Notification)
  2. 二叉树的非递归遍历(递归和非递归)
  3. ajax async:false不管用_js 网络请求框架 ajax和axios、fetch的区别
  4. jQuery获取时间,一位数则补零
  5. 吴恩达机器学习作业(1):线性回归
  6. JavaEE实战班第19天
  7. 机器视觉及图像处理系列之二(C++,VS2015)——图像级的人脸识别(1)
  8. 在线SQL(Insert/Update)语句转JSON工具
  9. c#物联网_「物联网架构」Apache-Kafka:物联网数据平台的基石
  10. 23、Camunda DMN决策初探
  11. 基于MATLAB的TODA定位算法的仿真
  12. 信息学奥赛一本通:1153:绝对素数
  13. 如何在vscode、remix中结合hardhat编译部署合约
  14. PHP八字强弱计算,八字强弱的数学计算方法
  15. Log4C的基本用法
  16. win10彻底关闭电脑的自动更新
  17. HTML小游戏19 —— html5版开心斗地主小游戏(附完整源码)
  18. 智慧灯杆智能网关RS485串口接线说明
  19. javaweb银行账目管理系统
  20. 烽火HG680-L_S905L2芯片_线刷固件

热门文章

  1. 文心一言你还没体验吗?来一睹其绘画风采吧
  2. 2022年又一个Python数据分析神器火了
  3. “四海同春”2019全球华侨华人春节大联欢录制完成
  4. 怎样用css设置横向的滚动条,如何用CSS设置滚动条颜色?
  5. js 使用AES 加密解密
  6. SomethingOn生产力提升工具使用
  7. Windows开启Ntp服务
  8. Linux手机设备不能识别的解决
  9. 乐高机器人纲要_(完整word版)新课改选修课乐高机器人课程纲要.docx
  10. 小米fortnite_我如何仅用1,001美元(与我12岁的孩子)构建自己的Fortnite DIY游戏平台