登录系统MVC架构图

前端层(对应MVC的View层)
登录视图组件
输入项:
• 邮箱(账号)输入框
• 密码输入框
• 图片验证码输入框
展示项:
• 图片验证码展示区域(加载后端生成的验证码图片)
交互项:
• "获取验证码"按钮
• "登录"按钮
• 提示信息展示区(过期/账密错误/成功提示)
前端逻辑:
• 表单数据校验(非空判断)
• 请求发送(登录请求/验证码获取请求)
• 页面跳转
后端Controller层(控制层:接收请求、分发逻辑、返回响应)
登录Controller
接口1:
/api/captcha(获取图片验证码)
• 调用Service生成验证码
• 返回图片流+缓存验证码
接口2:
/api/login(接收登录请求)
• 获取前端传递的邮箱、密码、用户输入的验证码
职责:
1. 接收并封装请求参数
2. 调用Service层执行登录业务逻辑
3. 接收Service返回结果
4. 封装响应数据(成功/验证码过期/账密错误),返回给前端
特点:
• 无业务逻辑处理,仅负责请求分发与响应封装
后端Service层(业务逻辑层:MVC的Model层核心,处理核心业务逻辑)
登录Service(核心业务处理)
职责1:验证码有效性校验
• 从缓存/会话中获取已存储的验证码(含过期时间)
• 校验:① 用户输入的验证码与缓存验证码是否一致;② 验证码是否超出过期时间(过期则返回提示)
职责2:账号密码校验(验证码有效时执行)
• 调用DAO层查询数据库中对应邮箱的用户信息
• 校验:数据库中的密码(加密存储)与前端传递的密码(加密后)是否一致
• 结果:① 账密一致:返回登录成功;② 账密不一致:返回账密错误提示
职责3:登录成功后续处理
• 如生成登录令牌Token、更新登录时间等
输出:
• 返回业务处理结果(验证码过期/账密错误/登录成功)
后端DAO层(数据访问层:MVC的Model层分支,负责数据持久化交互)
用户DAO
职责:
• 仅负责数据库交互,无业务逻辑
接口:
• findUserByEmail(String email)(根据邮箱查询用户信息:用户名、加密密码等)
实现:
• 通过MyBatis/JPA等持久化框架,执行SQL查询
• 返回用户实体数据给Service层
数据存储层
用户数据库
• 如MySQL
• 存储用户基础信息(邮箱、加密密码、用户ID等)
验证码缓存/会话
• 如Redis/HttpSession
• 存储生成的验证码、过期时间(用于校验过期)
图片验证码生成组件
• 生成随机验证码字符串+对应的图片流(用于前端展示)