1. 持久层

1.1 规划需要执行的sql语句

SELECT * FROM student WHERE sid = ?

1.2 设计接口和抽象方法

在mapper包的StudentMapper中进行定义

/*** 根据学号选择学生对象* @param sid 学生学号* @return 学生对象数据*/Student findByStudentsid(String sid);

1.3 sql映射

在resources.mapper包的StudentMapper.xml进行sql映射

<resultMap id="StudentEntityMap" type="com.example.hzuniversity.entity.Student"><!--将表的资源和类的属性不一致字段进行匹配指定,名称一致可以缩略不写--><!--定义映射规则时,主键不可省略--><id column="sid" property="sid"></id><result column="gender" property="gender"></result><result column="is_delete" property="isDelete"></result><result column="created_time" property="createdTime"></result><result column="modified_time" property="modifiedTime"></result></resultMap><select id="findByStudentsid" resultMap="StudentEntityMap">SELECT * FROM student WHERE sid = #{sid}</select>

1.4 单元功能测试

在test中mapper包StudentMapperTest中进行单元测试

@Testpublic void findByStudentsid() {Student student = studentMapper.findByStudentsid("5");System.out.println(student);}

2. 业务层

2.1 规划异常

  • 用户登录密码错误PasswordNotMatchException
  • 用户登录学号不存在SidNotFoundException

2.2 设计接口和抽象方法

在service包中IStudentService中定义

/*** 学生登录接口* @param sid 学号* @param password 密码* @return 学生对象数据*/
Student Login(String sid, String password);

在实现类StudentServiceImpl中实现抽象方法

/**学生登录*/@Overridepublic Student login(String sid, String password) {Student result = studentMapper.findByStudentsid(sid);if (result == null || result.getIsDelete() == 1) { // 用户账号不存在或已经注销throw new SidNotFoundException("学号不存在!");}/**获取盐值对密码加密后进行比较*/String salt = result.getSalt();String newMd5Password = getMD5Password(password, salt);String rpassword = result.getPassword();if (!newMd5Password.equals(rpassword)) {throw new PasswordNotMatchException("用户密码错误!");}// 只需要传输三个值id name avatar 响应速度更快 提升性能Student student = new Student();student.setSid(result.getSid());student.setName(result.getName());student.setAvatar(result.getAvatar());return student;}

2.3 单元测试

@Testpublic void login() {String sid = "5";String password = "123456";Student student = studentService.login(sid, password);System.out.println(student);}

3. 控制层

3.1 异常处理

  • 用户登录密码错误PasswordNotMatchException配置在统一异常处理中
else if (e instanceof PasswordNotMatchException) {result.setState(4001);result.setMessage("密码错误");}
  • 用户登录学号不存在SidNotFoundException配置在统一异常处理中
else if (e instanceof SidNotFoundException) {result.setState(4002);result.setMessage("用户数据不存在");}

3.2 设计请求

/stu/login
POST
String sid, String password, HttpSession session
JsonResult< Student >

3.3 处理请求

@RequestMapping("login")public JsonResult<Student> login(String sid, String password, HttpSession session) {Student student = studentService.login(sid, password);// 向session对象中完成数据的绑定(session全局的)session.setAttribute("sid", student.getSid());session.setAttribute("username", student.getName());return new JsonResult<Student>(OK, student);}

3.4 单元功能测试

【管理系统】登录模块相关推荐

  1. Java学生信息管理系统——管理员登录模块(简单易上手)

    前言 这一篇是用来记录我编写学生信息管理系统时实现登录操作的过程,这是学生信息管理系统的第一个模块,之后我还会陆续将其它模块分享出来. 其它章节 ------------------------> ...

  2. 文档安全管理系统服务器地址是什么,一种文档安全管理系统登录方法及装置

    1. 一种文档安全管理系统登录方法,其特征在于,包括: S1:接收用户终端输入的登录帐号和登录密码: S2:将所述登录帐号和所述登录密码发送至企业帐号系统服务器,使得企业帐号系统 服务器检测所述登录帐 ...

  3. 高考试题管理系统出题模块——C语言课程设计

    高考试题管理系统出题模块 项目说明: 该课程设计是在学校学习完相关课程以后制作的课程作业,分为两段源代码,需要建立一个工程文件,如果使用的是vc++6.0,可以按步骤:新建→项目→win32 cons ...

  4. java-php-python-springboot智能物流运输管理系统登录计算机毕业设计

    java-php-python-springboot智能物流运输管理系统登录计算机毕业设计 java-php-python-springboot智能物流运输管理系统登录计算机毕业设计 本源码技术栈: ...

  5. 《进销存管理系统——“系统管理”模块》项目研发阶段性总结

    <进销存管理系统--"系统管理"模块> 项目研发阶段性总结 项目概要 登录页面(图1): 图1 然后我们来看看系统的主要模块有哪些,如下(图2): 整个"进销 ...

  6. Vue——Mall项目初始化及登录模块(九)

    一.Mall项目简介 客户使用的业务服务:PC端前台采用传统html开发,(小程序,移动web,移动app)采用uniapp开发 管理员使用的业务服务:PC端后台管理端采用vue脚手架开发 Mall后 ...

  7. 基于JAVA房地产管理系统登录计算机毕业设计源码+系统+lw文档+部署

    基于JAVA房地产管理系统登录计算机毕业设计源码+系统+lw文档+部署 基于JAVA房地产管理系统登录计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...

  8. 新闻管理系统分类模块的增删改功能实现,标签模块的功能实现

    新闻管理系统分类模块的增删改功能实现,标签模块的功能实现 一.分类模块的增删改功能实现 1.dao层 2.service层 3.web层 4.成果展示 二.标签模块的功能实现 1.实体类设计 2.da ...

  9. 电商管理系统-登录功能

    电商管理系统-登录功能 一.登录逻辑 1.在登录页面输入账号和密码进行登录,将数据发送给服务器 2.服务器返回登录的结果,登录成功则返回数据中带有token 3.客户端得到token并进行保存,后续的 ...

  10. itest系统学生登录不了_四川省中小学生艺术测评管理系统登录平台https://www.soyohui.com/app/165187/...

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都有分享,完全是免费订阅,请放心关注. 注:本文转载自网络,不代表 ...

最新文章

  1. 打通多个视觉任务的全能Backbone:HRNet
  2. 内存管理-定时器循环、内存布局、tagged pointer、weak指针、copy、自动释放池
  3. buuctf 文件中的秘密
  4. 【C++】this指针
  5. 【Paper】Origin绘制误差棒图(标准差围绕均值)
  6. 发明个人计算机哪国人,电脑是哪国人发明的,发明的人是谁??
  7. 5.14 js对象 函数 js操作document对象
  8. 2020年8个效率最高的爬虫框架
  9. ctags 基本使用方法
  10. [041] 微信公众帐号开发教程第17篇-应用实例之智能翻译
  11. devops定义_在层中定义DevOps
  12. 为什么java在自己这是正确的但过不了oj_技术干货:关于Java异常的9大问题
  13. 接下来会普及流行能实现《集中授权集中管理,分级授权逐级管理》的标准化权限系统...
  14. stm32如何设置蜂鸣器温度报警_有人喊冷?有人喊热?列车空调温度到底如何设置...
  15. 中台,都被你们说糊涂了
  16. QQ登录pc端测试用例
  17. MySQL技术:InnoDB 存储引擎(不同版本的 Master Thread 工作方式)
  18. Android 强大的图片加载缓存— Glide
  19. 使用 CSS Color-Mix() 简化你的调色板
  20. 论坛介绍 | COSCon'22 开源治理(G)

热门文章

  1. 计算机usb无法连接ir2318l,佳能ir2318l打印机驱动
  2. 用 clang 编译成 IR 汇编 和 目标机器汇编语言文件
  3. 语音播放芯片和语音识别芯片?
  4. 华为服务器VMWare启用EVC特性报错,华为服务器v6 BIOS开启Monitor/Mwait功能
  5. 基于SSM的高校餐厅防疫管理系统
  6. 装x撩m必备的16条Linux 命令,了解一下?
  7. 实现点击鼠标更换图片
  8. java设计模式之组合模式(Composite)
  9. PyQt5 Qss基本知识01
  10. 微信预约叫好服务器,微信预约排队系统 智能排队机系统 智能叫号机系统