Struts2解决表单重复提交的问题

本文介绍了表单重复提交的问题及场景,并详细说明了如何利用Struts2中的s:token标签与tokenSession拦截器来解决这一问题。通过对比token与tokenSession拦截器的不同,帮助开发者选择合适的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一 什么是表单的重复提交 

1 多次点击提交按钮 

2 表单提交后转发到一个页面 刷新这个页面

3  表单提交后转发到一个页面 按浏览器的返回按钮 再提交表单

二  struts2解决表单重复提交

用到一个标签和一个拦截器 

<s:token></s:token> 标签必须在form表单的表体内

需要用到的拦截器 是 token 或者tokenSession 这两个拦截器没有在defaultStack中 所以需要我们重新配置下

在struts.xml中配置<interceptor-ref name="tokenSession"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>

解决的原理是 s:token 标签会自动生成一个隐藏域和在session中放置一个和隐藏域一样的值 提交到action中会根据隐藏域的值和session中的值是否一致 如果一致的话则进行 操作并将session中的值清空 如果不一致则不进行操作

token 和tokenSession的区别

token 需要指定result name ="invalid.token" 

tokenSession 则不需要


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值