struts2实现避免表单重复提交

本文介绍如何使用Struts2框架防止表单重复提交。通过添加<s:token>标签生成唯一标识符,并在配置文件中指定拦截器进行验证。若检测到重复提交,则转向特定页面。

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

一共2步:

首先,在要避免重复提交的表单中,加struts2标签 这句

<s:token></s:token>

 

只要是用来验证是否重复提交的,当加载进页面时,标签会生成一个唯一的隐藏字段,内容如下:

<input type="hidden" name="struts.token" value="FRD7878YJFTR574454HHHKOKJ" />

 
然后配置struts-xxx.xml

eg: 

<package name="XXX" namespace="/xxx" extends="struts-default"> 
   <action name="xxx_add" method="add" 
    class="com.xxx.action.xxxAction"> 
    <interceptor-ref name="defaultStack"/>//这句是默认的拦截器,有时不加会异常 
    <interceptor-ref name="token"/>//这句是防表单提交的token拦截器,用来判断是否重复提交的 
    <result name="invalid.token">/xxx/noback.jsp</result>//这句是如果有表单重复提交,就请求转发到重复提交信息页面 
   </action> 
   <action name="xxx_getById" method="getById" 
    class="com.xxx.action.xxxAction"> 
    <result name="getById">/xxx/xxx_getById.jsp</result> 
   </action> 
</package>

 

说明:struts-xxx.xml配置时,token拦截器,一定要根据需要加入响应的action中,不要全部action都加,我曾经遇到过,把全部action都加了,以为反正不影响什么,但是却出现错误了,在查询的时候,直接请求转发到重复提交信息页面,浪费了我好多时间。所以要根据需求及需要的加,上面我列出了2个action就是为了说明这个道理的,不需要的不加。当然也可以定义成全局的,需要时直接引用,这样的做法很好,在这里就不例举了~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值