第二篇:吉瑞外卖项目__后台登录功能开发_后台退出功能开发

举报
花花叔叔 发表于 2022/08/12 22:26:42 2022/08/12
【摘要】 🏫中北大学软件学院 🥇后台登录功能开发 🥇后台退出功能开发 🥇采用mybitplus 🥇对返回结果进行R封装 文章目录 后台登录功能开发需求分析页面原型展示登录页面展示查看登...

🏫中北大学软件学院
🥇后台登录功能开发
🥇后台退出功能开发
🥇采用mybitplus
🥇对返回结果进行R封装


后台登录功能开发

后台登录功能开发

需求分析

页面原型展示

在这里插入图片描述

登录页面展示

(页面位置:项目/resources/backend/page/login/login.html)

在这里插入图片描述

查看登录请求信息

通过浏览器调试工具(F12),可以发现,点击登录按钮时,页面会发送请求(请求地址为http://localhost:8080/employee/login)并提交参数(username和password)

此时报404,是因为我们的后台系统还没有响应此请求的处理器,所以我们需要创建相关类来处理登录请求

在这里插入图片描述

分析前端页面代码

只有当res中的code数据 == 1时候,才可以继续往下执行的。将对象转换成JSON格式。
在这里插入图片描述

代码开发

创建Employee实体类

@Data
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    private String username;

    private String name;

    private String password;

    private String phone;

    private String sex;

    private String idNumber;  // 身份证号码

    private Integer status;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;

    @TableField(fill = FieldFill.INSERT)
    private Long createUser;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;

}

创建Mapper层

这里只需要写接口就行,因为使用的是动态代理创建实体类的。接口参数里面要写对应的实体类
@Mapper中包含了将对象加入到Spring容器中

@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {
}

创建Service层

public interface EmployeeService extends IService<Employee> {
}

先继承一个父类,第一个参数指的是dao层的接口,第二个参数指的是实体类,然后实现接口

@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {
}

Controller层

@RestController 是@controller和@ResponseBody 的结合

将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。
该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端

@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployController {

    @Autowired
    private EmployeeService employeeService;
}

返回结果类R

此类是一个通用结果类,服务端响应的所有结果最终都会包装成此种类型返回给前端页面。

如果成功的话,传递的是Employee的对象,如果失败的话,传递的是一句错误语句。

@Data
public class R<T> {

    private Integer code; //编码:1成功,0和其它数字为失败

    private String msg; //错误信息

    private T data; //数据

    private Map map = new HashMap(); //动态数据

    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;
        return r;
    }

    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;
        return r;
    }

    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }

}

在Controller中创建登录方法

在这里插入图片描述

处理逻辑如下:

  • 将页面提交的密码password进行md5加密处理
//        1. 将页面提交的密码进行md5加密处理
        String password = employee.getPassword();

        password = DigestUtils.md5DigestAsHex(password.getBytes());
  • 根据页面提交的用户名username查询数据库
//        2. 根据username查询数据库
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();

        queryWrapper.eq(Employee::getUsername,employee.getUsername());  // 为sql语句添加条件,第一个参数指的是数据库对象中的列名字,第二个参数指的是获取到的employee参数。

        Employee emp = employeeService.getOne(queryWrapper);  // 唯一性查询,
  • 如果没有查询到则返回登录失败结果
//        3. 如果没有查询到则返回登录失败结果
        if (emp == null) {

            return R.error("登录失败");

        }

  • 密码比对,如果不一致则返回登录失败结果
//        4. 密码比对,如果密码不一致则返回
        if (!emp.getPassword().equals(password)) {

            return R.error("登录失败");

        }
  • 查看员工状态,如果为已禁用状态,则返回员工已禁用结果
//        5. 查看员工状态是否可以使用
        if (emp.getStatus() == 0) {

            return R.error("账号已禁用");

        }
  • 登录成功,将员工id存入Session并返回登录成功结果
//        6. 登录成功,将员工id存放到session,并返回正确的结果
        request.getSession().setAttribute("employee",emp.getId());

        return R.success(emp);
    }

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

后台退出功能开发

后台退出功能开发

需求分析

员工登录成功后,页面跳转到后台系统首页面(backend/index.html),此时会显示当前登录用户的姓名

如果员工需要退出系统,直接点击右侧的退出按钮即可退出系统,退出系统后页面应跳转回登录页面

代码开发

用户点击页面中退出按钮,发送请求,请求地址为/employee/logout,请求方式为POST。
我们只需要在Controller中创建对应的处理方法即可,具体的处理逻辑:
1、清理Session中的用户id
2、返回结果

// 员工退出
    @PostMapping("/logout")
    public R<String> logout(HttpServletRequest request ) {

//        清除session
        request.getSession().removeAttribute("employee");

        return R.success("退出成功");
    }

文章来源: blog.csdn.net,作者:花花叔叔,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_52077949/article/details/124372706

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。