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

Spring Boot + Thymeleaf 防重复提交

在 Spring Boot 与 Thymeleaf 结合的 Web 应用中,防止重复提交可以采用token 机制 + 客户端禁用按钮的方式实现,在高并发场景下,考虑使用 Redis 存储 token 而非 Session。

第一步:后端实现

@Controller
public class FormController {@GetMapping("/form")public String showForm(Model model) {// 生成唯一 token 并存入 sessionString token = UUID.randomUUID().toString();model.addAttribute("token", token);return "form";}@PostMapping("/submit")public String handleSubmit(@RequestParam("token") String token, HttpSession session) {// 验证 tokenif (!isValidToken(token, session)) {throw new RuntimeException("重复提交或无效 token");}// 处理表单数据...// 移除已使用的 tokensession.removeAttribute("token");return "success";}private boolean isValidToken(String token, HttpSession session) {// 实现 token 验证逻辑return token != null && token.equals(session.getAttribute("token"));}
}

第二步:前端实现 (Thymeleaf)

<form th:action="@{/submit}" method="post"><!-- 其他表单字段 --><input type="hidden" th:value="${token}" name="token" /><button type="submit">提交</button>
</form>
http://www.xdnf.cn/news/12550.html

相关文章:

  • wpf ListBox 去除item 单击样式
  • Python控制台输出彩色字体指南
  • 如何判断指针是否需要释放?
  • 2024 CKA题库+详尽解析| 15、备份还原Etcd
  • 6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
  • CSS3 的特性
  • 前端开发者常用网站
  • DeepSeek09-open-webui使用
  • 银行卡二三四要素实名接口如何用PHP实现调用?
  • npm安装electron下载太慢,导致报错
  • 华为云Flexus+DeepSeek征文 | 从零到一:用Flexus云服务打造低延迟联网搜索Agent
  • 【杂谈】-DeepSeek-V3:AI开发的成本效益突破与行业启示
  • ARM SMMUv3简介(一)
  • 常用存储器介绍
  • 10.Linux进程信号
  • 第四十六天打卡
  • 简单了解一下Hugging Face(抱抱脸)
  • 信号(瞬时)频率求解与仿真实践(1)
  • Unity版本使用情况统计(更新至2025年5月)
  • 计算机网络基础(一)
  • C语言速成15之告别变量碎片化:C 语言结构体如何让数据管理从混乱走向有序
  • LTE重建到新小区流程介绍
  • 宁乡地-气-碳-水相互作用综合观测数据集
  • 008-C++String
  • 深入浅出:计算机网络体系结构——信息世界的“交通规则”
  • 0.5S 级精度背后:DJSF1352-RN-6 如何让储能电站的每 1kWh 都「有迹可循」?
  • RK3588 火焰烟雾检测
  • 普中STM32F103ZET6开发攻略(六)
  • 第三十章 MDK的编译过程及文件类型
  • C++递归语句完全指南:从原理到实践