瑞吉外卖:后台系统登录和退出功能

需求分析

点击登录按钮后,浏览器以POST方式向employee/login提交usernamepassword,服务器经过处理后向浏览器返回某种格式的数据,其中包含:

  • code:登录状态码
  • data:用户信息
  • msg:失败原因

登录成功后点击退出按钮,清理session中的用户id,返回到登录页面

代码开发

创建实体类

创建实体类Employee,与数据库中的表employee进行映射,直接导入写好的java文件到entity目录
在这里插入图片描述application.yml中开启映射时的命名转换

在这里插入图片描述

导入返回结果类R

R是一个通用结果类,所有服务器返回的数据都包装为此种类型返回给前端。
在这里插入图片描述

controller、service与mapper

  • controller调用ServiceImpl里封装好的方法为浏览器提供访问服务。
  • service提供业务逻辑使用的方法,其实现在ServiceImpl中。
  • mapper为ServiceImpl提供了操作数据的方法,具体实现的SQL语句在xml文件中。

login.html

在这里插入图片描述
valid是密码位数校验
通过校验后页面登录按钮显示为登陆中

下图为Spring框架将后端返回的R对象转成的json,返回到浏览器,也即下文的res
在这里插入图片描述
若res中code为1,则表示登录成功,
将res的data转json存到localStorage中
在这里插入图片描述
如果登录失败,则提取res的msg显示在页面上。
在这里插入图片描述

在这里插入图片描述数据流:

  • 请求发送阶段:login.html 调用 loginApi 发送POST数据到路径 emloyee/login,配置注解 @RequestMapping 把访问 employee 的请求都给 EmployeeController 处理,内部再用 @PostMapping 注解,分配此POST数据给login方法处理。
  • 数据处理阶段:login方法使用了 @RequestBody注解,自动解析传来的数据封装为一个employee对象。计算传来密码的MD5值,用Employee类初始化一个MyBatis中实现查询的封装类queryWrapper,即表示对employee对象进行查询,调用queryWrapper的eq方法,比较数据库中是否存在传来的用户名,调用MyBatis提供的Service方法,将查询结果封装为一个employee对象。
  • 结果封装阶段:根据查询结果进行判断,将对应的状态码和提示封装到通用的结果返回对象R中,如果成功,则将员工ID放入session中。
  • 结果返回阶段:Spring将R对象转json发送给前端,前端存到 localStorage 中,进行处理和显示。

过滤器防止非法访问

目前即使不登录也能访问到index.html,所以需要使用过滤器或者拦截器判断用户是否完成登录,未完成则转到login.html。

在项目文件夹 reggie 下新建包 filter,然后新建类 LoginCheckFilter.java实现 filter 接口,在类中加一个注解 @WebFilter(filterName=“loginCheckFilter”,urlPatterns=“/*”)/* 表示检查所有访问请求。

在启动类ReggieApplication.java上加一个注解 @ServletComponentScan,启动时去扫描过滤器里的@WebFilter注解,即注册过滤器。

过滤时,先获取本次请求的URI,判断路径和状态作出响应,如果放行则调用doFilter方法放行,否则返回特定结果,由前端处理,,重定向到 login 页面。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值