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

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.lqws.cn/news/210889.html

相关文章:

  • 算法练习-回溯
  • CKA考试知识点分享(2)---ingress
  • 【推荐算法】推荐算法演进史:从协同过滤到深度强化学习
  • 数据结构测试模拟题(4)
  • 【Go语言基础【13】】函数、闭包、方法
  • Ubuntu 下开机自动执行命令的方法
  • C++组合
  • Deepseek基座:Deepseek-v2核心内容解析
  • 线程安全集合
  • redis主从复制
  • 计算机网络第2章(下):物理层传输介质与核心设备全面解析
  • Java高级 | 【实验六】Springboot文件上传和下载
  • 【KiCad】立创封装导入KiCad
  • 高频 PCB 技术发展趋势与应用解析
  • 热电厂中控室无线集控:高清视频监测+PLC远程操控
  • LVDS的几个关键电压概念
  • 迷宫问题(一)(C++版本)
  • MIT 6.S081 Lab 11 networking
  • PicSharp(图片压缩工具) v1.1.6
  • 平面方程在不同坐标系下的变换与平移
  • 按字典序排列最小的等效字符串
  • leetcode 3170. 删除星号以后字典序最小的字符串 中等
  • ios苹果系统,js 滑动屏幕、锚定无效
  • 【HarmonyOS 5】拍摄美化开发实践介绍以及详细案例
  • python 第二章
  • Go 标准库 encoding/gob 快速上手
  • DAY 44 预训练模型
  • 获取 OpenAI API Key
  • 解决MySQL8.4报错ERROR 1524 (HY000): Plugin ‘mysql_native_password‘ is not loaded
  • Strong Baseline: Multi-UAV Tracking via YOLOv12 with BoT-SORT-ReID 2025最新无人机跟踪