当前位置: 首页 > article >正文

(自用)Java学习-5.16(取消收藏,批量操作,修改密码,用户更新,上传头像)

1. 取消收藏功能
  • 前端实现

    • 用户点击“取消收藏”按钮时,前端通过变量status判断当前状态(0为未收藏,1为已收藏)。

    • 发送AJAX请求到后端接口:

      • 添加收藏/favoriteise/addFavoriteise?pid=商品ID,成功后将按钮状态更新为“取消收藏”(图标变为实心)。

      • 取消收藏/favoriteise/dropFavoriteise?fid=收藏记录ID,成功后恢复为“加入收藏”(图标变为空心)。

    • 使用confirm()弹窗确认操作。

  • 后端实现

    • 控制器:接收fid参数,调用服务层删除收藏记录。

    • SQL逻辑DELETE FROM t_favorites WHERE fid=#{fid},直接删除指定收藏记录。


2. 购物车操作
  • 增减商品数量

    • 前端:点击“+”或“-”按钮触发addNum(cid)reduceNum(cid),发送请求到/cart/addNum/cart/reduceNum,动态更新页面显示的数量和小计。

    • 后端

      • 查询购物车记录:SELECT * FROM t_cart WHERE cid=#{cid}

      • 更新数量:UPDATE t_cart SET num=#{num},并记录修改时间。

  • 全选操作

    • 勾选“全选”按钮触发checkAll(),请求/cart/getTotalNum获取所有购物车数据,计算总数量和总金额,更新页面显示。

    • SQL逻辑SELECT * FROM t_cart,返回全部购物车数据。

  • 批量删除

    • 勾选多个商品后,前端将选中的cid数组发送到/cart/batchDelete

    • SQL逻辑DELETE FROM t_cart WHERE cid IN (id1, id2, ...),通过<foreach>动态拼接ID列表。


3. 修改密码功能
  • 前端实现

    • 输入原密码时触发异步校验(/users/checkoldval),验证通过后允许提交新密码。

    • 提交时校验两次新密码一致性,发送请求到/users/modifiedPass

  • 后端实现

    • 密码加密:使用getMd5Password()结合盐值加密新密码。

    • SQL逻辑UPDATE t_user SET password=新密码 WHERE uid=用户ID

    • 修改成功后清除用户会话,跳转至登录页。


4. 用户资料更新
  • 展示资料

    • 请求/users/showOneUser获取当前用户信息(如用户名、电话、性别),动态填充表单。

    • 根据性别动态渲染单选按钮(男/女)。

  • 更新资料

    • 提交表单数据到/users/editUserInfo,后端更新t_user表中对应字段(如phoneemailgender)。

    • SQL逻辑:动态生成UPDATE语句,仅更新非空字段。


5. 上传头像功能
  • 前端实现

    • 使用<form>表单提交文件,设置enctype="multipart/form-data",提交到/uploadpic/savepic

  • 后端实现

    • 阿里云OSS配置:通过application.yml读取OSS参数(Endpoint、AccessKey等)。

    • 文件处理

      1. 生成唯一文件名(UUID + 文件后缀)。

      2. 上传文件到OSS指定路径(如userName/新文件名)。

      3. 将OSS文件路径存入用户表t_useravatar字段。

    • SQL逻辑UPDATE t_user SET avatar=文件路径 WHERE uid=用户ID


6. 关键技术点
  1. 前后端交互

    • 使用AJAX异步请求,配合JSON数据格式,实现无刷新操作(如购物车数量更新)。

    • RESTful风格接口设计(如/cart/addNum/users/modifiedPass)。

  2. 数据库操作

    • MyBatis动态SQL(如<if>条件判断、<foreach>批量删除)。

    • 联表查询优化数据展示(如购物车关联商品信息)。

  3. 安全与扩展

    • 用户会话管理(HttpSession存储用户ID和用户名)。

    • 文件上传通过OSS实现分布式存储,提升系统扩展性。

http://www.lryc.cn/news/2392406.html

相关文章:

  • 【Node.js】部署与运维
  • 【Java Web】速通JavaScript
  • TDengine 运维——巡检工具(安装前预配置)
  • C#索引器详解:让对象像数组一样被访问
  • 机器学习课设
  • vue 如何对 div 标签 设置assets内本地背景图片
  • wsl2 docker重启后没了
  • ubuntu 22.04 配置静态IP、网关、DNS
  • RDS PostgreSQL手动删除副本集群副本的步骤
  • MySQL 自增主键重置详解:保持 ID 连续性
  • Vue Hook Store 设计模式最佳实践指南
  • 国产化Word处理控件Spire.Doc教程:通过Java简单快速的将 HTML 转换为 PDF
  • Spring AI 1.0 GA深度解析与最佳实践
  • Java求职面试:从Spring到微服务的技术挑战
  • 鸿蒙OSUniApp 开发的图文混排展示组件#三方框架 #Uniapp
  • WHAT - 学习 WebSocket 实时 Web 开发
  • 5G NTN卫星通信发展现状(截止2025年3月)
  • 【计算机网络】第2章:应用层—DNS
  • [Linux]虚拟地址到物理地址的转化
  • Linux线程入门
  • Kubernetes超详细教程,一篇文章帮助你从零开始学习k8s,从入门到实战
  • Docker基础 -- Ubuntu 22.04 AArch64 交叉编译 Docker 镜像构建指南
  • 【Elasticsearch】使用脚本删除索引中的某个字段
  • OpenHarmony平台驱动使用(二),CLOCK
  • 我们是如何为 ES|QL 重建自动补全功能的
  • Keepalived 配置 VIP 的核心步骤
  • 如何使用 Redis 快速实现排行榜?
  • MATLAB在逐渐被Python淘汰吗
  • Git 使用规范
  • 代码随想录第43天:图论4(最小生成树、拓扑排序)