当前位置:   article > 正文

【java】【项目实战】[外卖二]后台登录与退出功能实现_java退出登录

java退出登录

目录

一 、登录功能开发

1.1 需求分析

1.1.1 查看原型

1.1.2 查看效果图

1.1.3 查看登录请求信息(有接口文档最佳啊)

 1.1.4 数据模型 (employee表)

1.2 代码开发

1.2.1 创建实体类Employee与employee库表进行映射

1.2.2 创建controller、mapper、service、service.impl包

 1.2.2.1 创建 EmployeeMapper接口

1.2.2.2 创建 EmployeeServcie接口

1.2.2.3 创建 EmployeeServcieImpl实现类

1.2.2.4  创建 EmployeeController类

1.2.3  导入返回结果类R

1.2.4 EmployeeController

1.3 功能测试

1.3.1 启动服务

1.3.2 登录测试

二、退出功能开发

2.1 需求分析

2.2 代码开发

2.2.1 EmployeeController

2.3 功能测试

2.3.1 启动服务

2.3.2 退出测试


前言:实现管理系统的登录功能开发,包含需求分析、代码开发、功能测试

一 、登录功能开发

1.1 需求分析

1.1.1 查看原型

1.1.2 查看效果图

启动服务

http://localhost:8080/backend/page/login/login.html

1.1.3 查看登录请求信息(有接口文档最佳啊)

 1.1.4 数据模型 (employee表)

 

1.2 代码开发

1.2.1 创建实体类Employee与employee库表进行映射

 

 

  1. package com.runa.reggie.entity;
  2. import com.baomidou.mybatisplus.annotation.FieldFill;
  3. import com.baomidou.mybatisplus.annotation.TableField;
  4. import lombok.Data;
  5. import java.io.Serializable;
  6. import java.time.LocalDateTime;
  7. @Data
  8. public class Employee implements Serializable {
  9. private static final long serialVersionUID = 1L;
  10. private Long id;
  11. private String username;
  12. private String name;
  13. private String password;
  14. private String phone;
  15. private String sex;
  16. private String idNumber;
  17. private Integer status;
  18. private LocalDateTime createTime;
  19. private LocalDateTime updateTime;
  20. @TableField(fill = FieldFill.INSERT)
  21. private Long createUser;
  22. @TableField(fill = FieldFill.INSERT_UPDATE)
  23. private Long updateUser;
  24. }

1.2.2 创建controller、mapper、service、service.impl包

 

 1.2.2.1 创建 EmployeeMapper接口
  1. package com.runa.reggie.mapper;
  2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  3. import com.runa.reggie.entity.Employee;
  4. import org.apache.ibatis.annotations.Mapper;
  5. @Mapper
  6. public interface EmployeeMapper extends BaseMapper<Employee> {
  7. }
1.2.2.2 创建 EmployeeServcie接口
  1. package com.runa.reggie.service.impl;
  2. import com.baomidou.mybatisplus.extension.service.IService;
  3. import com.runa.reggie.entity.Employee;
  4. public interface EmployeeServcie extends IService<Employee> {
  5. }
1.2.2.3 创建 EmployeeServcieImpl实现类

 

  1. package com.runa.reggie.service.impl.impl;
  2. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  3. import com.runa.reggie.entity.Employee;
  4. import com.runa.reggie.mapper.EmployeeMapper;
  5. import com.runa.reggie.service.impl.EmployeeServcie;
  6. import org.springframework.stereotype.Service;
  7. @Service
  8. public class EmployeeServcieImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeServcie {
  9. }
1.2.2.4  创建 EmployeeController类
  1. package com.runa.reggie.controller;
  2. import com.runa.reggie.service.impl.EmployeeServcie;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. @Slf4j
  8. @RestController
  9. @RequestMapping("/employee")
  10. public class EmployeeController {
  11. @Autowired
  12. private EmployeeServcie employeeServcie;
  13. }

1.2.3  导入返回结果类R

 

 

  1. package com.runa.reggie.common;
  2. import lombok.Data;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. /**
  6. * 通用返回结果,服务端响应的数据最终都会封装成此对象
  7. * @param <T>
  8. */
  9. @Data
  10. public class R<T> {
  11. private Integer code; //编码:1成功,0和其它数字为失败
  12. private String msg; //错误信息
  13. private T data; //数据
  14. private Map map = new HashMap(); //动态数据
  15. public static <T> R<T> success(T object) {
  16. R<T> r = new R<T>();
  17. r.data = object;
  18. r.code = 1;
  19. return r;
  20. }
  21. public static <T> R<T> error(String msg) {
  22. R r = new R();
  23. r.msg = msg;
  24. r.code = 0;
  25. return r;
  26. }
  27. public R<T> add(String key, Object value) {
  28. this.map.put(key, value);
  29. return this;
  30. }
  31. }

1.2.4 EmployeeController

 

  1. package com.runa.reggie.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.runa.reggie.common.R;
  4. import com.runa.reggie.entity.Employee;
  5. import com.runa.reggie.service.impl.EmployeeServcie;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.util.DigestUtils;
  9. import org.springframework.web.bind.annotation.PostMapping;
  10. import org.springframework.web.bind.annotation.RequestBody;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import javax.servlet.http.HttpServletRequest;
  14. @Slf4j
  15. @RestController
  16. @RequestMapping("/employee")
  17. public class EmployeeController {
  18. @Autowired
  19. private EmployeeServcie employeeServcie;
  20. /**
  21. * 员工登录
  22. * @param request
  23. * @param employee
  24. * @return
  25. */
  26. //HttpServletRequest request 是为了将登录对象塞入session
  27. @PostMapping("/login")
  28. public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
  29. //1、将页面提交的密码password进行md5加密处理
  30. String password = employee.getPassword();
  31. password = DigestUtils.md5DigestAsHex(password.getBytes());
  32. //2、根据页面提交的用户名username查询数据库
  33. LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
  34. queryWrapper.eq(Employee::getUsername,employee.getUsername());
  35. Employee emp = employeeServcie.getOne(queryWrapper);
  36. //3、如果没有查询到则返回登录失败结果
  37. if(emp == null){
  38. return R.error("登录失败");
  39. }
  40. //4、密码比对,如果不一致则返回登录失败结果
  41. if(!emp.getPassword().equals(password)){
  42. return R.error("登录失败");
  43. }
  44. //5、查看员工状态,如果为已禁用状态,则返回员工已禁用结果
  45. if(emp.getStatus() == 0){
  46. return R.error("账号已禁用");
  47. }
  48. //6、登录成功,将员工id存入Session并返回登录成功结果
  49. request.getSession().setAttribute("employee",emp.getId());
  50. return R.success(emp);
  51. }
  52. }

1.3 功能测试

1.3.1 启动服务

访问 

http://localhost:8080/backend/page/login/login.html

1.3.2 登录测试

 

二、退出功能开发

2.1 需求分析

 

 

2.2 代码开发

2.2.1 EmployeeController

  1. package com.runa.reggie.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.runa.reggie.common.R;
  4. import com.runa.reggie.entity.Employee;
  5. import com.runa.reggie.service.impl.EmployeeServcie;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.util.DigestUtils;
  9. import org.springframework.web.bind.annotation.PostMapping;
  10. import org.springframework.web.bind.annotation.RequestBody;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import javax.servlet.http.HttpServletRequest;
  14. @Slf4j
  15. @RestController
  16. @RequestMapping("/employee")
  17. public class EmployeeController {
  18. @Autowired
  19. private EmployeeServcie employeeServcie;
  20. /**
  21. * 员工登录
  22. * @param request
  23. * @param employee
  24. * @return
  25. */
  26. //HttpServletRequest request 是为了将登录对象塞入session
  27. @PostMapping("/login")
  28. public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
  29. //1、将页面提交的密码password进行md5加密处理
  30. String password = employee.getPassword();
  31. password = DigestUtils.md5DigestAsHex(password.getBytes());
  32. //2、根据页面提交的用户名username查询数据库
  33. LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
  34. queryWrapper.eq(Employee::getUsername,employee.getUsername());
  35. Employee emp = employeeServcie.getOne(queryWrapper);
  36. //3、如果没有查询到则返回登录失败结果
  37. if(emp == null){
  38. return R.error("登录失败");
  39. }
  40. //4、密码比对,如果不一致则返回登录失败结果
  41. if(!emp.getPassword().equals(password)){
  42. return R.error("登录失败");
  43. }
  44. //5、查看员工状态,如果为已禁用状态,则返回员工已禁用结果
  45. if(emp.getStatus() == 0){
  46. return R.error("账号已禁用");
  47. }
  48. //6、登录成功,将员工id存入Session并返回登录成功结果
  49. request.getSession().setAttribute("employee",emp.getId());
  50. return R.success(emp);
  51. }
  52. @PostMapping("/logout")
  53. public R<String> logout(HttpServletRequest request){
  54. // 清理Session 中保存的当前员工的id
  55. request.getSession().removeAttribute("emplyee");
  56. return R.success("退出成功!");
  57. }
  58. }

2.3 功能测试

2.3.1 启动服务

访问 

http://localhost:8080/backend/page/login/login.html

2.3.2 退出测试

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/48455
推荐阅读
相关标签
  

闽ICP备14008679号